Test protocol for keyboard handling =================================== Platform specific tests/issues are marked with []. These tests are primarily about what is sent over the protocol and some may be difficult or impossible to test using normal applications. In these cases you can turn on debug logging in either the client or the server by specifying "-Log *:stderr:100". We currently have a limitation in Xvnc where it can run out of symbols, resulting in nothing being sent to the applications. Just run setxkbmap with any layout to reset the symbol table. Client ------ - Normal symbols: - ASCII characters - Latin 1 character - Unicode BMP characters - Unicode non-BMP characters - Dead keys: These are not available on a single layout, so you need to switch to test everything. The useful layouts also differ per platform: X11: US International for most, Greek for some specific diacretics Win: US International, Czech, Greek Polytonic, Vietnamese OS X: ABC Extended, Greek - Grave - Acute - Circumflex - Tilde - Macron - Breve - Dot above - Dot below - Diaeresis - Ring above - Double acute - Caron - Cedilla - Ogonek - Ypogegrammeni (iota below) - Dialytika tonos - Comma above - Reversed comma above - Horn - Hook above - Hook below - Dakuten (Katakana voiced mark) - Handakuten (Katakana semi-voiced mark) - FIXME: Many more that we currently probably don't support - No composition on client - Modifiers: X11: You can usually toggle Hyper/Super and Compose/Scroll_Lock using XKB options. - CapsLock, NumLock (sent but ignored by server) - Shift, Ctrl - Alt, AltGr, Super [Win, X11] (FIXME: AltGr broken on Win) - Meta [X11] - Left/right identification (FIXME: broken for Shift on Win) - CmdL => AltL, CmdR => SuperL, AltL => ModeSwitch, AltR => Level3Shift [Mac] - Hyper sends Super [X11] - CapsLock, Shift and AltGr affect symbol lookup - Ctrl does not affect symbol lookup - CtrlL+AltR fake release [Win] - Ctrl+Alt+any (note behaviour above though) - Ctrl+AltGr+any (FIXME: broken on Win) - "Shift press, A press, Shift release, A release" should not send "a release" - Numpad: - NumLock affects symbol lookup [Win, X11] - Numpad specific symbols are sent - Decimal key should send Decimal for layouts with . as a symbol, and Separator for layouts with , as a symbol - Shift inverts NumLock behaviour [X11] - Shift turns NumLock off, but not on [Win] (FIXME: fake Shifts also sent) - Multimedia keys: - Back, Forward, Refresh, Stop - HomePage, Search, Favourites - Mail, Calculator - Volume up, down, mute - Media next, previous, stop, play - Sleep - FIXME: probably more keys exist - Non-character keys: - F1-F24 - Tab, Space, Backspace, Return, Esc - LeftTab sends Tab - PrntScrn, ScrollLock, Pause [X11, Win] - Help [X11?, OS X] - Insert [X11, Win] - Delete, Home, End, PageUp, PageDown - Arrow keys - Menu - Alt+PrntScrn sends Sys_Req [Win] - French layout (AZERTY and inverted shift behaviour for many keys) - Key repeat should not send repeated release events - Keys are released on loss of focus - Local layout changes are respected - Local input methods are disabled/enabled with focus - System keys should be grabbed in full screen The exact keys depends on the system and configuration, but it is usually variants of these: - Alt+Tab - Super (and Super+other) - Multimedia keys - Ctrl+Alt+Delete - Ctrl+Esc - F8-F12 - Virtual keyboard (as much of the above as is possible)