Skip to content
Prev Previous commit
Next Next commit
Merge branch 'main' into fix-pyrepl-dead-keys
  • Loading branch information
SimonvBez authored Jan 12, 2025
commit ebe00f0362e5eb658f41cebcf3b68cc5df3921fa
39 changes: 22 additions & 17 deletions Lib/_pyrepl/windows_console.py
Original file line number Diff line number Diff line change
Expand Up @@ -427,30 +427,35 @@ def get_event(self, block: bool = True) -> Event | None:

return event

def _event_from_keyevent(self, keyevent: KeyEvent) -> Event | None:
key = keyevent.uChar.UnicodeChar
def _event_from_keyevent(self, key_event: KeyEvent) -> Event | None:
raw_key = key = key_event.uChar.UnicodeChar

if keyevent.uChar.UnicodeChar == "\r":
# Make enter make unix-like
if key == "\r":
# Make enter unix-like
return Event(evt="key", data="\n", raw=b"\n")
elif keyevent.wVirtualKeyCode == 8:
elif key_event.wVirtualKeyCode == 8:
# Turn backspace directly into the command
return Event(
evt="key",
data="backspace",
raw=keyevent.uChar.UnicodeChar,
)
elif keyevent.uChar.UnicodeChar == "\x00":
key = "backspace"
elif key == "\x00":
# Handle special keys like arrow keys and translate them into the appropriate command
code = VK_MAP.get(keyevent.wVirtualKeyCode)
if code:
return Event(
evt="key", data=code, raw=keyevent.uChar.UnicodeChar
)
key = VK_MAP.get(key_event.wVirtualKeyCode)
if key:
if key_event.dwControlKeyState & CTRL_ACTIVE:
key = f"ctrl {key}"
elif key_event.dwControlKeyState & ALT_ACTIVE:
# queue the key, return the meta command
self.event_queue.insert(0, Event(evt="key", data=key, raw=key))
return Event(evt="key", data="\033") # keymap.py uses this for meta
return Event(evt="key", data=key, raw=key)

return None

return Event(evt="key", data=key, raw=keyevent.uChar.UnicodeChar)
if key_event.dwControlKeyState & ALT_ACTIVE:
# queue the key, return the meta command
self.event_queue.insert(0, Event(evt="key", data=key, raw=raw_key))
return Event(evt="key", data="\033") # keymap.py uses this for meta

return Event(evt="key", data=key, raw=raw_key)

def push_char(self, char: int | bytes) -> None:
"""
Expand Down
You are viewing a condensed version of this merge commit. You can view the full changes here.