Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 1 | Test protocol for keyboard handling |
| 2 | =================================== |
| 3 | |
| 4 | Platform specific tests/issues are marked with []. |
| 5 | |
Pierre Ossman | b6116dd | 2016-06-10 15:03:13 +0200 | [diff] [blame] | 6 | These tests are primarily about what is sent over the protocol and some |
| 7 | may be difficult or impossible to test using normal applications. In |
| 8 | these cases you can turn on debug logging in either the client or the |
| 9 | server by specifying "-Log *:stderr:100". |
| 10 | |
| 11 | We currently have a limitation in Xvnc where it can run out of symbols, |
| 12 | resulting in nothing being sent to the applications. Just run setxkbmap |
| 13 | with any layout to reset the symbol table. |
| 14 | |
Pierre Ossman | 5433808 | 2017-09-18 16:22:41 +0200 | [diff] [blame] | 15 | Client (classic, non-raw, mode) |
| 16 | ------------------------------- |
Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 17 | |
| 18 | - Normal symbols: |
| 19 | |
| 20 | - ASCII characters |
| 21 | - Latin 1 character |
| 22 | - Unicode BMP characters |
Pierre Ossman | 93454d9 | 2016-06-10 15:08:52 +0200 | [diff] [blame] | 23 | - Unicode non-BMP characters (does any layout actually have these?) |
Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 24 | |
| 25 | - Dead keys: |
| 26 | |
Pierre Ossman | b6116dd | 2016-06-10 15:03:13 +0200 | [diff] [blame] | 27 | These are not available on a single layout, so you need to switch to |
| 28 | test everything. The useful layouts also differ per platform: |
| 29 | |
| 30 | X11: US International for most, Greek for some specific diacretics |
| 31 | Win: US International, Czech, Greek Polytonic, Vietnamese |
Pierre Ossman | 93454d9 | 2016-06-10 15:08:52 +0200 | [diff] [blame] | 32 | OS X: ABC Extended (FIXME: lots of broken keys), |
| 33 | Greek (FIXME: cannot be used with TigerVNC) |
Pierre Ossman | b6116dd | 2016-06-10 15:03:13 +0200 | [diff] [blame] | 34 | |
Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 35 | - Grave |
| 36 | - Acute |
| 37 | - Circumflex |
| 38 | - Tilde |
Pierre Ossman | 93454d9 | 2016-06-10 15:08:52 +0200 | [diff] [blame] | 39 | - Macron (FIXME: broken on Win) |
Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 40 | - Breve |
| 41 | - Dot above |
Pierre Ossman | 30e3401 | 2016-06-10 15:06:21 +0200 | [diff] [blame] | 42 | - Dot below |
Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 43 | - Diaeresis |
| 44 | - Ring above |
| 45 | - Double acute |
| 46 | - Caron |
| 47 | - Cedilla |
| 48 | - Ogonek |
Pierre Ossman | 93454d9 | 2016-06-10 15:08:52 +0200 | [diff] [blame] | 49 | - Ypogegrammeni (iota below) (FIXME: broken on Win) |
| 50 | - Dialytika tonos [Win] (Diaresis on X11, and maybe OS X?) |
| 51 | - Comma above (FIXME: broken on Win) |
| 52 | - Reversed comma above (FIXME: broken on Win) |
| 53 | - Horn [X11?] |
| 54 | - Hook above [Win?] |
| 55 | - Hook below [X11?, Win?] |
| 56 | - Dakuten (Katakana voiced mark) (Only Input Methods layouts?) |
| 57 | - Handakuten (Katakana semi-voiced mark) (Only Input Methods layouts?) |
Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 58 | - FIXME: Many more that we currently probably don't support |
| 59 | |
| 60 | - No composition on client |
| 61 | |
| 62 | - Modifiers: |
| 63 | |
Pierre Ossman | b6116dd | 2016-06-10 15:03:13 +0200 | [diff] [blame] | 64 | X11: You can usually toggle Hyper/Super and Compose/Scroll_Lock using |
| 65 | XKB options. |
| 66 | |
Pierre Ossman | 671d05d | 2017-09-18 16:22:09 +0200 | [diff] [blame] | 67 | - CapsLock, NumLock |
Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 68 | - Shift, Ctrl |
Pierre Ossman | 5124978 | 2018-03-08 14:05:39 +0100 | [diff] [blame^] | 69 | - Alt, AltGr, Super [Win, X11] (FIXME: Ctrl+AltGr broken on Win) |
Pierre Ossman | f1013e4 | 2016-06-10 15:04:33 +0200 | [diff] [blame] | 70 | - Meta [X11] |
Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 71 | - Left/right identification (FIXME: broken for Shift on Win) |
Pierre Ossman | 93454d9 | 2016-06-10 15:08:52 +0200 | [diff] [blame] | 72 | - CmdL => AltL, CmdR => SuperL, AltL => ModeSwitch, AltR => Level3Shift [OS X] |
Peter Åstrand (astrand) | f3ff0f1 | 2015-10-14 13:47:28 +0200 | [diff] [blame] | 73 | - Hyper sends Super [X11] |
Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 74 | |
| 75 | - CapsLock, Shift and AltGr affect symbol lookup |
Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 76 | - Ctrl does not affect symbol lookup |
Pierre Ossman | 5124978 | 2018-03-08 14:05:39 +0100 | [diff] [blame^] | 77 | - Ctrl+Alt+<ANY> sends the same symbol as <ANY> |
Pierre Ossman | ab2224f | 2016-06-10 15:22:44 +0200 | [diff] [blame] | 78 | - Ctrl+AltGr+<ANY> sends the same symbol as AltGr+<ANY> (FIXME: broken on Win) |
Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 79 | - "Shift press, A press, Shift release, A release" should not send "a release" |
| 80 | |
| 81 | - Numpad: |
| 82 | |
Pierre Ossman | 2ddee23 | 2016-06-10 15:03:59 +0200 | [diff] [blame] | 83 | - NumLock affects symbol lookup [Win, X11] |
Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 84 | - Numpad specific symbols are sent |
Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 85 | - Decimal key should send Decimal for layouts with . as a symbol, and |
| 86 | Separator for layouts with , as a symbol |
Pierre Ossman | 2ddee23 | 2016-06-10 15:03:59 +0200 | [diff] [blame] | 87 | - Shift inverts NumLock behaviour [X11] |
| 88 | - Shift turns NumLock off, but not on [Win] (FIXME: fake Shifts also sent) |
Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 89 | |
| 90 | - Multimedia keys: |
| 91 | |
Pierre Ossman | 93454d9 | 2016-06-10 15:08:52 +0200 | [diff] [blame] | 92 | OS X: FIXME: all broken |
| 93 | |
Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 94 | - Back, Forward, Refresh, Stop |
Pierre Ossman | 93454d9 | 2016-06-10 15:08:52 +0200 | [diff] [blame] | 95 | - HomePage, Search, Favourites (FIXME: broken on Win) |
Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 96 | - Mail, Calculator |
| 97 | - Volume up, down, mute |
| 98 | - Media next, previous, stop, play |
Pierre Ossman | 93454d9 | 2016-06-10 15:08:52 +0200 | [diff] [blame] | 99 | - Sleep (FIXME: broken on Win) |
Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 100 | - FIXME: probably more keys exist |
| 101 | |
| 102 | - Non-character keys: |
| 103 | |
Pierre Ossman | 93454d9 | 2016-06-10 15:08:52 +0200 | [diff] [blame] | 104 | - F1-F24 (FIXME: F14-F15 broken on OS X) |
Pierre Ossman | efb48a5 | 2016-06-10 15:08:24 +0200 | [diff] [blame] | 105 | - Tab, Space, Backspace, Return, Esc |
Pierre Ossman | 93454d9 | 2016-06-10 15:08:52 +0200 | [diff] [blame] | 106 | - LeftTab sends Tab [X11?] |
Pierre Ossman | efb48a5 | 2016-06-10 15:08:24 +0200 | [diff] [blame] | 107 | - PrntScrn, ScrollLock, Pause [X11, Win] |
| 108 | - Help [X11?, OS X] |
| 109 | - Insert [X11, Win] |
| 110 | - Delete, Home, End, PageUp, PageDown |
Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 111 | - Arrow keys |
| 112 | - Menu |
Pierre Ossman | a7d3dc7 | 2014-09-30 17:03:28 +0200 | [diff] [blame] | 113 | - Alt+PrntScrn sends Sys_Req [Win] |
Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 114 | |
| 115 | - French layout (AZERTY and inverted shift behaviour for many keys) |
| 116 | |
Pierre Ossman | 5433808 | 2017-09-18 16:22:41 +0200 | [diff] [blame] | 117 | - Local layout changes are respected |
| 118 | |
| 119 | Client (raw mode) |
| 120 | ----------------- |
| 121 | |
| 122 | - All physical keys (modifiers or type of symbol shouldn't matter) |
| 123 | |
| 124 | - Normal keys |
| 125 | - Dead keys |
| 126 | - Numpad |
| 127 | - Multimedia keys |
| 128 | - Non-character keys |
| 129 | |
Pierre Ossman | 5433808 | 2017-09-18 16:22:41 +0200 | [diff] [blame] | 130 | Client (both modes) |
| 131 | ------------------- |
| 132 | |
Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 133 | - Key repeat should not send repeated release events |
| 134 | |
| 135 | - Keys are released on loss of focus |
| 136 | |
Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 137 | - Local input methods are disabled/enabled with focus |
| 138 | |
Pierre Ossman | 93454d9 | 2016-06-10 15:08:52 +0200 | [diff] [blame] | 139 | - System keys should be grabbed in full screen (FIXME: lots missing on Win) |
Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 140 | |
| 141 | The exact keys depends on the system and configuration, but it |
| 142 | is usually variants of these: |
| 143 | |
| 144 | - Alt+Tab |
| 145 | - Super (and Super+other) |
| 146 | - Multimedia keys |
| 147 | - Ctrl+Alt+Delete |
| 148 | - Ctrl+Esc |
| 149 | - F8-F12 |
| 150 | |
Pierre Ossman | 671d05d | 2017-09-18 16:22:09 +0200 | [diff] [blame] | 151 | - Lock key states: |
| 152 | |
| 153 | - Adjusted on server when connecting |
| 154 | - Adjusted on server when regaining focus |
| 155 | - Server changes are honored when focused |
| 156 | - Server changes are not honored when not focused |
| 157 | |
| 158 | - CapsLock |
| 159 | - NumLock (hidden state on macOS) |
| 160 | - ScollLock [X11, Win] |
| 161 | |
Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 162 | - Virtual keyboard (as much of the above as is possible) |