poveden / EliteChroma

A tool to make Razer Chroma devices react to Elite:Dangerous in-game events
MIT License
43 stars 15 forks source link

Implement foreign keyboard's #58

Closed Andechs75 closed 4 years ago

Andechs75 commented 4 years ago

Summary

Some Keys are not working / missaligned. Cause they are all the "special" Keys of my Keyboard (German QWERTZ), I think it's the issue here.

Desired solution

Implement foreign keyboard layouts. (e.G. German)

Additional Context

Thanks for your efford. You have done a great work here!

poveden commented 4 years ago

@Andechs75 I'll need some help from you, as I cannot accurately resolve the issue. It boils down to this:

Can you please tell me, when you are in the "Controls" configuration screen, if Elite always shows the "expected" key or another one? Concretely, if you assign the "Z" key to a binding, will Elite show a "Z" (as expected) or will it show a "Y" (as if it were in US layout)?

Thanks in advance for your help.

Andechs75 commented 4 years ago

Some Tests:

The problem shows here:

It is not the classical wrong keyboard problem, cause the qwertz to qwerty problem is not present. But the illumination of the other "special" keys is not working. My Elite is not translating german keyboard to us-layout. It is showing the keys like i press them. So if i use "Key_Minus" Razor lights up the "US_Key_Minus" which is the "ß" key on my layout. If i use "Key_Acute", well there is no US_Key_Acute.

my binding: [?xml version="1.0" encoding="UTF-8" ?] [Root PresetName="warthog" MajorVersion="3" MinorVersion="0"] [KeyboardLayout]de-DE[/KeyboardLayout] ... ToggleFlightAssist Primary Device="{NoDevice}" Key="" Secondary Device="Keyboard" Key="Key_Y" ToggleOn Value="1" /ToggleFlightAssist ... DisableRotationCorrectToggle Primary Device="Keyboard" Key="Key_Hash" Secondary Device="{NoDevice}" Key="" ToggleOn Value="1" /DisableRotationCorrectToggle ... OrbitLinesToggle Primary Device="Keyboard" Key="Key_Acute" Secondary Device="{NoDevice}" Key="" /OrbitLinesToggle ... PlayerHUDModeToggle> Primary Device="Keyboard" Key="Key_Minus" Secondary Device="{NoDevice}" Key="" /PlayerHUDModeToggle

Andechs75 commented 4 years ago

If i understand that "RazerSDK resource.h thing" u have to translate the Binding "Key_Minus" to the RZKEY enumeration. "Key_Minus" is RZKEY_OEM_2 in US-layout , if RZKEY_OEM_2 lights up the "ß" in GER-layout we actually found the problem. Using the warthog event tester which uses US-Keyboard i got >"-" --> "-" and "ß"--> "[" and "ACUTE" --> "]" So "-" should be RZKEY_OEM_2 So "ß" should be RZKEY_OEM_4 So "ACUTE" should be RZKEY_OEM_5 ... strange ...

Andechs75 commented 4 years ago

I found some info's about the virtualkeys and the german layout... http://kbdlayout.info/KBDGR/virtualkeys https://assets.razerzone.com/dev_portal/docs/namespace_chroma_s_d_k_1_1_keyboard.html#ad15083ee44e4c38e538f47d0e567d585 https://docs.microsoft.com/de-de/windows/win32/inputdev/virtual-key-codes

"-" --> VK_OEM_MINUS --> RZKEY_OEM_2 "ß" --> VK_OEM_4 --> RZKEY_OEM_4 "´" --> VK_OEM_6 --> RZKEY_OEM_5 "<" --> VK_OEM_102 --> RZKEY_EUR_2

Andechs75 commented 4 years ago

maybe this is helpful...

