cajhin / capsicain

Powerful low-level keyboard remapping tool for Windows
349 stars 18 forks source link

altChar() doesnt work on compact keyboard #23

Closed PropFault closed 3 years ago

PropFault commented 3 years ago

I have recently purchased a 60% keyboard and wanted to use this tool to bind german umlauts and some other missing keys to the american layout using a modifier. Being able to hold tab or capslock for this would be perfect.

ISSUE: Using altChar() results in no key being pressed (neither original key nor desired key)

CONFIG

[CONFIG_1]
REWIRE TAB MOD10 TAB
COMBO ' [.... ..&. .... ....] > altChar(132)

I have tried setting the registry key "EnableHexNumpad" at "Computer\HKEY_CURRENT_USER\Control Panel\Input Method" to 1.

Keyboard I use: Epomaker SK64/SK64S

If I replace "altChar(xxx)" with something like "key(LEFT)" then it works just fine.

cajhin commented 3 years ago

Strange. This is not an issue with your keyboard - if the keypress triggers the combo (you say it does, key(Left) works), then the keyboard's job is done.

Things to try...

Caution: after you mark text in the console, the console is frozen. You must right-click into it to un-freeze.

(and a final note: I started with Caps+;'[ = öäü. I ended up with ALT+;'[] = öäüß. I need Caps for editing)

PropFault commented 3 years ago

