I was wondering if it were possible to tie in a different input method for each keyboard on a computer with multiple keyboards?

The reason I ask is I use a wireless keyboard with my macbook pro and thus have two keyboards available, and I use both English and Chinese for input.

One hassle I have switching between the input methods, even with an assigned hotkey.

Since I have two keyboards, wouldn't it be nice to have one keyboards input for one of the input methods and the second keyboard for the second input.

Is there a way to do this so I can change input methods by typing on a different keyboard?


  • See this earlier question: apple.stackexchange.com/questions/200332/… Commented Mar 26, 2017 at 15:03
  • Hi Tom, thanks. That's interesting and can get me a little closer to what I want to achieve, but does not exactly do what I'd like to do, i.e. have a different defined input method for each individual keyboard, without using hotkeys to enable the input. See my partial answer below using this method.
    – pdwalker
    Commented Mar 27, 2017 at 16:44

2 Answers 2


Based on Tom Gewecke's input, I've done the following:

Installed Karabiner from: https://pqrs.org/osx/karabiner/index.html.en
(note that Karabiner 10.22.0 does not work with macOS 10.12.x at the time of this reply)

Installed this mapping into private.xml from: https://gist.github.com/ylorn/43b589daf6d621a7fc47 (I've changed it to left shift key and control space to match my preferred international input keybindings)

This approach does not allow me to set default language inputs per keyboard, but does allow me to more quickly switch between them. An acceptable compromise until I can find something better.

After asking Karabiner to reload the xml files, I can now tap the left shift key to switch inputs quickly.


In macOS 10.12, you can achieve the same functionality with the caps log key, without Karabiner, by enabling the "Use the Caps Lock key to switch to and from US"

  • and Tom has already thought of something similar using the default system software keyboard preferences: apple.stackexchange.com/questions/251666/…
    – pdwalker
    Commented Mar 27, 2017 at 17:04
  • I thought there was a way to specify a device (keyboard) so that settings would only apply to it automatically, without the need for any keypress, per pqrs.org/osx/karabiner/xml.html.en#devicedef Commented Mar 27, 2017 at 17:14
  • yes, you can do that if only want keyboard remappings, e.g. internal qwerty keyboard remapped to dvorak, external keyboard remains qwerty, but I see no way to actually change the input methods for different keyboards. The input methods don't involve a remapping for CJKV input, but an entirely different input system altogether. Am I missing something?
    – pdwalker
    Commented Mar 29, 2017 at 6:40
  • if karabiner allowed conditional checks, e.g. if device is internal, change input method to language1, but that might be an ugly hack since it would check for every keystroke. ugh.
    – pdwalker
    Commented Mar 29, 2017 at 7:00
  • You are right, I had forgotten that this case involved a new IM, not just a remapping. Commented Mar 29, 2017 at 13:15

This app should work to solve this problem.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .