Numpad reports the same keycodes as some letters

Hello,

I’m making my own textbox for more complex algebra input (using Ian Harrigan’s hx-mathml renderer) and it’s almost done, but there’s one big issue I’m encountering – the numpad reports the same keycodes as
some letters. specifically:
1->a
2->b
3->c
and so on.

I’m going to start investigating this a little bit but before I do, has anyone found a workaround for this? There must be something in the event that differentiates the two inputs.

Update: seems there’s a keyLocation variable in KeyboardEvent, but it doesnt report if it’s coming from numpad or not? It just reports 0.

Could you try stage.window.onKeyDown.add (function (key) { trace (key); }); and see if the Lime key codes are different, or the same?

They are the same–97 for 1 and a, 98 for 2 and b, and so on.

Interesting, we are currently SDL key codes directly

https://wiki.libsdl.org/SDL_Keycode

I see different codes in here for keypad numerals as opposed to other keys.

We do mapping on the OpenFL side in order to convert to Flash-style key codes, but the Lime events should work :confused:

Let me try here and see what I get

I’m trying the following code (sorry my earlier example wasn’t quite correct):

stage.window.onKeyDown.add (function (keyCode, modifier) {
	
	trace (keyCode);
	
});

I get key codes such as 1073741913 or 1073741920 when I press the keypad, while standard keys give me 97 or 115 (etc)

Perhaps the issue is in the OpenFL layer, then, in how keypad numerals are treated.

an important part of this (that i definitely, definitely shouldve mentioned from the start, my apologies): my target is html5. on html5 I’m running the exact same code and getting the same keyCodes for numpad and letters.

Oh, haha, that is important :wink:

I just ran a test, and got these results on Flash:

Main.hx:17: Lime key code: 1073741898
Main.hx:23: OpenFL key code: 36
Main.hx:17: Lime key code: 1073741906
Main.hx:23: OpenFL key code: 38
Main.hx:17: Lime key code: 1073741899
Main.hx:23: OpenFL key code: 33
Main.hx:17: Lime key code: 1073741904
Main.hx:23: OpenFL key code: 37
Main.hx:17: Lime key code: 12
Main.hx:23: OpenFL key code: 12
Main.hx:17: Lime key code: 1073741903
Main.hx:23: OpenFL key code: 39
Main.hx:17: Lime key code: 1073741901
Main.hx:23: OpenFL key code: 35
Main.hx:17: Lime key code: 1073741905
Main.hx:23: OpenFL key code: 40
Main.hx:17: Lime key code: 1073741902
Main.hx:23: OpenFL key code: 34

(pressed numlock)

Main.hx:17: Lime key code: 1073741919
Main.hx:23: OpenFL key code: 103
Main.hx:17: Lime key code: 1073741920
Main.hx:23: OpenFL key code: 104
Main.hx:17: Lime key code: 1073741921
Main.hx:23: OpenFL key code: 105
Main.hx:17: Lime key code: 1073741916
Main.hx:23: OpenFL key code: 100
Main.hx:17: Lime key code: 1073741917
Main.hx:23: OpenFL key code: 101
Main.hx:17: Lime key code: 1073741918
Main.hx:23: OpenFL key code: 102
Main.hx:17: Lime key code: 1073741913
Main.hx:23: OpenFL key code: 97
Main.hx:17: Lime key code: 1073741914
Main.hx:23: OpenFL key code: 98
Main.hx:17: Lime key code: 1073741915
Main.hx:23: OpenFL key code: 99

…and this on native:

Main.hx:23: OpenFL key code: 103
Main.hx:17: Lime key code: 1073741919
Main.hx:23: OpenFL key code: 104
Main.hx:17: Lime key code: 1073741920
Main.hx:23: OpenFL key code: 105
Main.hx:17: Lime key code: 1073741921
Main.hx:23: OpenFL key code: 100
Main.hx:17: Lime key code: 1073741916
Main.hx:23: OpenFL key code: 101
Main.hx:17: Lime key code: 1073741917
Main.hx:23: OpenFL key code: 102
Main.hx:17: Lime key code: 1073741918
Main.hx:23: OpenFL key code: 97
Main.hx:17: Lime key code: 1073741913
Main.hx:23: OpenFL key code: 98
Main.hx:17: Lime key code: 1073741914
Main.hx:23: OpenFL key code: 99
Main.hx:17: Lime key code: 1073741915

(pressed num lock)

Main.hx:23: OpenFL key code: 144
Main.hx:17: Lime key code: 1073741907

