123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 |
- from __future__ import annotations
- from enum import Enum
- __all__ = [
- "Keys",
- "ALL_KEYS",
- ]
- class Keys(str, Enum):
- """
- List of keys for use in key bindings.
- Note that this is an "StrEnum", all values can be compared against
- strings.
- """
- value: str
- Escape = "escape" # Also Control-[
- ShiftEscape = "s-escape"
- ControlAt = "c-@" # Also Control-Space.
- ControlA = "c-a"
- ControlB = "c-b"
- ControlC = "c-c"
- ControlD = "c-d"
- ControlE = "c-e"
- ControlF = "c-f"
- ControlG = "c-g"
- ControlH = "c-h"
- ControlI = "c-i" # Tab
- ControlJ = "c-j" # Newline
- ControlK = "c-k"
- ControlL = "c-l"
- ControlM = "c-m" # Carriage return
- ControlN = "c-n"
- ControlO = "c-o"
- ControlP = "c-p"
- ControlQ = "c-q"
- ControlR = "c-r"
- ControlS = "c-s"
- ControlT = "c-t"
- ControlU = "c-u"
- ControlV = "c-v"
- ControlW = "c-w"
- ControlX = "c-x"
- ControlY = "c-y"
- ControlZ = "c-z"
- Control1 = "c-1"
- Control2 = "c-2"
- Control3 = "c-3"
- Control4 = "c-4"
- Control5 = "c-5"
- Control6 = "c-6"
- Control7 = "c-7"
- Control8 = "c-8"
- Control9 = "c-9"
- Control0 = "c-0"
- ControlShift1 = "c-s-1"
- ControlShift2 = "c-s-2"
- ControlShift3 = "c-s-3"
- ControlShift4 = "c-s-4"
- ControlShift5 = "c-s-5"
- ControlShift6 = "c-s-6"
- ControlShift7 = "c-s-7"
- ControlShift8 = "c-s-8"
- ControlShift9 = "c-s-9"
- ControlShift0 = "c-s-0"
- ControlBackslash = "c-\\"
- ControlSquareClose = "c-]"
- ControlCircumflex = "c-^"
- ControlUnderscore = "c-_"
- Left = "left"
- Right = "right"
- Up = "up"
- Down = "down"
- Home = "home"
- End = "end"
- Insert = "insert"
- Delete = "delete"
- PageUp = "pageup"
- PageDown = "pagedown"
- ControlLeft = "c-left"
- ControlRight = "c-right"
- ControlUp = "c-up"
- ControlDown = "c-down"
- ControlHome = "c-home"
- ControlEnd = "c-end"
- ControlInsert = "c-insert"
- ControlDelete = "c-delete"
- ControlPageUp = "c-pageup"
- ControlPageDown = "c-pagedown"
- ShiftLeft = "s-left"
- ShiftRight = "s-right"
- ShiftUp = "s-up"
- ShiftDown = "s-down"
- ShiftHome = "s-home"
- ShiftEnd = "s-end"
- ShiftInsert = "s-insert"
- ShiftDelete = "s-delete"
- ShiftPageUp = "s-pageup"
- ShiftPageDown = "s-pagedown"
- ControlShiftLeft = "c-s-left"
- ControlShiftRight = "c-s-right"
- ControlShiftUp = "c-s-up"
- ControlShiftDown = "c-s-down"
- ControlShiftHome = "c-s-home"
- ControlShiftEnd = "c-s-end"
- ControlShiftInsert = "c-s-insert"
- ControlShiftDelete = "c-s-delete"
- ControlShiftPageUp = "c-s-pageup"
- ControlShiftPageDown = "c-s-pagedown"
- BackTab = "s-tab" # shift + tab
- F1 = "f1"
- F2 = "f2"
- F3 = "f3"
- F4 = "f4"
- F5 = "f5"
- F6 = "f6"
- F7 = "f7"
- F8 = "f8"
- F9 = "f9"
- F10 = "f10"
- F11 = "f11"
- F12 = "f12"
- F13 = "f13"
- F14 = "f14"
- F15 = "f15"
- F16 = "f16"
- F17 = "f17"
- F18 = "f18"
- F19 = "f19"
- F20 = "f20"
- F21 = "f21"
- F22 = "f22"
- F23 = "f23"
- F24 = "f24"
- ControlF1 = "c-f1"
- ControlF2 = "c-f2"
- ControlF3 = "c-f3"
- ControlF4 = "c-f4"
- ControlF5 = "c-f5"
- ControlF6 = "c-f6"
- ControlF7 = "c-f7"
- ControlF8 = "c-f8"
- ControlF9 = "c-f9"
- ControlF10 = "c-f10"
- ControlF11 = "c-f11"
- ControlF12 = "c-f12"
- ControlF13 = "c-f13"
- ControlF14 = "c-f14"
- ControlF15 = "c-f15"
- ControlF16 = "c-f16"
- ControlF17 = "c-f17"
- ControlF18 = "c-f18"
- ControlF19 = "c-f19"
- ControlF20 = "c-f20"
- ControlF21 = "c-f21"
- ControlF22 = "c-f22"
- ControlF23 = "c-f23"
- ControlF24 = "c-f24"
- # Matches any key.
- Any = "<any>"
- # Special.
- ScrollUp = "<scroll-up>"
- ScrollDown = "<scroll-down>"
- CPRResponse = "<cursor-position-response>"
- Vt100MouseEvent = "<vt100-mouse-event>"
- WindowsMouseEvent = "<windows-mouse-event>"
- BracketedPaste = "<bracketed-paste>"
- SIGINT = "<sigint>"
- # For internal use: key which is ignored.
- # (The key binding for this key should not do anything.)
- Ignore = "<ignore>"
- # Some 'Key' aliases (for backwards-compatibility).
- ControlSpace = ControlAt
- Tab = ControlI
- Enter = ControlM
- Backspace = ControlH
- # ShiftControl was renamed to ControlShift in
- # 888fcb6fa4efea0de8333177e1bbc792f3ff3c24 (20 Feb 2020).
- ShiftControlLeft = ControlShiftLeft
- ShiftControlRight = ControlShiftRight
- ShiftControlHome = ControlShiftHome
- ShiftControlEnd = ControlShiftEnd
- ALL_KEYS: list[str] = [k.value for k in Keys]
- # Aliases.
- KEY_ALIASES: dict[str, str] = {
- "backspace": "c-h",
- "c-space": "c-@",
- "enter": "c-m",
- "tab": "c-i",
- # ShiftControl was renamed to ControlShift.
- "s-c-left": "c-s-left",
- "s-c-right": "c-s-right",
- "s-c-home": "c-s-home",
- "s-c-end": "c-s-end",
- }
|