Key_ENG VK[hex] VK_NAME Key_GER RZKEY
ENTER D VK_RETURN ENTER RZKEY_ENTER
ESCAPE 1B VK_ESCAPE ESCAPE RZKEY_ESC
BACKSPACE 8 VK_BACK BACKSPACE RZKEY_BACKSPACE
TAP 9 VK_TAB TAP RZKEY_TAB
SPACE 20 VK_SPACE SPACE RZKEY_SPACE
[ DB VK_OEM_4 ß RZKEY_OEM_4
] DD VK_OEM_6 ACUTE RZKEY_OEM_5
; BA VK_OEM_1 ü RZKEY_OEM_7
PLUS BB VK_OEM_PLUS PLUS RZKEY_OEM_3
/ BF VK_OEM_2 # RZKEY_OEM_11
EUROPE1 BF VK_OEM_2 # RZKEY_EUR_1
~ C0 VK_OEM_3 ö RZKEY_OEM_1
' DE VK_OEM_7 ä RZKEY_OEM_8
\ DC VK_OEM_5 ^ RZKEY_OEM_6
, BC VK_OEM_COMMA , RZKEY_OEM_9
. BE VK_OEM_PERIOD . RZKEY_OEM_10
MINUS BD VK_OEM_MINUS MINUS RZKEY_OEM_2
CAPS_LOCK 14 VK_CAPITAL CAPS_LOCK RZKEY_CAPSLOCK
EUROPE2 E2 VK_OEM_102 < RZKEY_EUR_2
poveden commented 4 years ago

Your feedback has been really helpful, specially the keyboard layouts link. Thanks!!!

I've been spending the last two days trying to make some sense out of this topic, and I've discovered something very important: Elite Dangerous ONLY uses the current region set up in Windows to do the keyboard mappings, and ignores whatever keyboard layout you set up.

The hint that pointed me in the right direction was the Key_Hash and Key_Acute bindings, which are missing from the Elite documentation. So I've started looking around and I've found a more complete list of bindings in the VoiceAttack's bindED plugin.

I'll add support to these new bindings (and probably fix a couple other) during the following days. I'll let you know when it's done.

Thanks again for your help!

Andechs75 commented 4 years ago

Even more strange: If you use a *.binds with any language like [KeyboardLayout]en-AU[/KeyboardLayout] and you modify it in Elite it will be completely transfered to your local language. So be aware of it when using other peoples layout ;o)

If you have a beta i can check it for u.

poveden commented 4 years ago

Yes, I'm aware. I noted that myself during my tests. Thanks.

The bad thing is that the KeyboardLayout attribute is not always accurate in regards to what Elite does with it. The attribute will always match Windows' region setting, but seems to internally fall back to english on some cases (as in Spain, which will record english keystrokes).

I'm preparing a small tool that will hopefully help in assuring that the correct key is always highlighted as expected. If it's OK with you, I'll ask you to run it to confirm that my work is done correctly.

poveden commented 4 years ago

(Edit: Link updated)

@Andechs75 please download this file: Sandbox.zip

Unzip it on a folder of your choosing, run the Sandbox.exe file within, and follow the instructions on the screen. Hopefully the instructions are clear enough.

After you're done, take the results file produced by the program (something like VKMap_de-DE_0407-0407-00000407.txt) and attach it to this issue in a new comment.

Also, if you notice anything different, also note it.

I already have a pretty clear picture of what I'll do, but I need to confirm the way that the Razer keyboard driver works, so the results file will help me a lot.

Thanks!

Andechs75 commented 4 years ago

I’ve tried the Sandbox, and here is the result. Additionally I send you my sheet, I’m uising.

Well. Sometimes it doesn‘t light up the Key’s I have pressed..

If I press “^” it lights up ”<”.

The “^”-Key is VK_OEM_5 and should be “Key_BackSlash/Key_Circumflex” in Elite and in the SDK it’s “RZKEY_OEM_6”.

The “<”-Key is VK_OEM_102 and should be “Key_OEM_102/Key_LessThan” in Elite and in the SDK it’s “RZKEY_EUR_2”.

If I take a look in the txt-File:

Pressed <VK_OEM_5, Key_BackSlash, RZKEY_EUR_2

Pressed , nothing, nothing

If I press “-” it lights up ”ß”.

The “-”-Key is VK_OEM_MINUS and should be “Key_Minus” in Elite and in the SDK it’s “RZKEY_OEM_2”.

The “ß”-Key is VK_OEM_4 and should be “Key_LeftBracket/Key_ß” in Elite and in the SDK it’s “RZKEY_OEM_4”.

If I take a look in the txt-File:

Pressed <VK_OEM_Minus, Key_Minus, RZKEY_OEM_2

Pressed , Key_LeftBracket, RZKEY_OEM_4

If I press “ß” it lights up ”ü”.

The “ß”-Key is VK_OEM_4 and should be “Key_LeftBracket/Key_ß” in Elite and in the SDK it’s “RZKEY_OEM_4”.

