[squeak-dev] Unix keyboard events lose track when multiple keys pressed or keys held down

tim Rowledge tim at rowledge.org
Sun Jan 17 19:56:56 UTC 2021



> On 2021-01-17, at 11:10 AM, tim Rowledge <tim at rowledge.org> wrote:
> 
> Good experiment to try  though.

It certainly allows the basic keystrokes to work and even ctl-e-e . That latter actually surprises me given the description of what XLookupString does, but life in X is always surprising - oh, wait, there's a bunch of code in case KeyPress: that handles some cases.

The log for a ctl-e-e is 


(handleEvent)X KeyPress      state 0x0 raw keycode 92
convert keycode 92(5c) -> 0(00) (keysym fe03 UNKNOWN CODE)
symbolic, keyCode, ucs4: fe03, -1, 0
pressed, buffer: 0, 0
multi_key reset
keyCode, ucs4, multi_key_buffer: -1, 0, 0

(handleEvent)X KeyRelease    state 0x80 raw keycode 92
convert keycode 92(5c) -> 0(00) (keysym fe03 UNKNOWN CODE)
symbolic, keyCode, ucs4: fe03, -1, 0
Skip KeyRelease at keyCode/ucs4 test line 3764

(handleEvent)X KeyPress      state 0x0 raw keycode 252
convert keycode [195(c3),169(a9)] 252(fc) -> 195(c3) (keysym 00e9 XK_eacute)
symbolic, keyCode, ucs4: e9, 195, e9
pressed, buffer: 0, 0
multi_key reset
keyCode, ucs4, multi_key_buffer: 195, 233, 0
signalInputEvent
EVENT (recordKeyboardEvent): time: 1565590 key down  ` ' (195 = 0xc3) ucs4 233
signalInputEvent
EVENT (recordKeyboardEvent): time: 1565590 key char  ` ' (195 = 0xc3) ucs4 233
(ioGetNextEvent) KEYBOARD evt: time: 1565590 press: 1 char: 195 utf32: 233 
(ioGetNextEvent) KEYBOARD evt: time: 1565590 press: 0 char: 195 utf32: 233 

(handleEvent)X KeyRelease    state 0x0 raw keycode 252
convert keycode [195(c3),169(a9)] 252(fc) -> 195(c3) (keysym 00e9 XK_eacute)
symbolic, keyCode, ucs4: e9, 195, e9
signalInputEvent
EVENT (recordKeyboardEvent): time: 1565687 key up    ` ' (195 = 0xc3) ucs4 233
(ioGetNextEvent) KEYBOARD evt: time: 1565687 press: 2 char: 195 utf32: 233 

Looks like the 'multi_key_buffer' stuff is what the 'lastKey' bit was modelled on?

tim
--
tim Rowledge; tim at rowledge.org; http://www.rowledge.org/tim
A computer scientist is someone who fixes things that aren't broken.




More information about the Squeak-dev mailing list