Main.hx:23: OpenFL key code: 103
Main.hx:17: Lime key code: 1073741919
Main.hx:23: OpenFL key code: 104
Main.hx:17: Lime key code: 1073741920
Main.hx:23: OpenFL key code: 105
Main.hx:17: Lime key code: 1073741921
Main.hx:23: OpenFL key code: 100
Main.hx:17: Lime key code: 1073741916
Main.hx:23: OpenFL key code: 101
Main.hx:17: Lime key code: 1073741917
Main.hx:23: OpenFL key code: 102
Main.hx:17: Lime key code: 1073741918
Main.hx:23: OpenFL key code: 97
Main.hx:17: Lime key code: 1073741913
Main.hx:23: OpenFL key code: 98
Main.hx:17: Lime key code: 1073741914
Main.hx:23: OpenFL key code: 99
Main.hx:17: Lime key code: 1073741915

so it appears that the codes for native report the same whether or not numlock is enabled.

Oh, I see it now on HTML5

Main.hx:23: OpenFL key code: 36
Main.hx:17: Lime key code: 1073741898
Main.hx:23: OpenFL key code: 38
Main.hx:17: Lime key code: 1073741906
Main.hx:23: OpenFL key code: 33
Main.hx:17: Lime key code: 1073741899
Main.hx:23: OpenFL key code: 37
Main.hx:17: Lime key code: 1073741904
Main.hx:23: OpenFL key code: 12
Main.hx:17: Lime key code: 12
Main.hx:23: OpenFL key code: 39
Main.hx:17: Lime key code: 1073741903
Main.hx:23: OpenFL key code: 35
Main.hx:17: Lime key code: 1073741901
Main.hx:23: OpenFL key code: 40
Main.hx:17: Lime key code: 1073741905
Main.hx:23: OpenFL key code: 34
Main.hx:17: Lime key code: 1073741902

(pressed numlock)

Main.hx:23: OpenFL key code: 144
Main.hx:17: Lime key code: 1073741907

Main.hx:23: OpenFL key code: 71
Main.hx:17: Lime key code: 103
Main.hx:23: OpenFL key code: 72
Main.hx:17: Lime key code: 104
Main.hx:23: OpenFL key code: 73
Main.hx:17: Lime key code: 105
Main.hx:23: OpenFL key code: 68
Main.hx:17: Lime key code: 100
Main.hx:23: OpenFL key code: 69
Main.hx:17: Lime key code: 101
Main.hx:23: OpenFL key code: 70
Main.hx:17: Lime key code: 102
Main.hx:23: OpenFL key code: 65
Main.hx:17: Lime key code: 97
Main.hx:23: OpenFL key code: 66
Main.hx:17: Lime key code: 98
Main.hx:23: OpenFL key code: 67
Main.hx:17: Lime key code: 99

Thanks for reporting this! It appears to work correctly (since the latest commit to Lime)

Main.hx:23: OpenFL key code: 36
Main.hx:17: Lime key code: 1073741898
Main.hx:23: OpenFL key code: 38
Main.hx:17: Lime key code: 1073741906
Main.hx:23: OpenFL key code: 33
Main.hx:17: Lime key code: 1073741899
Main.hx:23: OpenFL key code: 37
Main.hx:17: Lime key code: 1073741904
Main.hx:23: OpenFL key code: 12
Main.hx:17: Lime key code: 12
Main.hx:23: OpenFL key code: 39
Main.hx:17: Lime key code: 1073741903
Main.hx:23: OpenFL key code: 35
Main.hx:17: Lime key code: 1073741901
Main.hx:23: OpenFL key code: 40
Main.hx:17: Lime key code: 1073741905
Main.hx:23: OpenFL key code: 34
Main.hx:17: Lime key code: 1073741902

(pressed numlock)

Main.hx:23: OpenFL key code: 103
Main.hx:17: Lime key code: 1073741919
Main.hx:23: OpenFL key code: 104
Main.hx:17: Lime key code: 1073741920
Main.hx:23: OpenFL key code: 105
Main.hx:17: Lime key code: 1073741921
Main.hx:23: OpenFL key code: 100
Main.hx:17: Lime key code: 1073741916
Main.hx:23: OpenFL key code: 101
Main.hx:17: Lime key code: 1073741917
Main.hx:23: OpenFL key code: 102
Main.hx:17: Lime key code: 1073741918
Main.hx:23: OpenFL key code: 97
Main.hx:17: Lime key code: 1073741913
Main.hx:23: OpenFL key code: 98
Main.hx:17: Lime key code: 1073741914
Main.hx:23: OpenFL key code: 99
Main.hx:17: Lime key code: 1073741915

I am stuck with Openfl 3.6.1 and Lime 2.9.1: is it possible to apply the fix from the new Lime to the old one? I hope to switch to the new versions soon, but I am in a hurry to fix this bug, because clients need to interact with dynamic texts to insert numbers, and getting letter codes instead of number codes is a big problem, and I can’t distinguish between numpad keycodes and letter ones.

EDIT: I replaced the old HTML5Application.hx in HaxeToolkit\haxe\lib\lime\2,9,1\lime_backend\html5 with the new version and now the numpad seems to work correctly. Is it sufficient?