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 |
| 41 | - Diaeresis |
| 42 | - Ring above |
| 43 | - Double acute |
| 44 | - Caron |
| 45 | - Cedilla |
| 46 | - Ogonek |
| 47 | - Ypogegrammeni |
| 48 | - Katakana voiced mark |
| 49 | - Katakana semi-voiced mark |
| 50 | - Dialytika tonos |
| 51 | - FIXME: Many more that we currently probably don't support |
| 52 | |
| 53 | - No composition on client |
| 54 | |
| 55 | - Modifiers: |
| 56 | |
Pierre Ossman | b6116dd | 2016-06-10 15:03:13 +0200 | [diff] [blame^] | 57 | X11: You can usually toggle Hyper/Super and Compose/Scroll_Lock using |
| 58 | XKB options. |
| 59 | |
Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 60 | - CapsLock, NumLock (sent but ignored by server) |
| 61 | - Shift, Ctrl |
| 62 | - Alt, AltGr, Super [Win, X11] (FIXME: AltGr broken on Win) |
| 63 | - Left/right identification (FIXME: broken for Shift on Win) |
| 64 | - CmdL => AltL, CmdR => SuperL, AltL => ModeSwitch, AltR => Level3Shift [Mac] |
Peter Åstrand (astrand) | f3ff0f1 | 2015-10-14 13:47:28 +0200 | [diff] [blame] | 65 | - Hyper sends Super [X11] |
Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 66 | |
| 67 | - CapsLock, Shift and AltGr affect symbol lookup |
| 68 | - NumLock affects symbol lookup [Win, X11] |
| 69 | - Ctrl does not affect symbol lookup |
| 70 | - Shift inverts NumLock behaviour [X11] |
| 71 | - Shift turns NumLock off, but not on [Win] (FIXME: fake Shifts also sent) |
| 72 | - CtrlL+AltR fake release [Win] |
| 73 | - Ctrl+Alt+any (note behaviour above though) |
| 74 | - Ctrl+AltGr+any (FIXME: broken on Win) |
| 75 | - "Shift press, A press, Shift release, A release" should not send "a release" |
| 76 | |
| 77 | - Numpad: |
| 78 | |
| 79 | - Numpad specific symbols are sent |
| 80 | - Affected by NumLock |
| 81 | - Decimal key should send Decimal for layouts with . as a symbol, and |
| 82 | Separator for layouts with , as a symbol |
| 83 | |
| 84 | - Multimedia keys: |
| 85 | |
| 86 | - Back, Forward, Refresh, Stop |
| 87 | - HomePage, Search, Favourites |
| 88 | - Mail, Calculator |
| 89 | - Volume up, down, mute |
| 90 | - Media next, previous, stop, play |
| 91 | - Sleep |
| 92 | - FIXME: probably more keys exist |
| 93 | |
| 94 | - Non-character keys: |
| 95 | |
| 96 | - F1-F24 |
| 97 | - Tab, Space, Backspace, Return |
| 98 | - LeftTab sends Tab |
| 99 | - Esc, PrntScrn, ScrollLock, Pause |
| 100 | - Insert, Delete, Home, End, PageUp, PageDown |
| 101 | - Arrow keys |
| 102 | - Menu |
Pierre Ossman | a7d3dc7 | 2014-09-30 17:03:28 +0200 | [diff] [blame] | 103 | - Alt+PrntScrn sends Sys_Req [Win] |
Pierre Ossman | efd4261 | 2014-09-17 13:55:51 +0200 | [diff] [blame] | 104 | |
| 105 | - French layout (AZERTY and inverted shift behaviour for many keys) |
| 106 | |
| 107 | - Key repeat should not send repeated release events |
| 108 | |
| 109 | - Keys are released on loss of focus |
| 110 | |
| 111 | - Local layout changes are respected |
| 112 | |
| 113 | - Local input methods are disabled/enabled with focus |
| 114 | |
| 115 | - System keys should be grabbed in full screen |
| 116 | |
| 117 | The exact keys depends on the system and configuration, but it |
| 118 | is usually variants of these: |
| 119 | |
| 120 | - Alt+Tab |
| 121 | - Super (and Super+other) |
| 122 | - Multimedia keys |
| 123 | - Ctrl+Alt+Delete |
| 124 | - Ctrl+Esc |
| 125 | - F8-F12 |
| 126 | |
| 127 | - Virtual keyboard (as much of the above as is possible) |