The “ü”-Key is VK_OEM_1 and should be “Key_SemiColon/Key_ü” in Elite and in the SDK it’s “RZKEY_OEM_7”.

If I take a look in the txt-File:

Pressed , Key_LeftBracket, RZKEY_OEM_4

Pressed , Key_SemiColon, RZKEY_OEM_7

I hope it’s what u expected to see

Bye, Volker

Von: Jorge Poveda notifications@github.com Gesendet: Sonntag, 30. August 2020 00:25 An: poveden/EliteChroma EliteChroma@noreply.github.com Cc: Andechs75 vofi@vofi-home.de; Mention mention@noreply.github.com Betreff: Re: [poveden/EliteChroma] Implement foreign keyboard's (#58)

@Andechs75 https://github.com/Andechs75 please download this file: Sandbox.zip https://github.com/poveden/EliteChroma/files/5146041/Sandbox.zip

Unzip it on a folder of your choosing, run the Sandbox.exe file within, and follow the instructions on the screen. Hopefully the instructions are clear enough.

After you're done, take the results file produced by the program (something like VKMap_de-DE_0407-0407-00000407.txt) and attach it to this issue in a new comment.

I already have a pretty clear picture of what I'll do, but I need to confirm the way that the Razer keyboard driver works, so the results file will help me a lot.

Thanks!

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/poveden/EliteChroma/issues/58#issuecomment-683348297 , or unsubscribe https://github.com/notifications/unsubscribe-auth/AQPIHWXGWTAN2LR4GYB3WQDSDF525ANCNFSM4QH7T67Q . https://github.com/notifications/beacon/AQPIHWR5GWXJTVNKDLJNPVDSDF525A5CNFSM4QH7T672YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOFC5RCSI.gif

