Fix shifted keys not matching shortcuts in kittens

Broke after keyboard refactoring for new keyboard protocol. Now a key
event will match a shortcut specification if either the mods and key
match or mods without shift and shifted key match. Fixes #3314
This commit is contained in:
Kovid Goyal
2021-02-14 07:50:54 +05:30
parent 9a031c5b0c
commit 015fe9054e
2 changed files with 6 additions and 12 deletions

16
kitty/key_encoding.py generated
View File

@@ -211,18 +211,14 @@ class KeyEvent(NamedTuple):
def matches(self, spec: Union[str, ParsedShortcut], types: int = EventType.PRESS | EventType.REPEAT) -> bool:
if not self.type & types:
return False
q = self.mods
is_shifted = bool(self.shifted_key and self.shift)
if is_shifted:
q = self.mods & ~SHIFT
kq = self.shifted_key
else:
kq = self.key
if isinstance(spec, str):
spec = parse_shortcut(spec)
if q != spec.mods:
return False
return kq == spec.key_name
if (self.mods, self.key) == spec:
return True
is_shifted = bool(self.shifted_key and self.shift)
if is_shifted and (self.mods & ~SHIFT, self.shifted_key) == spec:
return True
return False
def as_window_system_event(self) -> WindowSystemKeyEvent:
action = defines.GLFW_PRESS

View File

@@ -50,8 +50,6 @@ character_key_name_aliases = {
'LEFT_BRACKET': '[',
'RIGHT_BRACKET': ']',
}
for x in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ':
character_key_name_aliases[x] = x.lower()
LookupFunc = Callable[[str, bool], Optional[int]]