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