diff options
Diffstat (limited to 'doc/protocols')
-rw-r--r-- | doc/protocols | 326 |
1 files changed, 0 insertions, 326 deletions
diff --git a/doc/protocols b/doc/protocols index 6270456..0e3936f 100644 --- a/doc/protocols +++ b/doc/protocols @@ -285,329 +285,3 @@ Compulsivity: required if supporting `Command: add-tray-icon` --------------------------------------------------------------------- -Command: key-sent - Announce a keyboard input event - -Required header: Keyboard - Any string that uniquely identifies the keyboard - Purpose: Enable multi-keyboard aware programs and give at - least on keyboard per seat in a multi-seat environment - Note: mds-kkbd uses `kernel` to indicate that it uses the kernel - and thus lumps together all keyboards. - -Required header: Released - `yes` if the key was released - `no` otherwise, that is, held down or pressed - Note: pause/break is automatically released directly after it - has been pressed. This is feature built into keyboards - and servers should not try to circumvent this - -Required header: Keycode - An unsigned 14-bit integer identifying the key, may be remapped - -Optional header: Scancode - Either an unsigned 7-bit integer or a single blank space - separated trio of unsigned 7-bit integers, identifying the key. - This is the scancode sent from the keyboard and optionally - unified by the keyboard driver, however with the typed/released - bit zeroed out. This may not be remapped. - -Optional header: Modifiers - Single blank space separated list of active modifiers: - shift) Shift (level 2) - ctrl) Control - alt) Alternative/Option - altgr) Alternative Graphic (level 3) - lvl*) * may be any 2ⁿ + 1 integer with 1 < n < 20 - super) Super - hyper) Hyper - ultra) Ultra - caps) Caps (usually a lock key) - num) Num (usually a lock key) - scrl) Scroll (usually a lock key) - top) Top (historical) - front) Front (historical) - greek) Greek (historical) - compose) Compose (rare, it is usally a dead key) - Any key that has been locked should be prefix with `+`, - if the key has been locked by nullified with non-lock - modifier it should be prefixed with a `-`. - If no modifier is active or has been nullified, `none` - should be used. - -Optional header: Key - A textual representation of the key that has been typed or - released, as mapped by the keyboard layout. - esc) Escape - f*) F* where * is any integer - sysrq) System Request/Print Screen - scrl) Scroll (lock) - break) Break/Pause - backspace) Backspace - tab) Tab - return) Return/Enter - space) Blank Space - menu) Application Menu - ins) Insert - home) Home - pgup) Page Up - del) Delete - end) End - pgdown) Page Down - up) Up Arrow - left) Left Arrow - down) Down Arrow - right) Right Arrow - shift) Shift (level 2) - begin) Begin (keypad 5 in nagivation mode) - ctrl) Control - alt) Alternative/Option - altgr) Alternative Graphic (level 3) - lvl*) * may be any 2ⁿ + 1 integer with 1 < n < 20 - super) Super - hyper) Hyper - ultra) Ultra - caps) Caps (usually a lock key) - num) Num (usually a lock key) - scrl) Scroll (usually a lock key) - top) Top (historical) - front) Front (historical) - greek) Greek (historical) - compose) Compose (usally a dead key) - hexcompose) Hex-Compose (usally a dead key) - (use to create aribitrary characters) - longhexcompose) Long Hex-Compose (usally a dead key) - (variant of hexcompose for longer codepoints) - modelock) Mode Lock - letter *) * may be any UTF-8 encoded letter - Keys that lock/unlock a modifer should be suffixed with a - blank space and a `lock`. If the key is a dead key (even - the compose key) should use `dead` instead. A position, - either `left`, `right`, `keypad` or an index, followed by a - blank space, should prefix any key that occurs on multiple - position on the keyboard, unless it only appears on the - keypad once and once not on the keypad. Keys without any - meaning should be identified as `unknown`. Modifiers and - dead keys should not affect the value. - -Optional header: Characters - UTF-8 encoded string that has been written - -Purpose: Enable the user to use a keyboard, physical or on-screen -Purpose: Enable programs to send keys as part of a script or - a reply of a recorded session - -Compulsivity: highly-recommended, a computer is as good as useless - without a keyboard - -Reference implementation: kkbd -Reference implementation: kbd -Reference implementation: keytrans - ---------------------------------------------------------------------- - -Command: enumerate-keyboards - List available keyboards - -Required header: Client ID - Your ID, provided by `ID assignment` - in response to `Command: assign-id` - -Instructions: This message must be consumed by the first server - that receives it and implements support for it, - and then send out a `Command: keyboard-enumeration` - populated with the keyboard it provide as named - in the `Keyboard` header for protocols such as - `Command: key-sent` - -Purpose: Make it possible for clients to list all available keyboards - so that can be configured individually - -Compulsivity: optional - -Reference implementation: kkbd -Reference implementation: kbd - ---------------------------------------------------------------------- - -Command: keyboard-enumeration - Response to `enumerate-keyboards` - -Required header: To - The ID received under `Client ID` in the - `Command: enumerate-keyboards` message that triggered this - message to be broadcasted - -Required header: In response to - The ID received under `Message ID` in the - `Command: enumerate-keyboards` message that triggered this - message to be broadcasted - -Required header: Length - Length of the message - -Message: New line separated list of available keyboards - -Instructions: All keyboard servers should listen for this message - and append all keyboards it implement to the message - once recieved - -Purpose: Make it possible for clients to list all available keyboards - so that can be configured individually - -Compulsivity: required if you implement `Command: enumerate-keyboards` - -Reference implementation: kkbd -Reference implementation: kbd - ---------------------------------------------------------------------- - -Command: set-keyboard-leds - Activate and deactivate LED:s on a keyboard - -Required header: Active - LED:s that should be turned on. - If a LED is listed here but not in `Mask` that LED - should be turned on if it is off, and turned off - if it is on. - The value is a single blank space separated list of LED:s: - num) Num lock - caps) Caps lock - scroll) Scroll lock - compose) Compose - Unsupported LED:s should be silently ignored. - -Required header: Mask - LED:s listed here that do not appear in `Active` - should be turned off. - The value of this header follows the same rules - as for `Active`. - -Optional header: Keyboard - A string that identifies the keyboard that should be - affected. If omitted all keyboard are affected. - -Purpose: Enable keyboard layout servers to activate and deactive - LED:s on the keyboard to indicate active locks - -Compulsivity: optional - -Reference implementation: kkbd -Reference implementation: kbd -Reference implementation: kbdtrans - ---------------------------------------------------------------------- - -Command: get-keyboard-leds - List exisiting LED:s on a keyboard and their state - -Required header: Client ID - Your ID, provided by `ID assignment` - in response to `Command: assign-id` - -Required header: Keyboard - A string that identifies the keyboard that should be - affected - -Response: The server implementing support for - `Command: get-keyboard-leds` for the keyboard indicated - by `Keyboard` should send a message back to the client - indicated by `Client ID` (using the `To` header) with - the headers: - Active: list of currently turned on LED:s - Present: list of LED:s that the server believes - to be present on the keyboards - Both of these headers followes the rules of the - `Active` header under `Command: set-keyboard-leds` - -Purpose: Enable keyboard layout servers to automatically - set active locks when the server starts based on - currently active LED:s - -Compulsivity: recommended, required if you implement support for - `Command: set-keyboard-leds`. If you do not support - this protocol servers and clients and stall when - they try to get the active LED:s - -Reference implementation: kkbd -Reference implementation: kbd -Reference implementation: kbdtrans - ---------------------------------------------------------------------- - -Command: keycode-map - Remap keyboard keycodes and query current mapping - -Required header: Action - remap) Remap keys - reset) Reset all mappings to identity mapping - query) Query mapping - Each affected server will send a message format - like that of `Action: remap` with current mapping - that are not identity mappings - -Optional header: Keyboard - A string that identifies the keyboard that should be - affected. If omitted all keyboard are affected. - -Conditionally required header: Client ID - Required if: `Action: query` - Your ID, provided by `ID assignment` - in response to `Command: assign-id` - -Conditionally optional header: Length - Available and optional if: `Action: remap` - The length of the message - -Message: Each line contains contains two single space delimited numbers, - the first number is the keycode as determined by the scancode, - the second number is keycode that scancode should generate. - For example, `1 1` resets Escape to be mapped to Escape, - and `1 59` remaps Escape to F1, while `1 59\n59 1`, where - `\n` is a new lone, swaps Escape and F1. - -Purpose: Enable the user to swap or replace keys on the keyboard -Purpose: Enable the user manually correct an incorrectly mapped keyboard - -Compulsivity: optional - -Reference implementation: kkbd -Reference implementation: kbd - ---------------------------------------------------------------------- - -Command: new-keyboard - Announce the existance of a new keyboard - -Required header: Length - The length of the message - -Message: List of strings that identifies the keyboards - that have been added. - -Purpose: Enable servers and clients to detect new keyboards - -Compulsivity: recommended - -Reference implementation: kkbd -Reference implementation: kbd - ---------------------------------------------------------------------- - -Command: old-keyboard - Announce the removal of an old keyboard - -Required header: Length - The length of the message - -Message: List of strings that identifies the keyboards - that have been removed. - -Purpose: Enable servers and clients to detect removal of keyboards - -Compulsivity: recommended - -Reference implementation: kbd - ---------------------------------------------------------------------- - |