International Dvorak keyboard doesn’t trigger hot-keys

dvorakhotkeyskeyboard-layoutlanguageqwerty

I'm using the Engilsh-Dvorak keyboard-layout; My second keyboard language is Hebrew, which has nothing to do with Dvorak but the hot keys (e.g if I'm writing a document in Hebrew and want to make some bold text using Ctrl+b).

The default Hebrew keyboard that comes with Windows (7 and below) has a shift mode which matches each Hebrew character with its matching English QWERTY character ).
Obviously I'd want to use the Dvorak corresponding key rather than the QWERTY one, so I created a Hebrew-Dvorak keyboard with a software called Keyboard Layout Manager (KLM) which creates new keyboard layouts DLLs.

It works just fine for the shift key, however, Ctrl-key triggered hot-keys (e.g Ctrl+l in FF) are being matched to the corresponding QWERTY key.
I've examined the properly working English-Dvorak layout using KLM and in it's "Ctrl+ pressed" view, there isn't any character that's matched to any key but still I tried to encode the Hebrew Ctrl+ pressed keys to work with their matching Dvorak keys, yet it had no effect.

Best Answer

After dealing with this issue for long time, I contacted with Milan Vidaković of KLM. Very kindly he explained me how to solve the problem. Here is his response:

alt text To do so, you need to change the Virtual Key assignment for the key. For example, on the QWERTY keyboard, the 'A' key has the Virtual Key value of VK_A (0x41 hex). This means that if you press Ctrl+A, it will do the proper action (Select All). I use the QWERTZ keyboard and it is not enough to just change the 'Y' key to the 'Z' key and vice versa. I also need to change the Virtual Key assignments for both keys. To see and change Virtual Key, look at the upper right corner of the KLM Keyboard Editor window: alt text

Now, if you for example place the 'A' character on the 'B' key, and then if you press the Ctrl+B, you would expect that it will now select all because you have placed the 'A' character on the 'B' key. This will not happen because the 'B' key has the VirtualKey value of VK_B:

alt text

You need to change the Virtual Key assignment of the 'B' key so the computer thinks that it is the 'A' key. To do so, you need to open the VirtualKey combo box in the KLM and change the virtual key to be the 'A' value:

However, don't forget that the 'A' key also have the VK_A value, so you need to change its Virtual Key value to 'B', or something else. You can let the computer resolve all the virtual key assignment duplicates by clicking on the Resolve VKs button.

Since the regular demo version of klm doesn' let you change the Virtual Key, I have placed the modified demo version here (both 32-bit and 64-bit executables):

http://www.klm32.com/KLM32/demo/demo.html

Best regards,

Milan Vidaković

Related Question