[issue46052] IDLE: make Ctrl, Alt + IME non-ascii letter work on Windows

Eryk Sun report at bugs.python.org
Sun Dec 12 22:01:59 EST 2021


Eryk Sun <eryksun at gmail.com> added the comment:

I think the following wiki article still applies even though it was first discussed in 2003: "KeySyms on platforms other than X11" [1]. In particular, it states the following:

    On Windows and MacOS X Tk only supports keysyms correctly for a 
    limited number of keys, namely special keys, and the ranges of ASCII
    and ISO-8859-1 (support of ISO-8859-1 on MacOS X since 8.4.2).

I can confirm the result for the Russian keyboard mapping. The value of keysym is "??", even when combined with the control key. 

x:
        char: 'ч', ord: 0447, code: 0058, sym: '??', num: 0447.
Ctrl+x:
        char: '\x18', ord: 0018, code: 0058, sym: '??', num: 0447.
c:
        char: 'с', ord: 0441, code: 0043, sym: '??', num: 0441.
Ctrl+c:
        char: '\x03', ord: 0003, code: 0043, sym: '??', num: 0441.
v:
        char: 'м', ord: 043c, code: 0056, sym: '??', num: 043c.
Crl+v:
        char: '\x16', ord: 0016, code: 0056, sym: '??', num: 043c.

(I modified the keyevent function from msg408400 to use hexadecimal and repr formatting.)

I checked Ubuntu 20.04 with a Russian keyboard layout. It seems in Linux the combination with the control key changes keysym and keysym_num to use the ASCII characters "x", "c", and "v": 

x:
        char: 'ч', ord: 0447, code: 0035, sym: 'Cyrillic_che', num: 06de.
Ctrl+x:
        char: '\x18', ord: 0018, code: 0035, sym: 'x', num: 0078.
c:
        char: 'с', ord: 0441, code: 0036, sym: 'Cyrillic_es', num: 06d3.
Ctrl+c:
        char: '\x03', ord: 0003, code: 0036, sym: 'c', num: 0063.
v:
        char: 'м', ord: 043c, code: 0037, sym: 'Cyrillic_em', num: 06cd.
Crl+v:
        char: '\x16', ord: 0016, code: 0037, sym: 'v', num: 0076.

---
[1] https://wiki.tcl-lang.org/page/KeySyms+on+platforms+other+than+X11

----------

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue46052>
_______________________________________


More information about the Python-bugs-list mailing list