Forward keypress bug fixed.
This commit is contained in:
@@ -4,5 +4,5 @@
|
||||
# Fenrir TTY screen reader
|
||||
# By Chrys, Storm Dragon, and contributors.
|
||||
|
||||
version = "2026.05.13"
|
||||
version = "2026.05.14"
|
||||
code_name = "testing"
|
||||
|
||||
@@ -426,10 +426,13 @@ class driver(inputDriver):
|
||||
return names
|
||||
|
||||
def keysym_to_name(self, keysym):
|
||||
keysym_name = XK.keysym_to_string(keysym)
|
||||
if keysym_name:
|
||||
keysym_name = KEYSYM_NAME_MAP.get(keysym)
|
||||
if keysym_name and keysym >= 0xFF00:
|
||||
return keysym_name
|
||||
return KEYSYM_NAME_MAP.get(keysym)
|
||||
keysym_string = XK.keysym_to_string(keysym)
|
||||
if keysym_string:
|
||||
return keysym_string
|
||||
return keysym_name
|
||||
|
||||
def keysym_name_to_key_name(self, keysym_name):
|
||||
if not keysym_name:
|
||||
|
||||
@@ -351,7 +351,7 @@ class driver(screenDriver):
|
||||
)
|
||||
|
||||
def synthesize_backspace_shortcut(self, msg_bytes, event_queue):
|
||||
if msg_bytes not in [b"\x7f", b"\x08"]:
|
||||
if not self.is_backspace_shortcut_sequence(msg_bytes):
|
||||
return False
|
||||
if "KEY_FENRIR" not in self.env["input"]["curr_input"]:
|
||||
return False
|
||||
@@ -380,6 +380,27 @@ class driver(screenDriver):
|
||||
)
|
||||
return True
|
||||
|
||||
def is_backspace_shortcut_sequence(self, msg_bytes):
|
||||
if msg_bytes in [b"\x7f", b"\x08"]:
|
||||
return True
|
||||
try:
|
||||
sequence = msg_bytes.decode("ascii")
|
||||
except UnicodeDecodeError:
|
||||
return False
|
||||
if not sequence.startswith("\x1b["):
|
||||
return False
|
||||
if sequence.endswith("~"):
|
||||
parts = sequence[2:-1].split(";")
|
||||
if parts[0] == "3":
|
||||
return True
|
||||
if parts[0] == "27" and parts[-1] in ["8", "127"]:
|
||||
return True
|
||||
elif sequence.endswith("u"):
|
||||
parts = sequence[2:-1].split(";")
|
||||
if parts[0] in ["8", "127"]:
|
||||
return True
|
||||
return False
|
||||
|
||||
def get_session_information(self):
|
||||
self.env["screen"]["autoIgnoreScreens"] = []
|
||||
self.env["general"]["prev_user"] = getpass.getuser()
|
||||
|
||||
Reference in New Issue
Block a user