From 16c90550c6b0604b1194d60cfa1389c600252ad3 Mon Sep 17 00:00:00 2001 From: Samir Mlika Date: Wed, 29 Apr 2026 06:52:54 +0200 Subject: [PATCH 1/2] feat(agent-os): add keyboard key/modifier aliases and Playwright mappings --- src/askui/tools/agent_os.py | 63 ++++++++++++++++++++++++++ src/askui/tools/playwright/agent_os.py | 51 +++++++++++++++++++++ 2 files changed, 114 insertions(+) diff --git a/src/askui/tools/agent_os.py b/src/askui/tools/agent_os.py index e90d5491..c10df7d1 100644 --- a/src/askui/tools/agent_os.py +++ b/src/askui/tools/agent_os.py @@ -23,9 +23,16 @@ ModifierKey = Literal[ "command", + "os_modifier", "alt", + "alt_left", + "alt_right", "control", + "control_left", + "control_right", "shift", + "shift_left", + "shift_right", "right_shift", ] """Modifier keys for keyboard actions.""" @@ -36,14 +43,27 @@ "enter", "tab", "escape", + "insert", "up", + "arrow_up", "down", + "arrow_down", "right", + "arrow_right", "left", + "arrow_left", "home", "end", "pageup", + "page_up", "pagedown", + "page_down", + "capslock", + "print", + "snapshot", + "printscreen", + "context_menu", + "menu", "f1", "f2", "f3", @@ -56,6 +76,49 @@ "f10", "f11", "f12", + "f13", + "f14", + "f15", + "f16", + "f17", + "f18", + "f19", + "f20", + "f21", + "f22", + "f23", + "f24", + "numpad_lock", + "numpad_0", + "numpad_1", + "numpad_2", + "numpad_3", + "numpad_4", + "numpad_5", + "numpad_6", + "numpad_7", + "numpad_8", + "numpad_9", + "numpad_+", + "numpad_-", + "numpad_*", + "numpad_/", + "numpad_.", + "media_volume_mute", + "audio_mute", + "media_volume_down", + "audio_vol_down", + "media_volume_up", + "audio_vol_up", + "media_stop", + "audio_stop", + "media_play_or_pause", + "audio_play", + "audio_pause", + "media_prev", + "audio_prev", + "media_next", + "audio_next", "space", "0", "1", diff --git a/src/askui/tools/playwright/agent_os.py b/src/askui/tools/playwright/agent_os.py index f4a4b064..c4d14d88 100644 --- a/src/askui/tools/playwright/agent_os.py +++ b/src/askui/tools/playwright/agent_os.py @@ -393,9 +393,16 @@ def _convert_key(self, key: PcKey | ModifierKey) -> str: # Map our modifier keys to Playwright format modifier_map: dict[PcKey | ModifierKey, str] = { "command": "Meta", + "os_modifier": "Meta", "alt": "Alt", + "alt_left": "Alt", + "alt_right": "AltGraph", "control": "Control", + "control_left": "Control", + "control_right": "Control", "shift": "Shift", + "shift_left": "Shift", + "shift_right": "Shift", "right_shift": "Shift", } @@ -410,14 +417,58 @@ def _convert_key(self, key: PcKey | ModifierKey) -> str: "enter": "Enter", "tab": "Tab", "escape": "Escape", + "insert": "Insert", "up": "ArrowUp", + "arrow_up": "ArrowUp", "down": "ArrowDown", + "arrow_down": "ArrowDown", "right": "ArrowRight", + "arrow_right": "ArrowRight", "left": "ArrowLeft", + "arrow_left": "ArrowLeft", "home": "Home", "end": "End", "pageup": "PageUp", + "page_up": "PageUp", "pagedown": "PageDown", + "page_down": "PageDown", + "capslock": "CapsLock", + "print": "PrintScreen", + "snapshot": "PrintScreen", + "printscreen": "PrintScreen", + "context_menu": "ContextMenu", + "menu": "ContextMenu", + "numpad_lock": "NumLock", + "numpad_0": "Numpad0", + "numpad_1": "Numpad1", + "numpad_2": "Numpad2", + "numpad_3": "Numpad3", + "numpad_4": "Numpad4", + "numpad_5": "Numpad5", + "numpad_6": "Numpad6", + "numpad_7": "Numpad7", + "numpad_8": "Numpad8", + "numpad_9": "Numpad9", + "numpad_+": "NumpadAdd", + "numpad_-": "NumpadSubtract", + "numpad_*": "NumpadMultiply", + "numpad_/": "NumpadDivide", + "numpad_.": "NumpadDecimal", + "media_volume_mute": "AudioVolumeMute", + "audio_mute": "AudioVolumeMute", + "media_volume_down": "AudioVolumeDown", + "audio_vol_down": "AudioVolumeDown", + "media_volume_up": "AudioVolumeUp", + "audio_vol_up": "AudioVolumeUp", + "media_stop": "MediaStop", + "audio_stop": "MediaStop", + "media_play_or_pause": "MediaPlayPause", + "audio_play": "MediaPlayPause", + "audio_pause": "MediaPlayPause", + "media_prev": "MediaTrackPrevious", + "audio_prev": "MediaTrackPrevious", + "media_next": "MediaTrackNext", + "audio_next": "MediaTrackNext", "space": " ", } From bb5f108f34d08031862fe0323c0ab6cadb9c2e5b Mon Sep 17 00:00:00 2001 From: Samir Mlika Date: Wed, 29 Apr 2026 07:54:13 +0200 Subject: [PATCH 2/2] keep only numpad keys --- src/askui/tools/agent_os.py | 47 -------------------------- src/askui/tools/playwright/agent_os.py | 35 ------------------- 2 files changed, 82 deletions(-) diff --git a/src/askui/tools/agent_os.py b/src/askui/tools/agent_os.py index c10df7d1..2fbbb51b 100644 --- a/src/askui/tools/agent_os.py +++ b/src/askui/tools/agent_os.py @@ -23,16 +23,9 @@ ModifierKey = Literal[ "command", - "os_modifier", "alt", - "alt_left", - "alt_right", "control", - "control_left", - "control_right", "shift", - "shift_left", - "shift_right", "right_shift", ] """Modifier keys for keyboard actions.""" @@ -43,27 +36,14 @@ "enter", "tab", "escape", - "insert", "up", - "arrow_up", "down", - "arrow_down", "right", - "arrow_right", "left", - "arrow_left", "home", "end", "pageup", - "page_up", "pagedown", - "page_down", - "capslock", - "print", - "snapshot", - "printscreen", - "context_menu", - "menu", "f1", "f2", "f3", @@ -76,18 +56,6 @@ "f10", "f11", "f12", - "f13", - "f14", - "f15", - "f16", - "f17", - "f18", - "f19", - "f20", - "f21", - "f22", - "f23", - "f24", "numpad_lock", "numpad_0", "numpad_1", @@ -104,21 +72,6 @@ "numpad_*", "numpad_/", "numpad_.", - "media_volume_mute", - "audio_mute", - "media_volume_down", - "audio_vol_down", - "media_volume_up", - "audio_vol_up", - "media_stop", - "audio_stop", - "media_play_or_pause", - "audio_play", - "audio_pause", - "media_prev", - "audio_prev", - "media_next", - "audio_next", "space", "0", "1", diff --git a/src/askui/tools/playwright/agent_os.py b/src/askui/tools/playwright/agent_os.py index c4d14d88..b0133177 100644 --- a/src/askui/tools/playwright/agent_os.py +++ b/src/askui/tools/playwright/agent_os.py @@ -393,16 +393,9 @@ def _convert_key(self, key: PcKey | ModifierKey) -> str: # Map our modifier keys to Playwright format modifier_map: dict[PcKey | ModifierKey, str] = { "command": "Meta", - "os_modifier": "Meta", "alt": "Alt", - "alt_left": "Alt", - "alt_right": "AltGraph", "control": "Control", - "control_left": "Control", - "control_right": "Control", "shift": "Shift", - "shift_left": "Shift", - "shift_right": "Shift", "right_shift": "Shift", } @@ -417,27 +410,14 @@ def _convert_key(self, key: PcKey | ModifierKey) -> str: "enter": "Enter", "tab": "Tab", "escape": "Escape", - "insert": "Insert", "up": "ArrowUp", - "arrow_up": "ArrowUp", "down": "ArrowDown", - "arrow_down": "ArrowDown", "right": "ArrowRight", - "arrow_right": "ArrowRight", "left": "ArrowLeft", - "arrow_left": "ArrowLeft", "home": "Home", "end": "End", "pageup": "PageUp", - "page_up": "PageUp", "pagedown": "PageDown", - "page_down": "PageDown", - "capslock": "CapsLock", - "print": "PrintScreen", - "snapshot": "PrintScreen", - "printscreen": "PrintScreen", - "context_menu": "ContextMenu", - "menu": "ContextMenu", "numpad_lock": "NumLock", "numpad_0": "Numpad0", "numpad_1": "Numpad1", @@ -454,21 +434,6 @@ def _convert_key(self, key: PcKey | ModifierKey) -> str: "numpad_*": "NumpadMultiply", "numpad_/": "NumpadDivide", "numpad_.": "NumpadDecimal", - "media_volume_mute": "AudioVolumeMute", - "audio_mute": "AudioVolumeMute", - "media_volume_down": "AudioVolumeDown", - "audio_vol_down": "AudioVolumeDown", - "media_volume_up": "AudioVolumeUp", - "audio_vol_up": "AudioVolumeUp", - "media_stop": "MediaStop", - "audio_stop": "MediaStop", - "media_play_or_pause": "MediaPlayPause", - "audio_play": "MediaPlayPause", - "audio_pause": "MediaPlayPause", - "media_prev": "MediaTrackPrevious", - "audio_prev": "MediaTrackPrevious", - "media_next": "MediaTrackNext", - "audio_next": "MediaTrackNext", "space": " ", }