VK VirtualKey ScanCode CharHex Char EliteKey RZKEY 01 VK_LBUTTON
02 VK_RBUTTON
03 VK_CANCEL 46 03
04 VK_MBUTTON
05 VK_XBUTTON1
06 VK_XBUTTON2
07
08 VK_BACK 0E 08 Key_Backspace RZKEY_BACKSPACE 09 VK_TAB 0F 09 Key_Tab RZKEY_TAB 0A
0B
0C VK_CLEAR 4C Key_Clear RZKEY_INVALID 0D VK_RETURN 1C 0D Key_Enter RZKEY_ENTER 0E
0F
10 VK_SHIFT 2A
11 VK_CONTROL 1D
12 VK_MENU 38
13 VK_PAUSE Key_Pause RZKEY_PAUSE 14 VK_CAPITAL 3A Key_CapsLock RZKEY_CAPSLOCK 15 VK_HANGUL Key_Kana RZKEY_INVALID 16 VK_IME_ON
17 VK_JUNJA
18 VK_FINAL
19 VK_HANJA Key_Kanji RZKEY_INVALID 1A VK_IME_OFF
1B VK_ESCAPE 01 1B Key_Escape RZKEY_ESC 1C VK_CONVERT Key_Convert RZKEY_INVALID 1D VK_NONCONVERT Key_NoConvert RZKEY_INVALID 1E VK_ACCEPT
1F VK_MODECHANGE
20 VK_SPACE 39 20 Key_Space RZKEY_SPACE 21 VK_PRIOR 49 Key_PageUp RZKEY_PAGEUP 22 VK_NEXT 51 Key_PageDown RZKEY_PAGEDOWN 23 VK_END 4F Key_End RZKEY_END 24 VK_HOME 47 Key_Home RZKEY_HOME 25 VK_LEFT 4B Key_LeftArrow RZKEY_LEFT 26 VK_UP 48 Key_UpArrow RZKEY_UP 27 VK_RIGHT 4D Key_RightArrow RZKEY_RIGHT 28 VK_DOWN 50 Key_DownArrow RZKEY_DOWN 29 VK_SELECT
2A VK_PRINT
2B VK_EXECUTE
2C VK_SNAPSHOT 54 Key_SYSRQ RZKEY_PRINTSCREEN 2D VK_INSERT 52 Key_Insert RZKEY_INSERT 2E VK_DELETE 53 Key_Delete RZKEY_DELETE 2F VK_HELP 63 Key_Help RZKEY_INVALID 30 '0' 0B 30 0 Key_0 RZKEY_0 31 '1' 02 31 1 Key_1 RZKEY_1 32 '2' 03 32 2 Key_2 RZKEY_2 33 '3' 04 33 3 Key_3 RZKEY_3 34 '4' 05 34 4 Key_4 RZKEY_4 35 '5' 06 35 5 Key_5 RZKEY_5 36 '6' 07 36 6 Key_6 RZKEY_6 37 '7' 08 37 7 Key_7 RZKEY_7 38 '8' 09 38 8 Key_8 RZKEY_8 39 '9' 0A 39 9 Key_9 RZKEY_9 3A
3B
3C
3D
3E
3F
40
41 'A' 1E 41 A Key_A RZKEY_A 42 'B' 30 42 B Key_B RZKEY_B 43 'C' 2E 43 C Key_C RZKEY_C 44 'D' 20 44 D Key_D RZKEY_D 45 'E' 12 45 E Key_E RZKEY_E 46 'F' 21 46 F Key_F RZKEY_F 47 'G' 22 47 G Key_G RZKEY_G 48 'H' 23 48 H Key_H RZKEY_H 49 'I' 17 49 I Key_I RZKEY_I 4A 'J' 24 4A J Key_J RZKEY_J 4B 'K' 25 4B K Key_K RZKEY_K 4C 'L' 26 4C L Key_L RZKEY_L 4D 'M' 32 4D M Key_M RZKEY_M 4E 'N' 31 4E N Key_N RZKEY_N 4F 'O' 18 4F O Key_O RZKEY_O 50 'P' 19 50 P Key_P RZKEY_P 51 'Q' 10 51 Q Key_Q RZKEY_Q 52 'R' 13 52 R Key_R RZKEY_R 53 'S' 1F 53 S Key_S RZKEY_S 54 'T' 14 54 T Key_T RZKEY_T 55 'U' 16 55 U Key_U RZKEY_U 56 'V' 2F 56 V Key_V RZKEY_V 57 'W' 11 57 W Key_W RZKEY_W 58 'X' 2D 58 X Key_X RZKEY_X 59 'Y' 2C 59 Y Key_Y RZKEY_Y 5A 'Z' 15 5A Z Key_Z RZKEY_Z 5B VK_LWIN 5B Key_LeftWin RZKEY_LWIN 5C VK_RWIN 5C Key_RightWin RZKEY_INVALID 5D VK_APPS 5D Key_Apps RZKEY_RMENU 5E
5F VK_SLEEP 5F Key_Sleep RZKEY_INVALID 60 VK_NUMPAD0 52 30 0 Key_Numpad_0 RZKEY_NUMPAD0 61 VK_NUMPAD1 4F 31 1 Key_Numpad_1 RZKEY_NUMPAD1 62 VK_NUMPAD2 50 32 2 Key_Numpad_2 RZKEY_NUMPAD2 63 VK_NUMPAD3 51 33 3 Key_Numpad_3 RZKEY_NUMPAD3 64 VK_NUMPAD4 4B 34 4 Key_Numpad_4 RZKEY_NUMPAD4 65 VK_NUMPAD5 4C 35 5 Key_Numpad_5 RZKEY_NUMPAD5 66 VK_NUMPAD6 4D 36 6 Key_Numpad_6 RZKEY_NUMPAD6 67 VK_NUMPAD7 47 37 7 Key_Numpad_7 RZKEY_NUMPAD7 68 VK_NUMPAD8 48 38 8 Key_Numpad_8 RZKEY_NUMPAD8 69 VK_NUMPAD9 49 39 9 Key_Numpad_9 RZKEY_NUMPAD9 6A VK_MULTIPLY 37 2A * Key_Numpad_Multiply RZKEY_NUMPAD_MULTIPLY 6B VK_ADD 4E 2B + Key_Numpad_Add RZKEY_NUMPAD_ADD 6C VK_SEPARATOR
6D VK_SUBTRACT 4A 2D - Key_Numpad_Subtract RZKEY_NUMPAD_SUBTRACT 6E VK_DECIMAL 53 2C , Key_Numpad_Decimal RZKEY_NUMPAD_DECIMAL 6F VK_DIVIDE 35 2F / Key_Numpad_Divide RZKEY_NUMPAD_DIVIDE 70 VK_F1 3B Key_F1 RZKEY_F1 71 VK_F2 3C Key_F2 RZKEY_F2 72 VK_F3 3D Key_F3 RZKEY_F3 73 VK_F4 3E Key_F4 RZKEY_F4 74 VK_F5 3F Key_F5 RZKEY_F5 75 VK_F6 40 Key_F6 RZKEY_F6 76 VK_F7 41 Key_F7 RZKEY_F7 77 VK_F8 42 Key_F8 RZKEY_F8 78 VK_F9 43 Key_F9 RZKEY_F9 79 VK_F10 44 Key_F10 RZKEY_F10 7A VK_F11 57 Key_F11 RZKEY_F11 7B VK_F12 58 Key_F12 RZKEY_F12 7C VK_F13 64 Key_F13 RZKEY_INVALID 7D VK_F14 65 Key_F14 RZKEY_INVALID 7E VK_F15 66 Key_F15 RZKEY_INVALID 7F VK_F16 67 Key_F16 RZKEY_INVALID 80 VK_F17 68 Key_F17 RZKEY_INVALID 81 VK_F18 69 Key_F18 RZKEY_INVALID 82 VK_F19 6A Key_F19 RZKEY_INVALID 83 VK_F20 6B Key_F20 RZKEY_INVALID 84 VK_F21 6C
85 VK_F22 6D
86 VK_F23 6E
87 VK_F24 76
88
89
8A
8B
8C
8D
8E
8F
90 VK_NUMLOCK 45 Key_NumLock RZKEY_NUMLOCK 91 VK_SCROLL 46 Key_ScrollLock RZKEY_SCROLL 92 VK_OEM_FJ_JISHO
93 VK_OEM_FJ_MASSHOU
94 VK_OEM_FJ_TOUROKU
95 VK_OEM_FJ_LOYA
96 VK_OEM_FJ_ROYA
97
98
99
9A
9B
9C
9D
9E
9F
A0 VK_LSHIFT 2A Key_LeftShift RZKEY_LSHIFT A1 VK_RSHIFT 36 Key_RightShift RZKEY_RSHIFT A2 VK_LCONTROL 1D Key_LeftControl RZKEY_LCTRL A3 VK_RCONTROL 1D Key_RightControl RZKEY_RCTRL A4 VK_LMENU 38 Key_LeftAlt RZKEY_LALT A5 VK_RMENU 38 Key_RightAlt RZKEY_RALT A6 VK_BROWSER_BACK 6A Key_WebBack RZKEY_INVALID A7 VK_BROWSER_FORWARD 69 Key_WebForward RZKEY_INVALID A8 VK_BROWSER_REFRESH 67 Key_WebRefresh RZKEY_INVALID A9 VK_BROWSER_STOP 68 Key_WebStop RZKEY_INVALID AA VK_BROWSER_SEARCH 65 Key_WebSearch RZKEY_INVALID AB VK_BROWSER_FAVORITES 66 Key_WebFavourites RZKEY_INVALID AC VK_BROWSER_HOME 32 Key_WebHome RZKEY_INVALID AD VK_VOLUME_MUTE 20 Key_Mute RZKEY_INVALID AE VK_VOLUME_DOWN 2E Key_VolumeDown RZKEY_INVALID AF VK_VOLUME_UP 30 Key_VolumeUp RZKEY_INVALID B0 VK_MEDIA_NEXT_TRACK 19 Key_NextTrack RZKEY_INVALID B1 VK_MEDIA_PREV_TRACK 10 Key_PrevTrack RZKEY_INVALID B2 VK_MEDIA_STOP 24 Key_Stop RZKEY_INVALID B3 VK_MEDIA_PLAY_PAUSE 22 Key_PlayPause RZKEY_INVALID B4 VK_LAUNCH_MAIL 6C Key_Mail RZKEY_INVALID B5 VK_LAUNCH_MEDIA_SELECT 6D Key_MediaSelect RZKEY_INVALID B6 VK_LAUNCH_APP1 6B
B7 VK_LAUNCH_APP2 21
B8
B9
BA VK_OEM_1 1A FC ü Key_SemiColon RZKEY_OEM_7 BB VK_OEM_PLUS 1B 2B + Key_Equals RZKEY_OEM_3 BC VK_OEM_COMMA 33 2C , Key_Comma RZKEY_OEM_9 BD VK_OEM_MINUS 35 2D - Key_Minus RZKEY_OEM_2 BE VK_OEM_PERIOD 34 2E . Key_Period RZKEY_OEM_10 BF VK_OEM_2 2B 23 # Key_Slash RZKEY_OEM_11 C0 VK_OEM_3 27 F6 ö Key_Apostrophe RZKEY_OEM_8 C1 VK_ABNT_C1 73 Key_ABNT_C1 RZKEY_INVALID C2 VK_ABNT_C2 7E Key_ABNT_C2 RZKEY_INVALID C3
C4
C5
C6
C7
C8
C9
CA
CB
CC
CD
CE
CF
D0
D1
D2
D3
D4
D5
D6
D7
D8
D9
DA
DB VK_OEM_4 0C DF ß Key_LeftBracket RZKEY_OEM_4 DC VK_OEM_5 29 5E ^ Key_BackSlash RZKEY_EUR_2 DD VK_OEM_6 0D B4 ´ Key_RightBracket RZKEY_OEM_5 DE VK_OEM_7 28 E4 ä Key_Hash RZKEY_KOR_2 DF VK_OEM_8 Key_Grave RZKEY_OEM_1 E0
E1 VK_OEM_AX Key_AX RZKEY_INVALID E2 VK_OEM_102 56 3C <
E3 VK_ICO_HELP
E4 VK_ICO_00
E5 VK_PROCESSKEY
E6 VK_ICO_CLEAR
E7 VK_PACKET
E8
E9 VK_OEM_RESET 71
EA VK_OEM_JUMP 5C
EB VK_OEM_PA1 7B
EC VK_OEM_PA2
ED VK_OEM_PA3 6F
EE VK_OEM_WSCTRL 5A
EF VK_OEM_CUSEL
F0 VK_OEM_ATTN
F1 VK_OEM_FINISH 5B
F2 VK_OEM_COPY
F3 VK_OEM_AUTO 5F
F4 VK_OEM_ENLW
F5 VK_OEM_BACKTAB 5E
F6 VK_ATTN
F7 VK_CRSEL
F8 VK_EXSEL
F9 VK_EREOF 5D
FA VK_PLAY
FB VK_ZOOM 62
FC VK_NONAME
FD VK_PA1
FE VK_OEM_CLEAR
FF 5E ^

