'IntelliJ 14 keyboard shortcuts are QWERTY though keyboard is DVORAK

I'm

  • running IntelliJ 14
  • using Mac OS X layout
  • running on OS X (Yosemite)

IntelliJ is using DVORAK in general but not for keyboard shortcuts. keyboard shortcuts are in QWERTY. As if they were scancode based instead of the key value after mapping.

Ideas?

edit 1 @gabriel hard to tell but here are some examples... note: m, a and 0-9 are same on DVORAK and QWERTY

cmd+/     'comment line' flashes code menu and sometimes moves to a brace (/ == {)
cmd+b      works, goes to definition  (b == n)
cmd+opt+l 'reformat' flashes code menu  (l == p)


Solution 1:[1]

It turns out this is a problem in Java that has existed for some years, and is still present in Java 9. See the bug report here: https://bugs.openjdk.java.net/browse/JDK-8022079

JetBrains has been aware of the problem for some years, but is waiting for Oracle to fix it. See these JetBrains bug reports: https://youtrack.jetbrains.com/issue/IDEABKL-6493 and https://youtrack.jetbrains.com/issue/IDEA-63779

In those reports you'll find a work-around using a free tool called Karabiner. I have just verified that it works for IntelliJ. It will probably also work for other Java-based tools.

For OSX earlier than Sierra The work-around is:

  • Download and install Karabiner from https://pqrs.org/osx/karabiner/
  • In the OSX System Preferences, set your keyboard to the default "U.S. International" PC. If you don't often type diacritics and other international characters, it's easier to just set the keyboard to "U.S" instead.
  • In the Karabiner settings, type "dvorak" in the search box, then scroll down to the section For U.S. Input Source and check Use Dvorak Keyboard Layout (QWERTY to Dvorak)

From macOS Sierra onwards, as reported by user MithrilTuxedo in the comments, the procedure is different. You have to use Karabiner Elements (the new Karabiner core) with a configuration file. I have outlined the procedure at https://cpbotha.net/2016/12/16/dvorak-remapping-with-karabiner-elements-on-macos-sierra-works/ and summarise it here briefly:

  • Download and install Karabiner Elements.
  • Copy qwerty_to_dvorak.json from the examples and install it as the new karabiner.json configuration file.
  • If Karabiner Elements is running, it'll pick up the new file.

This bug will affect most Java-based tools such as those by JetBrains (IntelliJ, PyCharm, WebStorm, AppCode) and probably also Netbeans. The work-around summarised above should alleviate the problem in all cases.

Solution 2:[2]

I've had a similar problem using key combinations like ctrl+n in intellij 16 on linux (red hat). I use Colemak keyboard. I had two input sources setup in my operating system, system preferences .

  1. English(US)

  2. English(Colemak)

When I changed the order of the Input Sources, and put Colemak first, the problem seemed to go away.

System Tools > Settings > Keyboard > Input Sources

Solution 3:[3]

JetBrains are waiting for the bug to be fixed upstream in JDK, which of course will never happen. The other answer here is informative, but will only work on Mac OS, so if you're on linux or windows you're out of luck there.

I wrote a script to work around the issue, which you can find here. If you normally use GNOME keymap in pycharm on linux, then you're in luck - you can simply import my dvorak_settings.jar file and get back to coding.

Otherwise you can use the script to generate your own bugfixed keymap, read on...

The original keymap files are located in <pycharm>/lib/resources.jar/idea/Keymap_*.xml.

Example usage:

./to_dvorak Keymap_Emacs.xml -o Keymap_Emacs_Dvorak.xml

Have a browse over the generated file and if it looks sane, pack it up into the .jar file (see my dvorak_settings.jar example for the required structure) and import this in your IDE.

Solution 4:[4]

This problem is (finally!) fixed in IntelliJ IDEA 2017.1. See JetBrains issue JRE-172, “Wrong keys are picked up on dvorak layout in Mac OSX 10.6.2”.

It also seems to be fixed in other JetBrains tools. I tested that it's fixed in PyCharm 2017.1, CLion 2017.1, and AppCode 2017.1.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Lime
Solution 2 Mz A
Solution 3 Community
Solution 4 rob mayoff