[Kmfl-user] Shift International-Backspace in Physical Keyboards
Brought to you by:
courtjester
|
From: Richard W. <ric...@nt...> - 2016-12-11 11:38:21
|
My 'physical' KMFL keyboard has not survived the transition from Ubuntu
12.04 Precise to Ubuntu 16.04 Xenial as well as I thought. To fix
other problems, the underlying XKB is the US keyboard. This could
potentially cause problems with the international-backspace key, which
is not on modern US keyboards (but could be found on the VT100), but
has been partially addressed in KMfL. It is the key between shift_L
and 'Z' on the UK keyboard. It has the same symbols on it on a UK
keyboard as does the US backslash key on a US keyboard.
My problem is that while plain international-backslash keyboard
delivers the right character, shift-international backslash does not.
Now, the international-backslash keyboard is purely a convenience; the
characters I have put on it can also be obtained by custom dead-key
sequences. (They're dead key sequences because I couldn't get AltGr to
work.)
The relevant parts of my KMfL file, lanna3.kmn of 21 November 2016, are:
VERSION 6.0 c For Keyman 6.0 or later.
Name "Lanna Unicode"
Bitmap "lanna.png"
store(&MnemonicLayout) "0" C Physical
store(&language) "nod"
Author "Richard Wordingham"
Copyright "Copyright ©2006, 2010 Richard Wordingham"
Message "Extended Kedmanee for Lanna"
Begin Unicode > use(Main)
group(Main) using keys
+ [K_oE2] > U+1a40 c TAI THAM LETTER HIGH YA
+ [shift K_oE2] > U+1a55 c TAI THAM CONSONANT SIGN MEDIAL RA
+ [K_BKSLASH] > U+1a22 c TAI THAM LETTER HIGH KXA
+ [shift K_BKSLASH] > U+1a24 c TAI THAM LETTER LOW KXA
+ [shift K_COMMA] > U+1a30 c TAI THAM LETTER LOW RATHA
+ [shift K_PERIOD] > U+1a4a c TAI THAM LETTER LLA
I entered the 6-'character' sequence, as depicted on my UK keyboard,
"\|#~<>". I released the shift key after each pair of 'characters'.
What I expected to get was the character sequence <U+1A40, U+1A55,
U+1A22, U+1A24, U+1A30, U+1A4A>. However, I get U+1A4A instead of
U+1A55.
I monitored the keypress inputs using a modification of Xev and got the
following sequence. Only the string values returned surprise me. I
used XwcLookupString to get the string values.
IM devoured scan code 94, state 0000, key <, char <
Received scan code 0, state 0000, key 0000, char 0000 - string U+1A40
IM devoured scan code 62, state 0000, key 0xffe2, char 0xffe2
Received scan code 62, state 0000, key 0xffe2, char 0xffe2 - keysym
0xffe2
IM devoured scan code 94, state 0001, key <, char >
Received scan code 0, state 0000, key 0000, char 0000 - string U+1A4A
IM devoured scan code 51, state 0000, key \, char \
Received scan code 0, state 0000, key 0000, char 0000 - string U+1A22
IM devoured scan code 62, state 0000, key 0xffe2, char 0xffe2
Received scan code 62, state 0000, key 0xffe2, char 0xffe2 - keysym
0xffe2
IM devoured scan code 51, state 0001, key \, char |
Received scan code 0, state 0000, key 0000, char 0000 - string U+1A24
IM devoured scan code 62, state 0000, key 0xffe2, char 0xffe2
Received scan code 62, state 0000, key 0xffe2, char 0xffe2 - keysym
0xffe2
IM devoured scan code 59, state 0001, key ,, char <
Received scan code 0, state 0000, key 0000, char 0000 - string U+1A30
IM devoured scan code 60, state 0001, key ., char >
Received scan code 0, state 0000, key 0000, char 0000 - string U+1A4A
In the above, 'IM devoured' means that the event was filtered out by
XFilterEvent().
What seems odd is that KMfL used the scan code to distinguish the inputs
[K_oE2] and [shift K_COMMA], but not [shift K_oE2] and [shift K_PERIOD].
Richard.
|