VK VirtualKey ScanCode CharHex Char EliteKey RZKEY 1B VK_ESCAPE 01 1B Key_Escape RZKEY_ESC 70 VK_F1 3B Key_F1 RZKEY_F1 71 VK_F2 3C Key_F2 RZKEY_F2 72 VK_F3 3D Key_F3 RZKEY_F3 73 VK_F4 3E Key_F4 RZKEY_F4 74 VK_F5 3F Key_F5 RZKEY_F5 75 VK_F6 40 Key_F6 RZKEY_F6 76 VK_F7 41 Key_F7 RZKEY_F7 77 VK_F8 42 Key_F8 RZKEY_F8 78 VK_F9 43 Key_F9 RZKEY_F9 79 VK_F10 44 Key_F10 RZKEY_F10 7A VK_F11 57 Key_F11 RZKEY_F11 7A VK_F11 57 Key_F11 RZKEY_F11 7B VK_F12 58 Key_F12 RZKEY_F12 08 VK_BACK 0E 08 Key_Backspace RZKEY_BACKSPACE DC VK_OEM_5 29 5E ^ Key_BackSlash RZKEY_EUR_2 31 '1' 02 31 1 Key_1 RZKEY_1 32 '2' 03 32 2 Key_2 RZKEY_2 33 '3' 04 33 3 Key_3 RZKEY_3 34 '4' 05 34 4 Key_4 RZKEY_4 35 '5' 06 35 5 Key_5 RZKEY_5 36 '6' 07 36 6 Key_6 RZKEY_6 37 '7' 08 37 7 Key_7 RZKEY_7 38 '8' 09 38 8 Key_8 RZKEY_8 39 '9' 0A 39 9 Key_9 RZKEY_9 30 '0' 0B 30 0 Key_0 RZKEY_0 DB VK_OEM_4 0C DF ß Key_LeftBracket RZKEY_OEM_4 DD VK_OEM_6 0D B4 ´ Key_RightBracket RZKEY_OEM_5 08 VK_BACK 0E 08 Key_Backspace RZKEY_BACKSPACE 09 VK_TAB 0F 09 Key_Tab RZKEY_TAB 51 'Q' 10 51 Q Key_Q RZKEY_Q 57 'W' 11 57 W Key_W RZKEY_W 45 'E' 12 45 E Key_E RZKEY_E 52 'R' 13 52 R Key_R RZKEY_R 54 'T' 14 54 T Key_T RZKEY_T 5A 'Z' 15 5A Z Key_Z RZKEY_Z 55 'U' 16 55 U Key_U RZKEY_U 49 'I' 17 49 I Key_I RZKEY_I 4F 'O' 18 4F O Key_O RZKEY_O 50 'P' 19 50 P Key_P RZKEY_P BA VK_OEM_1 1A FC ü Key_SemiColon RZKEY_OEM_7 BB VK_OEM_PLUS 1B 2B + Key_Equals RZKEY_OEM_3 0D VK_RETURN 1C 0D Key_Enter RZKEY_ENTER 14 VK_CAPITAL 3A Key_CapsLock RZKEY_CAPSLOCK 41 'A' 1E 41 A Key_A RZKEY_A 53 'S' 1F 53 S Key_S RZKEY_S 44 'D' 20 44 D Key_D RZKEY_D 46 'F' 21 46 F Key_F RZKEY_F 47 'G' 22 47 G Key_G RZKEY_G 48 'H' 23 48 H Key_H RZKEY_H 4A 'J' 24 4A J Key_J RZKEY_J 4B 'K' 25 4B K Key_K RZKEY_K 4C 'L' 26 4C L Key_L RZKEY_L C0 VK_OEM_3 27 F6 ö Key_Apostrophe RZKEY_OEM_8 DE VK_OEM_7 28 E4 ä Key_Hash RZKEY_KOR_2 BF VK_OEM_2 2B 23 # Key_Slash RZKEY_OEM_11 10 VK_SHIFT 2A
A0 VK_LSHIFT 2A Key_LeftShift RZKEY_LSHIFT E2 VK_OEM_102 56 3C <
59 'Y' 2C 59 Y Key_Y RZKEY_Y 58 'X' 2D 58 X Key_X RZKEY_X 43 'C' 2E 43 C Key_C RZKEY_C 56 'V' 2F 56 V Key_V RZKEY_V 42 'B' 30 42 B Key_B RZKEY_B 4E 'N' 31 4E N Key_N RZKEY_N 4D 'M' 32 4D M Key_M RZKEY_M BC VK_OEM_COMMA 33 2C , Key_Comma RZKEY_OEM_9 BE VK_OEM_PERIOD 34 2E . Key_Period RZKEY_OEM_10 BD VK_OEM_MINUS 35 2D - Key_Minus RZKEY_OEM_2 10 VK_SHIFT 2A
A1 VK_RSHIFT 36 Key_RightShift RZKEY_RSHIFT 14 VK_CAPITAL 3A Key_CapsLock RZKEY_CAPSLOCK 11 VK_CONTROL 1D
A2 VK_LCONTROL 1D Key_LeftControl RZKEY_LCTRL 5B VK_LWIN 5B Key_LeftWin RZKEY_LWIN 12 VK_MENU 38
A4 VK_LMENU 38 Key_LeftAlt RZKEY_LALT 20 VK_SPACE 39 20 Key_Space RZKEY_SPACE 11 VK_CONTROL 1D
12 VK_MENU 38
A2 VK_LCONTROL 1D Key_LeftControl RZKEY_LCTRL A5 VK_RMENU 38 Key_RightAlt RZKEY_RALT 5D VK_APPS 5D Key_Apps RZKEY_RMENU 11 VK_CONTROL 1D
A3 VK_RCONTROL 1D Key_RightControl RZKEY_RCTRL 27 VK_RIGHT 4D Key_RightArrow RZKEY_RIGHT 28 VK_DOWN 50 Key_DownArrow RZKEY_DOWN 25 VK_LEFT 4B Key_LeftArrow RZKEY_LEFT 26 VK_UP 48 Key_UpArrow RZKEY_UP 2E VK_DELETE 53 Key_Delete RZKEY_DELETE 23 VK_END 4F Key_End RZKEY_END 22 VK_NEXT 51 Key_PageDown RZKEY_PAGEDOWN 2D VK_INSERT 52 Key_Insert RZKEY_INSERT 24 VK_HOME 47 Key_Home RZKEY_HOME 21 VK_PRIOR 49 Key_PageUp RZKEY_PAGEUP 2C VK_SNAPSHOT 54 Key_SYSRQ RZKEY_PRINTSCREEN 91 VK_SCROLL 46 Key_ScrollLock RZKEY_SCROLL 13 VK_PAUSE Key_Pause RZKEY_PAUSE 60 VK_NUMPAD0 52 30 0 Key_Numpad_0 RZKEY_NUMPAD0 61 VK_NUMPAD1 4F 31 1 Key_Numpad_1 RZKEY_NUMPAD1 62 VK_NUMPAD2 50 32 2 Key_Numpad_2 RZKEY_NUMPAD2 63 VK_NUMPAD3 51 33 3 Key_Numpad_3 RZKEY_NUMPAD3 64 VK_NUMPAD4 4B 34 4 Key_Numpad_4 RZKEY_NUMPAD4 65 VK_NUMPAD5 4C 35 5 Key_Numpad_5 RZKEY_NUMPAD5 66 VK_NUMPAD6 4D 36 6 Key_Numpad_6 RZKEY_NUMPAD6 67 VK_NUMPAD7 47 37 7 Key_Numpad_7 RZKEY_NUMPAD7 68 VK_NUMPAD8 48 38 8 Key_Numpad_8 RZKEY_NUMPAD8 69 VK_NUMPAD9 49 39 9 Key_Numpad_9 RZKEY_NUMPAD9 6E VK_DECIMAL 53 2C , Key_Numpad_Decimal RZKEY_NUMPAD_DECIMAL 0D VK_RETURN 1C 0D Key_Enter RZKEY_ENTER 6B VK_ADD 4E 2B + Key_Numpad_Add RZKEY_NUMPAD_ADD 6D VK_SUBTRACT 4A 2D - Key_Numpad_Subtract RZKEY_NUMPAD_SUBTRACT 6A VK_MULTIPLY 37 2A * Key_Numpad_Multiply RZKEY_NUMPAD_MULTIPLY 6F VK_DIVIDE 35 2F / Key_Numpad_Divide RZKEY_NUMPAD_DIVIDE 90 VK_NUMLOCK 45 Key_NumLock RZKEY_NUMLOCK 90 VK_NUMLOCK 45 Key_NumLock RZKEY_NUMLOCK B1 VK_MEDIA_PREV_TRACK 10 Key_PrevTrack RZKEY_INVALID B3 VK_MEDIA_PLAY_PAUSE 22 Key_PlayPause RZKEY_INVALID B0 VK_MEDIA_NEXT_TRACK 19 Key_NextTrack RZKEY_INVALID AD VK_VOLUME_MUTE 20 Key_Mute RZKEY_INVALID AF VK_VOLUME_UP 30 Key_VolumeUp RZKEY_INVALID AE VK_VOLUME_DOWN 2E Key_VolumeDown RZKEY_INVALID 1B VK_ESCAPE 01 1B Key_Escape RZKEY_ESC

