aboutsummaryrefslogtreecommitdiffstats
path: root/doc/protocols
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--doc/protocols112
1 files changed, 112 insertions, 0 deletions
diff --git a/doc/protocols b/doc/protocols
index a4147cd..b0649aa 100644
--- a/doc/protocols
+++ b/doc/protocols
@@ -362,3 +362,115 @@ 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 greater than 4
+ super) Super
+ hyper) Hyper
+ 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)
+ ctrl) Control
+ alt) Alternative/Option
+ altgr) Alternative Graphic (level 3)
+ lvl*) * may be any 2ⁿ + 1 integer greater than 4
+ super) Super
+ hyper) Hyper
+ 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)
+ 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` or `keypad`, followed by a blank
+ space, should prefix any key that occurs on multiple
+ position on the keyboard. 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
+
+---------------------------------------------------------------------
+