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.py244
1 files changed, 122 insertions, 122 deletions
diff --git a/qutebrowser/keyinput/keyutils.py b/qutebrowser/keyinput/keyutils.py
index f70a9c36c..c3c93e26c 100644
--- a/qutebrowser/keyinput/keyutils.py
+++ b/qutebrowser/keyinput/keyutils.py
@@ -43,12 +43,12 @@ from qutebrowser.utils import utils
# Map Qt::Key values to their Qt::KeyboardModifier value.
_MODIFIER_MAP = {
- Qt.Key_Shift: Qt.ShiftModifier,
- Qt.Key_Control: Qt.ControlModifier,
- Qt.Key_Alt: Qt.AltModifier,
- Qt.Key_Meta: Qt.MetaModifier,
- Qt.Key_AltGr: Qt.GroupSwitchModifier,
- Qt.Key_Mode_switch: Qt.GroupSwitchModifier,
+ Qt.Key.Key_Shift: Qt.KeyboardModifier.ShiftModifier,
+ Qt.Key.Key_Control: Qt.KeyboardModifier.ControlModifier,
+ Qt.Key.Key_Alt: Qt.KeyboardModifier.AltModifier,
+ Qt.Key.Key_Meta: Qt.KeyboardModifier.MetaModifier,
+ Qt.Key.Key_AltGr: Qt.KeyboardModifier.GroupSwitchModifier,
+ Qt.Key.Key_Mode_switch: Qt.KeyboardModifier.GroupSwitchModifier,
}
_NIL_KEY = Qt.Key(0)
@@ -63,86 +63,86 @@ _SPECIAL_NAMES = {
# For dead/combining keys, we return the corresponding non-combining
# key, as that's easier to add to the config.
- Qt.Key_Super_L: 'Super L',
- Qt.Key_Super_R: 'Super R',
- Qt.Key_Hyper_L: 'Hyper L',
- Qt.Key_Hyper_R: 'Hyper R',
- Qt.Key_Direction_L: 'Direction L',
- Qt.Key_Direction_R: 'Direction R',
-
- Qt.Key_Shift: 'Shift',
- Qt.Key_Control: 'Control',
- Qt.Key_Meta: 'Meta',
- Qt.Key_Alt: 'Alt',
-
- Qt.Key_AltGr: 'AltGr',
- Qt.Key_Multi_key: 'Multi key',
- Qt.Key_SingleCandidate: 'Single Candidate',
- Qt.Key_Mode_switch: 'Mode switch',
- Qt.Key_Dead_Grave: '`',
- Qt.Key_Dead_Acute: '´',
- Qt.Key_Dead_Circumflex: '^',
- Qt.Key_Dead_Tilde: '~',
- Qt.Key_Dead_Macron: '¯',
- Qt.Key_Dead_Breve: '˘',
- Qt.Key_Dead_Abovedot: '˙',
- Qt.Key_Dead_Diaeresis: '¨',
- Qt.Key_Dead_Abovering: '˚',
- Qt.Key_Dead_Doubleacute: '˝',
- Qt.Key_Dead_Caron: 'ˇ',
- Qt.Key_Dead_Cedilla: '¸',
- Qt.Key_Dead_Ogonek: '˛',
- Qt.Key_Dead_Iota: 'Iota',
- Qt.Key_Dead_Voiced_Sound: 'Voiced Sound',
- Qt.Key_Dead_Semivoiced_Sound: 'Semivoiced Sound',
- Qt.Key_Dead_Belowdot: 'Belowdot',
- Qt.Key_Dead_Hook: 'Hook',
- Qt.Key_Dead_Horn: 'Horn',
-
- Qt.Key_Dead_Stroke: '\u0335', # '̵'
- Qt.Key_Dead_Abovecomma: '\u0313', # '̓'
- Qt.Key_Dead_Abovereversedcomma: '\u0314', # '̔'
- Qt.Key_Dead_Doublegrave: '\u030f', # '̏'
- Qt.Key_Dead_Belowring: '\u0325', # '̥'
- Qt.Key_Dead_Belowmacron: '\u0331', # '̱'
- Qt.Key_Dead_Belowcircumflex: '\u032d', # '̭'
- Qt.Key_Dead_Belowtilde: '\u0330', # '̰'
- Qt.Key_Dead_Belowbreve: '\u032e', # '̮'
- Qt.Key_Dead_Belowdiaeresis: '\u0324', # '̤'
- Qt.Key_Dead_Invertedbreve: '\u0311', # '̑'
- Qt.Key_Dead_Belowcomma: '\u0326', # '̦'
- Qt.Key_Dead_Currency: '¤',
- Qt.Key_Dead_a: 'a',
- Qt.Key_Dead_A: 'A',
- Qt.Key_Dead_e: 'e',
- Qt.Key_Dead_E: 'E',
- Qt.Key_Dead_i: 'i',
- Qt.Key_Dead_I: 'I',
- Qt.Key_Dead_o: 'o',
- Qt.Key_Dead_O: 'O',
- Qt.Key_Dead_u: 'u',
- Qt.Key_Dead_U: 'U',
- Qt.Key_Dead_Small_Schwa: 'ə',
- Qt.Key_Dead_Capital_Schwa: 'Ə',
- Qt.Key_Dead_Greek: 'Greek',
- Qt.Key_Dead_Lowline: '\u0332', # '̲'
- Qt.Key_Dead_Aboveverticalline: '\u030d', # '̍'
- Qt.Key_Dead_Belowverticalline: '\u0329',
- Qt.Key_Dead_Longsolidusoverlay: '\u0338', # '̸'
-
- Qt.Key_Memo: 'Memo',
- Qt.Key_ToDoList: 'To Do List',
- Qt.Key_Calendar: 'Calendar',
- Qt.Key_ContrastAdjust: 'Contrast Adjust',
- Qt.Key_LaunchG: 'Launch (G)',
- Qt.Key_LaunchH: 'Launch (H)',
-
- Qt.Key_MediaLast: 'Media Last',
-
- Qt.Key_unknown: 'Unknown',
+ Qt.Key.Key_Super_L: 'Super L',
+ Qt.Key.Key_Super_R: 'Super R',
+ Qt.Key.Key_Hyper_L: 'Hyper L',
+ Qt.Key.Key_Hyper_R: 'Hyper R',
+ Qt.Key.Key_Direction_L: 'Direction L',
+ Qt.Key.Key_Direction_R: 'Direction R',
+
+ Qt.Key.Key_Shift: 'Shift',
+ Qt.Key.Key_Control: 'Control',
+ Qt.Key.Key_Meta: 'Meta',
+ Qt.Key.Key_Alt: 'Alt',
+
+ Qt.Key.Key_AltGr: 'AltGr',
+ Qt.Key.Key_Multi_key: 'Multi key',
+ Qt.Key.Key_SingleCandidate: 'Single Candidate',
+ Qt.Key.Key_Mode_switch: 'Mode switch',
+ Qt.Key.Key_Dead_Grave: '`',
+ Qt.Key.Key_Dead_Acute: '´',
+ Qt.Key.Key_Dead_Circumflex: '^',
+ Qt.Key.Key_Dead_Tilde: '~',
+ Qt.Key.Key_Dead_Macron: '¯',
+ Qt.Key.Key_Dead_Breve: '˘',
+ Qt.Key.Key_Dead_Abovedot: '˙',
+ Qt.Key.Key_Dead_Diaeresis: '¨',
+ Qt.Key.Key_Dead_Abovering: '˚',
+ Qt.Key.Key_Dead_Doubleacute: '˝',
+ Qt.Key.Key_Dead_Caron: 'ˇ',
+ Qt.Key.Key_Dead_Cedilla: '¸',
+ Qt.Key.Key_Dead_Ogonek: '˛',
+ Qt.Key.Key_Dead_Iota: 'Iota',
+ Qt.Key.Key_Dead_Voiced_Sound: 'Voiced Sound',
+ Qt.Key.Key_Dead_Semivoiced_Sound: 'Semivoiced Sound',
+ Qt.Key.Key_Dead_Belowdot: 'Belowdot',
+ Qt.Key.Key_Dead_Hook: 'Hook',
+ Qt.Key.Key_Dead_Horn: 'Horn',
+
+ Qt.Key.Key_Dead_Stroke: '\u0335', # '̵'
+ Qt.Key.Key_Dead_Abovecomma: '\u0313', # '̓'
+ Qt.Key.Key_Dead_Abovereversedcomma: '\u0314', # '̔'
+ Qt.Key.Key_Dead_Doublegrave: '\u030f', # '̏'
+ Qt.Key.Key_Dead_Belowring: '\u0325', # '̥'
+ Qt.Key.Key_Dead_Belowmacron: '\u0331', # '̱'
+ Qt.Key.Key_Dead_Belowcircumflex: '\u032d', # '̭'
+ Qt.Key.Key_Dead_Belowtilde: '\u0330', # '̰'
+ Qt.Key.Key_Dead_Belowbreve: '\u032e', # '̮'
+ Qt.Key.Key_Dead_Belowdiaeresis: '\u0324', # '̤'
+ Qt.Key.Key_Dead_Invertedbreve: '\u0311', # '̑'
+ Qt.Key.Key_Dead_Belowcomma: '\u0326', # '̦'
+ Qt.Key.Key_Dead_Currency: '¤',
+ Qt.Key.Key_Dead_a: 'a',
+ Qt.Key.Key_Dead_A: 'A',
+ Qt.Key.Key_Dead_e: 'e',
+ Qt.Key.Key_Dead_E: 'E',
+ Qt.Key.Key_Dead_i: 'i',
+ Qt.Key.Key_Dead_I: 'I',
+ Qt.Key.Key_Dead_o: 'o',
+ Qt.Key.Key_Dead_O: 'O',
+ Qt.Key.Key_Dead_u: 'u',
+ Qt.Key.Key_Dead_U: 'U',
+ Qt.Key.Key_Dead_Small_Schwa: 'ə',
+ Qt.Key.Key_Dead_Capital_Schwa: 'Ə',
+ Qt.Key.Key_Dead_Greek: 'Greek',
+ Qt.Key.Key_Dead_Lowline: '\u0332', # '̲'
+ Qt.Key.Key_Dead_Aboveverticalline: '\u030d', # '̍'
+ Qt.Key.Key_Dead_Belowverticalline: '\u0329',
+ Qt.Key.Key_Dead_Longsolidusoverlay: '\u0338', # '̸'
+
+ Qt.Key.Key_Memo: 'Memo',
+ Qt.Key.Key_ToDoList: 'To Do List',
+ Qt.Key.Key_Calendar: 'Calendar',
+ Qt.Key.Key_ContrastAdjust: 'Contrast Adjust',
+ Qt.Key.Key_LaunchG: 'Launch (G)',
+ Qt.Key.Key_LaunchH: 'Launch (H)',
+
+ Qt.Key.Key_MediaLast: 'Media Last',
+
+ Qt.Key.Key_unknown: 'Unknown',
# For some keys, we just want a different name
- Qt.Key_Escape: 'Escape',
+ Qt.Key.Key_Escape: 'Escape',
_NIL_KEY: 'nil',
}
@@ -150,18 +150,18 @@ _SPECIAL_NAMES = {
def _assert_plain_key(key: Qt.Key) -> None:
"""Make sure this is a key without KeyboardModifiers mixed in."""
- assert not key & Qt.KeyboardModifierMask, hex(key)
+ assert not key & Qt.KeyboardModifier.KeyboardModifierMask, hex(key)
def _assert_plain_modifier(key: _ModifierType) -> None:
"""Make sure this is a modifier without a key mixed in."""
- mask = Qt.KeyboardModifierMask
+ mask = Qt.KeyboardModifier.KeyboardModifierMask
assert not key & ~mask, hex(key) # type: ignore[operator]
def _is_printable(key: Qt.Key) -> bool:
_assert_plain_key(key)
- return key <= 0xff and key not in [Qt.Key_Space, _NIL_KEY]
+ return key <= 0xff and key not in [Qt.Key.Key_Space, _NIL_KEY]
def is_special(key: Qt.Key, modifiers: _ModifierType) -> bool:
@@ -169,7 +169,7 @@ def is_special(key: Qt.Key, modifiers: _ModifierType) -> bool:
_assert_plain_key(key)
_assert_plain_modifier(modifiers)
return not (_is_printable(key) and
- modifiers in [Qt.ShiftModifier, Qt.NoModifier])
+ modifiers in [Qt.KeyboardModifier.ShiftModifier, Qt.KeyboardModifier.NoModifier])
def is_modifier_key(key: Qt.Key) -> bool:
@@ -250,11 +250,11 @@ def _key_to_string(key: Qt.Key) -> str:
def _modifiers_to_string(modifiers: _ModifierType) -> str:
"""Convert the given Qt::KeyboardModifiers to a string.
- Handles Qt.GroupSwitchModifier because Qt doesn't handle that as a
+ Handles Qt.KeyboardModifier.GroupSwitchModifier because Qt doesn't handle that as a
modifier.
"""
_assert_plain_modifier(modifiers)
- altgr = Qt.GroupSwitchModifier
+ altgr = Qt.KeyboardModifier.GroupSwitchModifier
if modifiers & altgr: # type: ignore[operator]
modifiers &= ~altgr # type: ignore[operator, assignment]
result = 'AltGr+'
@@ -382,10 +382,10 @@ class KeyInfo:
.format(self.key))
assert len(key_string) == 1, key_string
- if self.modifiers == Qt.ShiftModifier:
+ if self.modifiers == Qt.KeyboardModifier.ShiftModifier:
assert not is_special(self.key, self.modifiers)
return key_string.upper()
- elif self.modifiers == Qt.NoModifier:
+ elif self.modifiers == Qt.KeyboardModifier.NoModifier:
assert not is_special(self.key, self.modifiers)
return key_string.lower()
else:
@@ -402,12 +402,12 @@ class KeyInfo:
def text(self) -> str:
"""Get the text which would be displayed when pressing this key."""
control = {
- Qt.Key_Space: ' ',
- Qt.Key_Tab: '\t',
- Qt.Key_Backspace: '\b',
- Qt.Key_Return: '\r',
- Qt.Key_Enter: '\r',
- Qt.Key_Escape: '\x1b',
+ Qt.Key.Key_Space: ' ',
+ Qt.Key.Key_Tab: '\t',
+ Qt.Key.Key_Backspace: '\b',
+ Qt.Key.Key_Return: '\r',
+ Qt.Key.Key_Enter: '\r',
+ Qt.Key.Key_Escape: '\x1b',
}
if self.key in control:
@@ -416,11 +416,11 @@ class KeyInfo:
return ''
text = QKeySequence(self.key).toString()
- if not self.modifiers & Qt.ShiftModifier: # type: ignore[operator]
+ if not self.modifiers & Qt.KeyboardModifier.ShiftModifier: # type: ignore[operator]
text = text.lower()
return text
- def to_event(self, typ: QEvent.Type = QEvent.KeyPress) -> QKeyEvent:
+ def to_event(self, typ: QEvent.Type = QEvent.Type.KeyPress) -> QKeyEvent:
"""Get a QKeyEvent from this KeyInfo."""
return QKeyEvent(typ, self.key, self.modifiers, self.text())
@@ -472,9 +472,9 @@ class KeySequence:
def __iter__(self) -> Iterator[KeyInfo]:
"""Iterate over KeyInfo objects."""
for key_and_modifiers in self._iter_keys():
- key = Qt.Key(int(key_and_modifiers) & ~Qt.KeyboardModifierMask)
+ key = Qt.Key(int(key_and_modifiers) & ~Qt.KeyboardModifier.KeyboardModifierMask)
modifiers = Qt.KeyboardModifiers( # type: ignore[call-overload]
- int(key_and_modifiers) & Qt.KeyboardModifierMask)
+ int(key_and_modifiers) & Qt.KeyboardModifier.KeyboardModifierMask)
yield KeyInfo(key=key, modifiers=modifiers)
def __repr__(self) -> str:
@@ -533,7 +533,7 @@ class KeySequence:
def _validate(self, keystr: str = None) -> None:
for info in self:
- if info.key < Qt.Key_Space or info.key >= Qt.Key_unknown:
+ if info.key < Qt.Key.Key_Space or info.key >= Qt.Key.Key_unknown:
raise KeyParseError(keystr, "Got invalid key!")
for seq in self._sequences:
@@ -552,12 +552,12 @@ class KeySequence:
if len(self._sequences) > len(other._sequences):
# If we entered more sequences than there are in the config,
# there's no way there can be a match.
- return QKeySequence.NoMatch
+ return QKeySequence.SequenceMatch.NoMatch
for entered, configured in zip(self._sequences, other._sequences):
# If we get NoMatch/PartialMatch in a sequence, we can abort there.
match = entered.matches(configured)
- if match != QKeySequence.ExactMatch:
+ if match != QKeySequence.SequenceMatch.ExactMatch:
return match
# We checked all common sequences and they had an ExactMatch.
@@ -569,9 +569,9 @@ class KeySequence:
# If there's the same amount of sequences configured and entered,
# that's an EqualMatch.
if len(self._sequences) == len(other._sequences):
- return QKeySequence.ExactMatch
+ return QKeySequence.SequenceMatch.ExactMatch
elif len(self._sequences) < len(other._sequences):
- return QKeySequence.PartialMatch
+ return QKeySequence.SequenceMatch.PartialMatch
else:
raise utils.Unreachable("self={!r} other={!r}".format(self, other))
@@ -588,14 +588,14 @@ class KeySequence:
if key == _NIL_KEY:
raise KeyParseError(None, "Got nil key!")
- # We always remove Qt.GroupSwitchModifier because QKeySequence has no
+ # We always remove Qt.KeyboardModifier.GroupSwitchModifier because QKeySequence has no
# way to mention that in a binding anyways...
- modifiers &= ~Qt.GroupSwitchModifier
+ modifiers &= ~Qt.KeyboardModifier.GroupSwitchModifier
- # We change Qt.Key_Backtab to Key_Tab here because nobody would
+ # We change Qt.Key.Key_Backtab to Key_Tab here because nobody would
# configure "Shift-Backtab" in their config.
- if modifiers & Qt.ShiftModifier and key == Qt.Key_Backtab:
- key = Qt.Key_Tab
+ if modifiers & Qt.KeyboardModifier.ShiftModifier and key == Qt.Key.Key_Backtab:
+ key = Qt.Key.Key_Tab
# We don't care about a shift modifier with symbols (Shift-: should
# match a : binding even though we typed it with a shift on an
@@ -607,26 +607,26 @@ class KeySequence:
#
# In addition, Shift also *is* relevant when other modifiers are
# involved. Shift-Ctrl-X should not be equivalent to Ctrl-X.
- if (modifiers == Qt.ShiftModifier and
+ if (modifiers == Qt.KeyboardModifier.ShiftModifier and
_is_printable(key) and
not ev.text().isupper()):
modifiers = Qt.KeyboardModifiers() # type: ignore[assignment]
# On macOS, swap Ctrl and Meta back
#
- # We don't use Qt.AA_MacDontSwapCtrlAndMeta because that also affects
+ # We don't use Qt.ApplicationAttribute.AA_MacDontSwapCtrlAndMeta because that also affects
# Qt/QtWebEngine's own shortcuts. However, we do want "Ctrl" and "Meta"
# (or "Cmd") in a key binding name to actually represent what's on the
# keyboard.
if utils.is_mac:
- if modifiers & Qt.ControlModifier and modifiers & Qt.MetaModifier:
+ if modifiers & Qt.KeyboardModifier.ControlModifier and modifiers & Qt.KeyboardModifier.MetaModifier:
pass
- elif modifiers & Qt.ControlModifier:
- modifiers &= ~Qt.ControlModifier
- modifiers |= Qt.MetaModifier
- elif modifiers & Qt.MetaModifier:
- modifiers &= ~Qt.MetaModifier
- modifiers |= Qt.ControlModifier
+ elif modifiers & Qt.KeyboardModifier.ControlModifier:
+ modifiers &= ~Qt.KeyboardModifier.ControlModifier
+ modifiers |= Qt.KeyboardModifier.MetaModifier
+ elif modifiers & Qt.KeyboardModifier.MetaModifier:
+ modifiers &= ~Qt.KeyboardModifier.MetaModifier
+ modifiers |= Qt.KeyboardModifier.ControlModifier
keys = list(self._iter_keys())
keys.append(key | int(modifiers))
@@ -635,7 +635,7 @@ class KeySequence:
def strip_modifiers(self) -> 'KeySequence':
"""Strip optional modifiers from keys."""
- modifiers = Qt.KeypadModifier
+ modifiers = Qt.KeyboardModifier.KeypadModifier
keys = [key & ~modifiers for key in self._iter_keys()]
return self.__class__(*keys)