summaryrefslogtreecommitdiff
path: root/qutebrowser/keyinput/keyutils.py
diff options
context:
space:
mode:
Diffstat (limited to 'qutebrowser/keyinput/keyutils.py')
-rw-r--r--qutebrowser/keyinput/keyutils.py16
1 files changed, 16 insertions, 0 deletions
diff --git a/qutebrowser/keyinput/keyutils.py b/qutebrowser/keyinput/keyutils.py
index 91d6a36a3..dfe4fb3ff 100644
--- a/qutebrowser/keyinput/keyutils.py
+++ b/qutebrowser/keyinput/keyutils.py
@@ -321,6 +321,10 @@ class KeyInfo:
"""Get a QKeyEvent from this KeyInfo."""
return QKeyEvent(typ, self.key, self.modifiers, self.text())
+ def to_int(self):
+ """Get the key as an integer (with key/modifiers)."""
+ return int(self.key) | int(self.modifiers)
+
class KeySequence:
@@ -495,6 +499,18 @@ class KeySequence:
return self.__class__(*keys)
+ def with_mappings(self, mappings):
+ """Get a new KeySequence with the given mappings applied."""
+ keys = []
+ for key in self._iter_keys():
+ key_seq = KeySequence(key)
+ if key_seq in mappings:
+ new_seq = mappings[key_seq]
+ assert len(new_seq) == 1
+ key = new_seq[0].to_int()
+ keys.append(key)
+ return self.__class__(*keys)
+
@classmethod
def parse(cls, keystr):
"""Parse a keystring like <Ctrl-x> or xyz and return a KeySequence."""