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 | Arguments | Information |
|------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------|
| key-action
| 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. | |
keymap-changed
| attributes
: dictionary | The
number of clipboard requests waiting |
The 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 |