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 | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 15 | Client |
| 16 | ------ |
| 17 | |
| 18 | - Normal symbols: |
| 19 | |
| 20 | - ASCII characters |
| 21 | - Latin 1 character |
| 22 | - Unicode BMP characters |
| 23 | - Unicode non-BMP characters |
| 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 |
| 32 | OS X: ABC Extended, Greek |
| 33 | |
Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 34 | - Grave |
| 35 | - Acute |
| 36 | - Circumflex |
| 37 | - Tilde |
| 38 | - Macron |
| 39 | - Breve |
| 40 | - Dot above |
Pierre Ossman | 30e3401 | 2016-06-10 15:06:21 +0200 | [diff] [blame] | 41 | - Dot below |
Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 42 | - Diaeresis |
| 43 | - Ring above |
| 44 | - Double acute |
| 45 | - Caron |
| 46 | - Cedilla |
| 47 | - Ogonek |
Pierre Ossman | 30e3401 | 2016-06-10 15:06:21 +0200 | [diff] [blame] | 48 | - Ypogegrammeni (iota below) |
Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 49 | - Dialytika tonos |
Pierre Ossman | 30e3401 | 2016-06-10 15:06:21 +0200 | [diff] [blame] | 50 | - Comma above |
| 51 | - Reversed comma above |
| 52 | - Horn |
| 53 | - Hook above |
| 54 | - Hook below |
| 55 | - Dakuten (Katakana voiced mark) |
| 56 | - Handakuten (Katakana semi-voiced mark) |
Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 57 | - FIXME: Many more that we currently probably don't support |
| 58 | |
| 59 | - No composition on client |
| 60 | |
| 61 | - Modifiers: |
| 62 | |
Pierre Ossman | b6116dd | 2016-06-10 15:03:13 +0200 | [diff] [blame] | 63 | X11: You can usually toggle Hyper/Super and Compose/Scroll_Lock using |
| 64 | XKB options. |
| 65 | |
Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 66 | - CapsLock, NumLock (sent but ignored by server) |
| 67 | - Shift, Ctrl |
| 68 | - Alt, AltGr, Super [Win, X11] (FIXME: AltGr broken on Win) |
Pierre Ossman | f1013e4 | 2016-06-10 15:04:33 +0200 | [diff] [blame] | 69 | - Meta [X11] |
Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 70 | - Left/right identification (FIXME: broken for Shift on Win) |
| 71 | - CmdL => AltL, CmdR => SuperL, AltL => ModeSwitch, AltR => Level3Shift [Mac] |
Peter Åstrand (astrand) | f3ff0f1 | 2015-10-14 13:47:28 +0200 | [diff] [blame] | 72 | - Hyper sends Super [X11] |
Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 73 | |
| 74 | - CapsLock, Shift and AltGr affect symbol lookup |
Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 75 | - Ctrl does not affect symbol lookup |
Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 76 | - CtrlL+AltR fake release [Win] |
| 77 | - Ctrl+Alt+any (note behaviour above though) |
| 78 | - Ctrl+AltGr+any (FIXME: broken on Win) |
| 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 | |
| 92 | - Back, Forward, Refresh, Stop |
| 93 | - HomePage, Search, Favourites |
| 94 | - Mail, Calculator |
| 95 | - Volume up, down, mute |
| 96 | - Media next, previous, stop, play |
| 97 | - Sleep |
| 98 | - FIXME: probably more keys exist |
| 99 | |
| 100 | - Non-character keys: |
| 101 | |
| 102 | - F1-F24 |
Pierre Ossman | efb48a5 | 2016-06-10 15:08:24 +0200 | [diff] [blame^] | 103 | - Tab, Space, Backspace, Return, Esc |
Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 104 | - LeftTab sends Tab |
Pierre Ossman | efb48a5 | 2016-06-10 15:08:24 +0200 | [diff] [blame^] | 105 | - PrntScrn, ScrollLock, Pause [X11, Win] |
| 106 | - Help [X11?, OS X] |
| 107 | - Insert [X11, Win] |
| 108 | - Delete, Home, End, PageUp, PageDown |
Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 109 | - Arrow keys |
| 110 | - Menu |
Pierre Ossman | a7d3dc7 | 2014-09-30 17:03:28 +0200 | [diff] [blame] | 111 | - Alt+PrntScrn sends Sys_Req [Win] |
Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 112 | |
| 113 | - French layout (AZERTY and inverted shift behaviour for many keys) |
| 114 | |
| 115 | - Key repeat should not send repeated release events |
| 116 | |
| 117 | - Keys are released on loss of focus |
| 118 | |
| 119 | - Local layout changes are respected |
| 120 | |
| 121 | - Local input methods are disabled/enabled with focus |
| 122 | |
| 123 | - System keys should be grabbed in full screen |
| 124 | |
| 125 | The exact keys depends on the system and configuration, but it |
| 126 | is usually variants of these: |
| 127 | |
| 128 | - Alt+Tab |
| 129 | - Super (and Super+other) |
| 130 | - Multimedia keys |
| 131 | - Ctrl+Alt+Delete |
| 132 | - Ctrl+Esc |
| 133 | - F8-F12 |
| 134 | |
| 135 | - Virtual keyboard (as much of the above as is possible) |