Debug mode with my original config: (note: I hit tab twice normally and then held down and pressed '. I did press ; once by accident. I held tab + ' a few times.

::DEBUG mode: ON.
(  124 ms) [       D^ =20 1] [M:0]       (1 ms) -- >(blocked D UP: was not down)>.
(Hard ESC^ )
(   67 ms) [     ESC^ =1 1] [M:0]        (1 ms) -- {ESC^ #0}.
( 3159 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   84 ms) [     TAB^ =f 1] [M:0]        (1 ms) --> SEQUENCE (3) {TABv #1} {TAB^ #0} (tap)
  (slow to send: 16 ms).
(  172 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED  (TH_in:f).
(   68 ms) [     TAB^ =f 1] [M:0]        (0 ms) --> SEQUENCE (3) {TABv #1} {TAB^ #0} (tap)
  (slow to send: 16 ms).
( 1894 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED  (TH_in:f).
(  500 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(    8 ms) [       ;v =27 0] [M:200]     (0 ms) -- {;v #1}.
(  103 ms) [       ;^ =27 1] [M:200]     (0 ms) -- {;^ #0} (tap).
(  519 ms) [TAB =>    MOD10^ =f 1] [M:0]         (1 ms) --> BLOCKED .
( 1499 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(  415 ms) [       'v =28 0] [M:200]     (1 ms) --> SEQUENCE (10) {RALTv #1} {NP1v #2} {NP1^ #1} {NP3v #2} {NP3^ #1} {NP2v #2} {NP2^ #1} {RALT^ #0}     (slow to send: 44 ms).
(  152 ms) [       '^ =28 1] [M:200]     (1 ms) -- >(blocked ' UP: was not down)> (tap).
(  226 ms) [       'v =28 0] [M:200]     (1 ms) --> SEQUENCE (10) {RALTv #1} {NP1v #2} {NP1^ #1} {NP3v #2} {NP3^ #1} {NP2v #2} {NP2^ #1} {RALT^ #0} (TH_in:28)  (slow to send: 44 ms).
(  140 ms) [       '^ =28 1] [M:200]     (0 ms) -- >(blocked ' UP: was not down)> (tap).
(  175 ms) [       'v =28 0] [M:200]     (0 ms) --> SEQUENCE (10) {RALTv #1} {NP1v #2} {NP1^ #1} {NP3v #2} {NP3^ #1} {NP2v #2} {NP2^ #1} {RALT^ #0} (TH_in:28)  (slow to send: 43 ms).
(  136 ms) [       '^ =28 1] [M:200]     (1 ms) -- >(blocked ' UP: was not down)> (tap).
(  225 ms) [TAB =>    MOD10^ =f 1] [M:0]         (0 ms) --> BLOCKED .
(  170 ms) [TAB =>    MOD10v =f 0] [M:200]       (0 ms) --> BLOCKED .
(  223 ms) [       'v =28 0] [M:200]     (0 ms) --> SEQUENCE (10) {RALTv #1} {NP1v #2} {NP1^ #1} {NP3v #2} {NP3^ #1} {NP2v #2} {NP2^ #1} {RALT^ #0}     (slow to send: 44 ms).
(  204 ms) [       '^ =28 1] [M:200]     (1 ms) -- >(blocked ' UP: was not down)> (tap).
(  119 ms) [       'v =28 0] [M:200]     (0 ms) --> SEQUENCE (10) {RALTv #1} {NP1v #2} {NP1^ #1} {NP3v #2} {NP3^ #1} {NP2v #2} {NP2^ #1} {RALT^ #0} (TH_in:28)  (slow to send: 44 ms).
(  136 ms) [       '^ =28 1] [M:200]     (0 ms) -- >(blocked ' UP: was not down)> (tap).
(  151 ms) [       'v =28 0] [M:200]     (0 ms) --> SEQUENCE (10) {RALTv #1} {NP1v #2} {NP1^ #1} {NP3v #2} {NP3^ #1} {NP2v #2} {NP2^ #1} {RALT^ #0} (TH_in:28)  (slow to send: 44 ms).
(  222 ms) [       '^ =28 1] [M:200]     (0 ms) -- >(blocked ' UP: was not down)> (tap).
(   69 ms) [TAB =>    MOD10^ =f 1] [M:0]         (0 ms) --> BLOCKED .
( 1225 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(  275 ms) [       'v =28 0] [M:200]     (1 ms) --> SEQUENCE (10) {RALTv #1} {NP1v #2} {NP1^ #1} {NP3v #2} {NP3^ #1} {NP2v #2} {NP2^ #1} {RALT^ #0}     (slow to send: 43 ms).
(  210 ms) [       '^ =28 1] [M:200]     (1 ms) -- >(blocked ' UP: was not down)> (tap).
(   49 ms) [TAB =>    MOD10^ =f 1] [M:0]         (1 ms) --> BLOCKED

Debug mode with alternative 1 (code 0228):

ACTIVE CONFIG: 1 = OPTION configName is undefined PC keyboard


::
CONFIG CHANGE: 1

::DEBUG mode: ON.
(  122 ms) [       D^ =20 1] [M:0]       (1 ms) -- >(blocked D UP: was not down)>.
(Hard ESC^ )
(   18 ms) [     ESC^ =1 1] [M:0]        (1 ms) -- {ESC^ #0}.
( 2612 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(  499 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   28 ms) [       'v =28 0] [M:200]     (1 ms) --> SEQUENCE (12) {RALTv #1} {NP0v #2} {NP0^ #1} {NP2v #2} {NP2^ #1} {NP2v #2} {NP2^ #1} {NP8v #2} {NP8^ #1} {RALT^ #0}         (slow to send: 55 ms).
(   84 ms) [       '^ =28 1] [M:200]     (0 ms) -- >(blocked ' UP: was not down)> (tap).
(  276 ms) [       'v =28 0] [M:200]     (1 ms) --> SEQUENCE (12) {RALTv #1} {NP0v #2} {NP0^ #1} {NP2v #2} {NP2^ #1} {NP2v #2} {NP2^ #1} {NP8v #2} {NP8^ #1} {RALT^ #0} (TH_in:28)      (slow to send: 55 ms).
(  139 ms) [       '^ =28 1] [M:200]     (1 ms) -- >(blocked ' UP: was not down)> (tap).
(  310 ms) [       'v =28 0] [M:200]     (1 ms) --> SEQUENCE (12) {RALTv #1} {NP0v #2} {NP0^ #1} {NP2v #2} {NP2^ #1} {NP2v #2} {NP2^ #1} {NP8v #2} {NP8^ #1} {RALT^ #0} (TH_in:28)      (slow to send: 55 ms).
(  103 ms) [       '^ =28 1] [M:200]     (1 ms) -- >(blocked ' UP: was not down)> (tap).
(  426 ms) [       'v =28 0] [M:200]     (1 ms) --> SEQUENCE (12) {RALTv #1} {NP0v #2} {NP0^ #1} {NP2v #2} {NP2^ #1} {NP2v #2} {NP2^ #1} {NP8v #2} {NP8^ #1} {RALT^ #0} (TH_in:28)      (slow to send: 55 ms).
(  138 ms) [       '^ =28 1] [M:200]     (1 ms) -- >(blocked ' UP: was not down)> (tap).
(  138 ms) [       'v =28 0] [M:200]     (1 ms) --> SEQUENCE (12) {RALTv #1} {NP0v #2} {NP0^ #1} {NP2v #2} {NP2^ #1} {NP2v #2} {NP2^ #1} {NP8v #2} {NP8^ #1} {RALT^ #0} (TH_in:28)      (slow to send: 55 ms).
(  123 ms) [       '^ =28 1] [M:200]     (1 ms) -- >(blocked ' UP: was not down)> (tap).
(  120 ms) [       'v =28 0] [M:200]     (0 ms) --> SEQUENCE (12) {RALTv #1} {NP0v #2} {NP0^ #1} {NP2v #2} {NP2^ #1} {NP2v #2} {NP2^ #1} {NP8v #2} {NP8^ #1} {RALT^ #0} (TH_in:28)      (slow to send: 55 ms).
(  119 ms) [       '^ =28 1] [M:200]     (1 ms) -- >(blocked ' UP: was not down)> (tap).
(  135 ms) [       'v =28 0] [M:200]     (1 ms) --> SEQUENCE (12) {RALTv #1} {NP0v #2} {NP0^ #1} {NP2v #2} {NP2^ #1} {NP2v #2} {NP2^ #1} {NP8v #2} {NP8^ #1} {RALT^ #0} (TH_in:28)      (slow to send: 54 ms).
(  121 ms) [       '^ =28 1] [M:200]     (1 ms) -- >(blocked ' UP: was not down)> (tap).
(  136 ms) [       'v =28 0] [M:200]     (1 ms) --> SEQUENCE (12) {RALTv #1} {NP0v #2} {NP0^ #1} {NP2v #2} {NP2^ #1} {NP2v #2} {NP2^ #1} {NP8v #2} {NP8^ #1} {RALT^ #0} (TH_in:28)      (slow to send: 54 ms).
(  121 ms) [       '^ =28 1] [M:200]     (1 ms) -- >(blocked ' UP: was not down)> (tap).
(  137 ms) [       'v =28 0] [M:200]     (1 ms) --> SEQUENCE (12) {RALTv #1} {NP0v #2} {NP0^ #1} {NP2v #2} {NP2^ #1} {NP2v #2} {NP2^ #1} {NP8v #2} {NP8^ #1} {RALT^ #0} (TH_in:28)      (slow to send: 54 ms).
(  119 ms) [       '^ =28 1] [M:200]     (0 ms) -- >(blocked ' UP: was not down)> (tap).
(   68 ms) [TAB =>    MOD10^ =f 1] [M:0]         (1 ms) --> BLOCKED

Debug log of alternative 2 (code +00E4): This one straight up just resulted in me typing '. Didnt really even change anything. The other codes at least blocked the keystroke this one behaved like nothing was even installed. Though the tab hold still got blocked


ACTIVE CONFIG: 1 = OPTION configName is undefined
PC keyboard

::
CONFIG CHANGE: 1

::DEBUG mode: ON.
(  104 ms) [       D^ =20 1] [M:0]       (1 ms) -- >(blocked D UP: was not down)>.
(Hard ESC^ )
(   33 ms) [     ESC^ =1 1] [M:0]        (1 ms) -- {ESC^ #0}.
( 1688 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(  500 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   32 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   32 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   32 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   15 ms) [       'v =28 0] [M:200]     (1 ms) -- {'v #1}.
(   87 ms) [       '^ =28 1] [M:200]     (1 ms) -- {'^ #0} (tap).
(  169 ms) [       'v =28 0] [M:200]     (0 ms) -- {'v #1} (TH_in:28).
(   87 ms) [       '^ =28 1] [M:200]     (1 ms) -- {'^ #0} (tap).
(  136 ms) [       'v =28 0] [M:200]     (1 ms) -- {'v #1} (TH_in:28).
(   87 ms) [       '^ =28 1] [M:200]     (1 ms) -- {'^ #0} (tap).
(  120 ms) [       'v =28 0] [M:200]     (1 ms) -- {'v #1} (TH_in:28).
(  101 ms) [       '^ =28 1] [M:200]     (1 ms) -- {'^ #0} (tap).
(  121 ms) [       'v =28 0] [M:200]     (1 ms) -- {'v #1} (TH_in:28).
(  103 ms) [       '^ =28 1] [M:200]     (1 ms) -- {'^ #0} (tap).
(  695 ms) [       'v =28 0] [M:200]     (1 ms) -- {'v #1} (TH_in:28).
(  103 ms) [       '^ =28 1] [M:200]     (1 ms) -- {'^ #0} (tap).
(  407 ms) [       'v =28 0] [M:200]     (1 ms) -- {'v #1} (TH_in:28).
(  228 ms) [       '^ =28 1] [M:200]     (1 ms) -- {'^ #0} (tap).
(  401 ms) [TAB =>    MOD10^ =f 1] [M:0]         (1 ms) --> BLOCKED .
(  137 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(  499 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   32 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   32 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   32 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   33 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   32 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   32 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   32 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   32 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   32 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   13 ms) [       'v =28 0] [M:200]     (0 ms) -- {'v #1}.
(  121 ms) [       '^ =28 1] [M:200]     (1 ms) -- {'^ #0} (tap).
(  202 ms) [       'v =28 0] [M:200]     (1 ms) -- {'v #1} (TH_in:28).
(  118 ms) [       '^ =28 1] [M:200]     (1 ms) -- {'^ #0} (tap).
(  344 ms) [TAB =>    MOD10^ =f 1] [M:0]         (1 ms) --> BLOCKED .
(  155 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(  499 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   32 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   32 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   32 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   33 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   32 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   32 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   32 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   32 ms) [TAB =>    MOD10v =f 0] [M:200]       (0 ms) --> BLOCKED .
(   32 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   32 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   17 ms) [       'v =28 0] [M:200]     (0 ms) -- {'v #1}.
(   87 ms) [       '^ =28 1] [M:200]     (1 ms) -- {'^ #0} (tap).
(  325 ms) [       'v =28 0] [M:200]     (1 ms) -- {'v #1} (TH_in:28).
(  124 ms) [       '^ =28 1] [M:200]     (1 ms) -- {'^ #0} (tap).
(  293 ms) [       'v =28 0] [M:200]     (1 ms) -- {'v #1} (TH_in:28).
(  136 ms) [       '^ =28 1] [M:200]     (1 ms) -- {'^ #0} (tap).
(  346 ms) [TAB =>    MOD10^ =f 1] [M:0]         (1 ms) --> BLOCKED .
(  155 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(  499 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   32 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   32 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   32 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   32 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   33 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   32 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   32 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   32 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   32 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   17 ms) [       'v =28 0] [M:200]     (1 ms) -- {'v #1}.
(  119 ms) [       '^ =28 1] [M:200]     (1 ms) -- {'^ #0} (tap).
(  275 ms) [       'v =28 0] [M:200]     (1 ms) -- {'v #1} (TH_in:28).
(  120 ms) [       '^ =28 1] [M:200]     (1 ms) -- {'^ #0} (tap).
(  200 ms) [       'v =28 0] [M:200]     (1 ms) -- {'v #1} (TH_in:28).
(  119 ms) [       '^ =28 1] [M:200]     (0 ms) -- {'^ #0} (tap).
(  188 ms) [       'v =28 0] [M:200]     (0 ms) -- {'v #1} (TH_in:28).
(  103 ms) [       '^ =28 1] [M:200]     (1 ms) -- {'^ #0} (tap).
(  153 ms) [       'v =28 0] [M:200]     (1 ms) -- {'v #1} (TH_in:28).
(  100 ms) [       '^ =28 1] [M:200]     (1 ms) -- {'^ #0} (tap).
(  135 ms) [       'v =28 0] [M:200]     (1 ms) -- {'v #1} (TH_in:28).
(  103 ms) [       '^ =28 1] [M:200]     (1 ms) -- {'^ #0} (tap).
(  139 ms) [       'v =28 0] [M:200]     (1 ms) -- {'v #1} (TH_in:28).
(  104 ms) [       '^ =28 1] [M:200]     (1 ms) -- {'^ #0} (tap).
(  183 ms) [TAB =>    MOD10^ =f 1] [M:0]         (0 ms) --> BLOCKED .
(  152 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(  499 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   32 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   32 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   32 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   33 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   32 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   32 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   32 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   32 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   33 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   32 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(   12 ms) [       'v =28 0] [M:200]     (0 ms) -- {'v #1}.
(  500 ms) [       'v =28 0] [M:200]     (1 ms) -- {'v #1}.
(   32 ms) [       'v =28 0] [M:200]     (1 ms) -- {'v #1}.
(   32 ms) [       'v =28 0] [M:200]     (1 ms) -- {'v #1}.
(   32 ms) [       'v =28 0] [M:200]     (1 ms) -- {'v #1}.
(   33 ms) [       'v =28 0] [M:200]     (1 ms) -- {'v #1}.
(   32 ms) [       'v =28 0] [M:200]     (1 ms) -- {'v #1}.
(   30 ms) [       '^ =28 1] [M:200]     (1 ms) -- {'^ #0} (slow tap).
(  269 ms) [TAB =>    MOD10^ =f 1] [M:0]         (1 ms) --> BLOCKED .
(  137 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(  191 ms) [       'v =28 0] [M:200]     (0 ms) -- {'v #1}.
(  500 ms) [       'v =28 0] [M:200]     (1 ms) -- {'v #1}.
(   32 ms) [       'v =28 0] [M:200]     (1 ms) -- {'v #1}.
(   32 ms) [       'v =28 0] [M:200]     (1 ms) -- {'v #1}.
(   32 ms) [       'v =28 0] [M:200]     (1 ms) -- {'v #1}.
(   32 ms) [       'v =28 0] [M:200]     (1 ms) -- {'v #1}.
(   33 ms) [       'v =28 0] [M:200]     (1 ms) -- {'v #1}.
(   32 ms) [       'v =28 0] [M:200]     (1 ms) -- {'v #1}.
(   13 ms) [       '^ =28 1] [M:200]     (1 ms) -- {'^ #0} (slow tap).
(   86 ms) [TAB =>    MOD10^ =f 1] [M:0]         (1 ms) --> BLOCKED .
(  192 ms) [TAB =>    MOD10v =f 0] [M:200]       (1 ms) --> BLOCKED .
(  202 ms) [       'v =28 0] [M:200]     (1 ms) -- {'v #1}.
(  167 ms) [       '^ =28 1] [M:200]     (1 ms) -- {'^ #0} (tap).
(   50 ms) [TAB =>    MOD10^ =f 1] [M:0]         (1 ms) --> BLOCKED
****

I do have an old razer huntsman. Lets see if it works

ä

yeah that totally worked.

Sorry for replying so late. I hope that helped somewhat.

None of the ideas you listed worked. However, after plugging in my full sized keyboard, it started working fine. Watch this:

without tab: jkl;' with tab: jkl;ä

This is using my original config. Ill try rebooting and ill comment if it still works (without my big keyboard) after that.

PropFault commented 3 years ago

After reboot without keyboard plugged in, it stopped working again. Ill uninstall razer synapse and reboot. Maybe that fixes it. I hope that also installs the keyboard drivers or whatever else synapse originally installed.

PropFault commented 3 years ago

Uninstalling razer synapse did nothing

Edit: So it works but only if I briefly plug in my full sized keyboard. Removing the keyboard and using the small one after that is no problem. Seems to me that something needs to be initialised or registered before it will work on keyboards that dont have a numpad.

PropFault commented 3 years ago

Ok I just installed my keyboards utility program and now it works again. However, I think I tried it before with it already installed and it didnt work. It seems the installation of the utility made it work but after reboot it probably wont. Ive already uninstalled the program again as I am writing this, simply because I want to be able to use this without needing that utility. Its really big and offers no functionality im actually interested in. Furthermore it needs me to give it admin rights every time it starts which is kinda weird. So id rather not do that.

I dont think it will solve the issue regardless.

cajhin commented 3 years ago

Hm. This is difficult to troubleshoot, based only on what you write.

My best guess what's going on: Maybe you have another manufacturer driver for the small keyboard installed. Capsicain gets the keypress first, it translates it to something with "Numpad1 key" in it. Then your driver receives that and is confused: it knows that your keyboard does not have a numpad. Then it drops the key events. When you plug the big board in, the driver isn't sure where the Numpad keys are coming from, so it forwards them. Just a theory...

Things to try:

Check which keyboard filter drivers are installed: in the registry, look at Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class{4d36e96b-e325-11ce-bfc1-08002be10318} "UpperFilters" looks like this on my current laptop: SynTP (some synaptics junk) keyboard (this is interception from capsicain, C:\Windows\System32\drivers\keyboard.sys) kbdclass (Windows standard)

DO NOT EDIT THE UPPER FILTERS If you make a mistake, which is easy, your Windows might no longer talk to keyboards. If you edit it anyway, write down exactly what's there so you can recreate it.

PropFault commented 3 years ago

Alright good news. It works now.

I think you were on the right track though. The reason why I briefly reinstalled that keyboard utility I mentioned was so I could reset my keyboard settings. I guess that deleted the driver filter it had installed. Although that wouldn't make much sense since the utility seems to reprogram the controller in the keyboard (since chances stay there on other machines) but hey, I am not going to complain.

here is my upper filters currently:

keyboard
kbdclass
vmkbd3

Thank you so much for the help. Im sorry that it just kinda started working and that we couldn't figure it out fully.

If it stops working again within a few days ill comment here again. Maybe there is something else that makes it work and I was just lucky today.

Thanks again :)

cajhin commented 3 years ago

That "keyboard utility", is that Razer Synapse? If so, I think it doesn't reprogram the keyboard. It just stores your config on a Razer server, and when you're on another PC it downloads your stored settings. Best guess is they don't want to support any hardware, so they detect their own hardware and only modify keys (break numpad combos) when a Razer is active? That would explain why only one board has problems.

By the way, what's your 60% board? (I don't think it matters, just curious)

cajhin commented 3 years ago

One more thing: can you test a combo that produces a simple "Numpad1" keystroke: COMBO X [ ] > key(NP1)

I predict that X produces a '1'.

Found some hints on reddit, my guess is now that Razer translates "NP1" key to "1" key. And Windows does not recognize AltChar sequences that are done with the regular number keys. You must use the Numpad number keys.

PropFault commented 3 years ago

That "keyboard utility", is that Razer Synapse? If so, I think it doesn't reprogram the keyboard. It just stores your config on a Razer server, and when you're on another PC it downloads your stored settings. Best guess is they don't want to support any hardware, so they detect their own hardware and only modify keys (break numpad combos) when a Razer is active? That would explain why only one board has problems.

By the way, what's your 60% board? (I don't think it matters, just curious)

I mention what my board is in the first post. Epomaker SK64/SK64S in white with Gateron Black Optical Switches. The utility I was talking about was Epomakers own Utility. And it kept the settings when I used my keyboard on my notebook ( I am using my desktop rn ) without installing the utility.

One more thing: can you test a combo that produces a simple "Numpad1" keystroke: COMBO X [ ] > key(NP1)

I predict that X produces a '1'.

Found some hints on reddit, my guess is now that Razer translates "NP1" key to "1" key. And Windows does not recognize AltChar sequences that are done with the regular number keys. You must use the Numpad number keys. Actually, since it seems to work now, I have extended my ini file.

[CONFIG_1]
REWIRE Y Z
REWIRE Z Y
REWIRE CAPS MOD10 CAPS
COMBO ' [.... ..&. ...| ...|] > altChar(142)
COMBO ; [.... ..&. ...| ...|] > altChar(153)
COMBO [ [.... ..&. ...| ...|] > altChar(154)

COMBO ' [.... ..&. .... ....] > altChar(132)
COMBO ; [.... ..&. .... ....] > altChar(148)
COMBO [ [.... ..&. .... ....] > altChar(129)

###NUMPAD
COMBO SPACE [.... ..&. .... ....] > key(NP0)
COMBO m [.... ..&. .... ....] > key(NP1)
COMBO , [.... ..&. .... ....] > key(NP2)
COMBO . [.... ..&. .... ....] > key(NP3)
COMBO j [.... ..&. .... ....] > key(NP4)
COMBO k [.... ..&. .... ....] > key(NP5)
COMBO l [.... ..&. .... ....] > key(NP6)
COMBO u [.... ..&. .... ....] > key(NP7)
COMBO i [.... ..&. .... ....] > key(NP8)
COMBO o [.... ..&. .... ....] > key(NP9)
COMBO 9 [.... ..&. .... ....] > key(NP*)
COMBO 8 [.... ..&. .... ....] > key(NP/)
COMBO p [.... ..&. .... ....] > key(NP+)
COMBO 0 [.... ..&. .... ....] > key(NP-)

All of these work correctly.

Btw how can I do the numpad comma? I need to know since blender requires that one to snap focus on a selected object, which is a function I use a lot.

cajhin commented 3 years ago

sorry for the late reply. There is no Numpad comma on the US keyboard. You want NP.