Accelerator VK_OEM_PLUS mapping is broken

Posted by Worstje on Sun 22 Apr 2012 10:56 AM — 2 posts, 14,394 views.

Netherlands #0
I was trying to get an ALT+'PlusEquals' working... which is, the key ([=+]) to the left of backspace and to the right of [9(]. [0)] and [-_]. And I failed.

Since I could not figure out what key was doing it, I ended up searching the source and I believe I found a bug alongside the proper mapping name.

StringToKeyCode (Utilities.cpp) splits on the + character to separate different units. However, accelerators.cpp defines the VirtualKeyMapping VirtuakKeys as being: { VK_OEM_PLUS , "+" }

Which means the VK_OEM_PLUS keymapping never gets used. Testing as follows:

print(Accelerator("Alt++", "Pressed plusequals key"))

indeed returns eBadParameter - something that shouldn't happen as + is clearly a defined mapping!

May I suggest that this one is renamed to vk_oem_plus? It is likely easier than rewriting StringToKeyCode to properly support a plus in the mapping name.



Edit: while trying to figure out the proper virtual key code I had reports this key might have different virtual key codes on different keyboards, but I've not been able to test / confirm for myself. Is it possible for you to test if this key works properly after applying a fix?
Amended on Sun 22 Apr 2012 11:04 AM by Worstje
Australia Forum Administrator #1
Worstje said:

May I suggest that this one is renamed to vk_oem_plus?


Changed to "Plus". Commit c386300.

It appears to work for me, but I am using an Mac aluminum keyboard through VMware. But, it works.