For usage related information, see keyboard feature.
The prefix for all packets and capabilities should be keyboard - unfortunately, this work is not complete yet.
| Component | Link |
|---|---|
| client | xpra.client.subsystem.keyboard |
| client connection | xpra.server.source.keyboard |
| server | xpra.server.subsystem.keyboard |
xpra.keyboard contains the platform independent code, mostly constants.
| Platform | Link |
|---|---|
posix |
xpra.platform.posix.keyboard for both Wayland and X11 |
win32 |
xpra.platform.win32.keyboard |
MacOS |
xpra.platform.darwin.keyboard |
The client should expose the following capabilities in its hello packet:
| Capability | Value | Information |
|---|---|---|
keyboard |
enabled : boolean |
Whether keyboard support is enabled |
ibus |
enabled : boolean |
The client supports ibus layouts |
modifiers |
list of strings | The names of the modifier keys |
keymap |
dictionary | Extensive keyboard definition |
key_repeat |
pair of integers | The key repeat delay and interval, in milliseconds |
keyboard_sync |
enabled : boolean |
Legacy |
The keymap may also be updated by the client at any time using the keyboard-layout packet.
To save space in the initial hello packet, the full keymap may be sent separately afterwards.
| Packet Type | Direction | Arguments | Information |
|---|---|---|---|
keyboard-event |
client to server | keyname : string, pressed : boolean, modifiers : list of strings, keyval : integer, string : string, keycode : integer, group : integer |
The client should try to populate as many attributes as possible. |
keyboard-config |
client to server | attributes : dictionary |
Send an updated keymap to the server |
keyboard-sync |
client to server | enabled : boolean |
Enable or disable keyboard synchronization |
The keyboard-config attributes should contain a keymap key with another dictionary.
| Attribute | Data Type | Description | Example values | |
|---|---|---|---|---|
backend |
string | The type of keyboard backend requested | ibus |
|
layout |
string | The main layout requested | us |
|
layouts |
list of strings | The layouts that should be enabled | us,gb |
|
variant |
string | The main layout variant | nodeadkeys |
|
variants |
list of strings | The other layout variants that should be enabled | - | |
raw |
boolean | When raw mode is enabled, the server does not perform any translation | false |
|
sync |
boolean | Legacy flag | false |
|
query_struct |
dictionary | Legacy X11 keyboard definition | {"rules": "evdev", "model": "pc105+inet", "layout": "gb"} |
|
mod_meanings |
dictionary | Mapping from short modifier codes to modifier names | ||
mod_managed |
list of strings | Legacy | ||
mod_pointermissing |
list of strings | List of modifiers that may be missing from pointer packets | ("CapsLock", "NumLock") |
|
keycodes |
list of keycode definitions | See below | - | |
x11_keycodes |
map of keycode integers to lists of strings |
Each entry in the list of keycodes is made of:
| Attribute | Data Type | Description |
|---|---|---|
keyval |
integer | platform specific key value |
name |
string | name of the key |
keycode |
integer | platform specific key code |
group |
integer | keyboard layout group |
level |
integer | keyboard layout level |