Skip to content
This repository was archived by the owner on Sep 28, 2025. It is now read-only.

Commit 6d4e9e8

Browse files
authored
Merge pull request #16 from vlrevolution/main
2 parents 4300aed + 005e837 commit 6d4e9e8

File tree

2 files changed

+82
-79
lines changed

2 files changed

+82
-79
lines changed

cdp_patches/input/__init__.py

Lines changed: 78 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -94,84 +94,84 @@ class WinKeyboardCodes:
9494
# From: https://github.com/python-xlib/python-xlib/blob/4e8bbf8fc4941e5da301a8b3db8d27e98de68666/Xlib/keysymdef/miscellany.py
9595
@dataclass
9696
class LinuxKeyboardCodes:
97-
SPACE: str = "space"
98-
TAB: str = "Tab"
99-
ENTER: str = "Return"
100-
BACKSPACE: str = "BackSpace"
101-
DELETE: str = "Delete"
102-
ESCAPE: str = "Escape"
103-
LEFT_ARROW: str = "Left"
104-
RIGHT_ARROW: str = "Right"
105-
UP_ARROW: str = "Up"
106-
DOWN_ARROW: str = "Down"
107-
HOME: str = "Home"
108-
END: str = "End"
109-
PAGE_UP: str = "Page_Up"
110-
PAGE_DOWN: str = "Page_Down"
111-
PRINT_SCREEN: str = "Print"
112-
SCROLLLOCK: str = "Scroll_Lock"
113-
CAPSLOCK: str = "Caps_Lock"
114-
NUMLOCK: str = "Num_Lock"
115-
F1: str = "F1"
116-
F2: str = "F2"
117-
F3: str = "F3"
118-
F4: str = "F4"
119-
F5: str = "F5"
120-
F6: str = "F6"
121-
F7: str = "F7"
122-
F8: str = "F8"
123-
F9: str = "F9"
124-
F10: str = "F10"
125-
F11: str = "F11"
126-
F12: str = "F12"
127-
F13: str = "F13"
128-
F14: str = "F14"
129-
F15: str = "F15"
130-
F16: str = "F16"
131-
F17: str = "F17"
132-
F18: str = "F18"
133-
F19: str = "F19"
134-
F20: str = "F20"
135-
F21: str = "F21"
136-
F22: str = "F22"
137-
F23: str = "F23"
138-
F24: str = "F24"
139-
INSERT: str = "Insert"
140-
CONTROL: str = "Control_L" # No normal Control -> Alias
141-
SHIFT: str = "Shift_L" # No normal Shift -> Alias
142-
ALT: str = "Alt_L" # No normal Alt -> Alias
143-
CANCEL: str = "Cancel"
144-
CLEAR: str = "Clear"
145-
EXECUTE: str = "Execute"
146-
KANA: str = "Kana_Lock"
147-
KANJI: str = "Kanji"
148-
LCONTROL: str = "Control_L"
149-
LMENU: str = "Menu"
150-
LSHIFT: str = "Shift_L"
151-
NEXT: str = "Next"
152-
PAUSE: str = "Pause"
153-
PRIOR: str = "Prior"
154-
RCONTROL: str = "Control_R"
155-
RETURN: str = "Return"
156-
RSHIFT: str = "Shift_R"
157-
SELECT: str = "Select"
158-
MENU_RIGHT: str = "Menu" # No right Menu -> Alias
159-
ADD: str = "KP_Add"
160-
SUBTRACT: str = "KP_Subtract"
161-
DECIMAL: str = "KP_Decimal"
162-
MULTIPLY: str = "KP_Multiply"
163-
DIVIDE: str = "KP_Divide"
164-
SEPARATOR: str = "KP_Separator"
165-
NUMPAD0: str = "KP_0"
166-
NUMPAD1: str = "KP_1"
167-
NUMPAD2: str = "KP_2"
168-
NUMPAD3: str = "KP_3"
169-
NUMPAD4: str = "KP_4"
170-
NUMPAD5: str = "KP_5"
171-
NUMPAD6: str = "KP_6"
172-
NUMPAD7: str = "KP_7"
173-
NUMPAD8: str = "KP_8"
174-
NUMPAD9: str = "KP_9"
97+
SPACE: str = "<<space>>"
98+
TAB: str = "<<Tab>>"
99+
ENTER: str = "<<Return>>"
100+
BACKSPACE: str = "<<BackSpace>>"
101+
DELETE: str = "<<Delete>>"
102+
ESCAPE: str = "<<Escape>>"
103+
LEFT_ARROW: str = "<<Left>>"
104+
RIGHT_ARROW: str = "<<Right>>"
105+
UP_ARROW: str = "<<Up>>"
106+
DOWN_ARROW: str = "<<Down>>"
107+
HOME: str = "<<Home>>"
108+
END: str = "<<End>>"
109+
PAGE_UP: str = "<<Page_Up>>"
110+
PAGE_DOWN: str = "<<Page_Down>>"
111+
PRINT_SCREEN: str = "<<Print>>"
112+
SCROLLLOCK: str = "<<Scroll_Lock>>"
113+
CAPSLOCK: str = "<<Caps_Lock>>"
114+
NUMLOCK: str = "<<Num_Lock>>"
115+
F1: str = "<<F1>>"
116+
F2: str = "<<F2>>"
117+
F3: str = "<<F3>>"
118+
F4: str = "<<F4>>"
119+
F5: str = "<<F5>>"
120+
F6: str = "<<F6>>"
121+
F7: str = "<<F7>>"
122+
F8: str = "<<F8>>"
123+
F9: str = "<<F9>>"
124+
F10: str = "<<F10>>"
125+
F11: str = "<<F11>>"
126+
F12: str = "<<F12>>"
127+
F13: str = "<<F13>>"
128+
F14: str = "<<F14>>"
129+
F15: str = "<<F15>>"
130+
F16: str = "<<F16>>"
131+
F17: str = "<<F17>>"
132+
F18: str = "<<F18>>"
133+
F19: str = "<<F19>>"
134+
F20: str = "<<F20>>"
135+
F21: str = "<<F21>>"
136+
F22: str = "<<F22>>"
137+
F23: str = "<<F23>>"
138+
F24: str = "<<F24>>"
139+
INSERT: str = "<<Insert>>"
140+
CONTROL: str = "<<Control_L>>" # No normal Control -> Alias
141+
SHIFT: str = "<<Shift_L>>" # No normal Shift -> Alias
142+
ALT: str = "<<Alt_L>>" # No normal Alt -> Alias
143+
CANCEL: str = "<<Cancel>>"
144+
CLEAR: str = "<<Clear>>"
145+
EXECUTE: str = "<<Execute>>"
146+
KANA: str = "<<Kana_Lock>>"
147+
KANJI: str = "<<Kanji>>"
148+
LCONTROL: str = "<<Control_L>>"
149+
LMENU: str = "<<Menu>>"
150+
LSHIFT: str = "<<Shift_L>>"
151+
NEXT: str = "<<Next>>"
152+
PAUSE: str = "<<Pause>>"
153+
PRIOR: str = "<<Prior>>"
154+
RCONTROL: str = "<<Control_R>>"
155+
RETURN: str = "<<Return>>"
156+
RSHIFT: str = "<<Shift_R>>"
157+
SELECT: str = "<<Select>>"
158+
MENU_RIGHT: str = "<<Menu>>" # No right Menu -> Alias
159+
ADD: str = "<<KP_Add>>"
160+
SUBTRACT: str = "<<KP_Subtract>>"
161+
DECIMAL: str = "<<KP_Decimal>>"
162+
MULTIPLY: str = "<<KP_Multiply>>"
163+
DIVIDE: str = "<<KP_Divide>>"
164+
SEPARATOR: str = "<<KP_Separator>>"
165+
NUMPAD0: str = "<<KP_0>>"
166+
NUMPAD1: str = "<<KP_1>>"
167+
NUMPAD2: str = "<<KP_2>>"
168+
NUMPAD3: str = "<<KP_3>>"
169+
NUMPAD4: str = "<<KP_4>>"
170+
NUMPAD5: str = "<<KP_5>>"
171+
NUMPAD6: str = "<<KP_6>>"
172+
NUMPAD7: str = "<<KP_7>>"
173+
NUMPAD8: str = "<<KP_8>>"
174+
NUMPAD9: str = "<<KP_9>>"
175175

176176

177177
KeyboardCodes = WinKeyboardCodes if is_windows else LinuxKeyboardCodes

cdp_patches/input/os_base/linux.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,10 +254,13 @@ def scroll(self, direction: Literal["up", "down", "left", "right"], amount: int)
254254

255255
def send_keystrokes(self, text: str) -> None:
256256
self.ensure_window()
257-
selective_regex = re.compile(r"{[^{}]*}|.") # Only for redundancy of windows implementations
257+
selective_regex = re.compile(r"<<[^>]*>>|{[^{}]*}|.") # Now accounting for both windows {} and linux <<>> (not part of official keycodes) keycodes
258258
shift_keycode = self.display.keysym_to_keycode(0xFFE1) # Shift Key (0xFFE1)
259259

260260
for key in selective_regex.findall(text):
261+
if key.startswith("<<") and key.endswith(">>"):
262+
key = key[2:-2] # Remove << and >> from linux keycodes
263+
261264
shifted_key = key.isupper() or key in self.shifted_chars
262265
if key in symbol_dict:
263266
key = symbol_dict[key]

0 commit comments

Comments
 (0)