Andechs75 commented 4 years ago

OK, replying to the email is resulting to a very unreadable post here... sorry for that ;o) And my xls sheet isn't transfered ... mmmh crap...

poveden commented 4 years ago

Your input has been very useful. Thanks!

It was clear to me that the Razer driver would map correctly the "letter" keys to the right LEDs on the keyboard (e.g. the Spanish and German keyboards have, respectively, the Y and Z keys in the same place, but only the right LED lights up in the corresponding language), but I didn't know what to expect for the "non-letter" keys.

I hoped that, like the "letter" keys, the "non-letter" keys would also be internally mapped in the same way, but I'm afraid that I'll need to do the mapping myself. Fortunately, your lighting mismatchs (e.g. ^<, -ß, and ßü) happen also in my spanish keyboard when configured as German.

I'll write up some code and I'll ask you to download a new version of the Sandbox.zip file for another test. If all goes well, I'll put that code into EliteChroma and publish a new release.

poveden commented 4 years ago

@Andechs75 I think I've nailed it.

Please download the updated version of Sandbox.zip, unzip it as before and run it again.

Please let me know how it goes.

Andechs75 commented 4 years ago

Sorry for the long time passing by. i've done the test, and it looks very nice. VKMap_de-DE_0407-0407-00000407.txt

poveden commented 4 years ago

@Andechs75, Release 1.9.0 is out! Your keyboard (and everyone else's) should behave now.

Feel free to reopen this issue if I missed anything.

Enjoy!