Commit Graph

394 Commits

Author SHA1 Message Date
Florian Bruhin
8da878c77c Make KeySequence.matchs() work correctly 2018-03-04 20:21:58 +01:00
Florian Bruhin
68db8d04ad KeySequence: Make sure we got valid key codes 2018-03-04 20:21:58 +01:00
Florian Bruhin
3649a36869 KeySequence: Add __le__/__ge__ 2018-03-04 20:21:58 +01:00
Florian Bruhin
fb7c75a090 Improve keyutils tests 2018-03-04 20:21:58 +01:00
Florian Bruhin
3c9e8ff9ab Test and fix keyutils._parse_keystring 2018-03-04 20:21:58 +01:00
Florian Bruhin
7f8508a367 Change the way Space keybindings are handled
Using it as " " in a keystring won't work anymore, but instead <Space> and
<Shift-Space> does.
2018-03-04 20:21:58 +01:00
Florian Bruhin
da60d11b24 Refactor keyutils tests 2018-03-04 20:21:58 +01:00
Florian Bruhin
b3834835ed Bring back keyutils.is_modifier() and modifier handling
Turns out when we press yY, we get three events:

Qt.Key_Y, Qt.NoModifier
Qt.Key_Shift, Qt.ShiftModifier
Qt.Key_Y, Qt.ShiftModifier

If we don't ignore the second one, our keychain will be interrupted by the Shift
keypress.
2018-03-04 20:21:58 +01:00
Florian Bruhin
3a11a24be0 Fix modifier handling
We don't want to show <Shift-Shift>, but <Ctrl-Shift> should still work
correctly.
2018-03-04 20:21:58 +01:00
Florian Bruhin
7cb781cc92 Simplify handling of modifier-only keys
Now that we don't rely on str(KeyInfo) being empty anywhere, there's no reason
to return an empty string for only-modifier keypresses anymore.

While those keys can't be bound (QKeySequence('Shift') == Qt.Key_unknown)
there's also no reason to explicitly ignore them.
2018-03-04 20:21:57 +01:00
Florian Bruhin
693178c8ee Refactor KeyInfo.__str__
This removes the special handling for macOS, but this is hopefully not needed
anymore as we don't compare strings.
2018-03-04 20:21:57 +01:00
Florian Bruhin
50d2ef3b90 Fix handling of printable control keys in KeyInfo.text() 2018-03-04 20:21:57 +01:00
Florian Bruhin
934d586286 Fix handling of Shift-Tab aka. Backtab 2018-03-04 20:21:57 +01:00
Florian Bruhin
65a05f334e Fix KeyInfo.__str__ for <Shift-Tab> 2018-03-04 20:21:57 +01:00
Florian Bruhin
0aa17bfa33 Simplify unicodedata.category calls 2018-03-04 20:21:57 +01:00
Florian Bruhin
e26eaaddc2 Add keyutils.is_modifier_key() 2018-03-04 20:21:57 +01:00
Florian Bruhin
1cd86d79d9 Add keyutils.is_printable() 2018-03-04 20:21:57 +01:00
Florian Bruhin
b4d232badd Simplify KeyInfo.text() 2018-03-04 20:20:31 +01:00
Florian Bruhin
0b6d2c2b0a Make all key names work 2018-03-04 20:20:30 +01:00
Florian Bruhin
601e56d2fa Make test_keyutils work 2018-03-04 20:20:30 +01:00
Florian Bruhin
19512e988b Expose less from keyutils publicly 2018-03-04 20:20:30 +01:00
Florian Bruhin
c3485821c7 Adjust copyright 2018-03-04 20:20:30 +01:00
Florian Bruhin
b85fe8f678 Merge BaseKeyParser._handle_key into .handle 2018-02-27 14:08:38 +01:00
Florian Bruhin
3a79f1293f Remove FIXMEs 2018-02-27 13:10:25 +01:00
Florian Bruhin
bd87b4eb10 Stop logging in PassthroughKeyParser 2018-02-27 13:02:32 +01:00
Florian Bruhin
ec3ad8a969 Get rid of _warn_on_keychains and _supports_chains 2018-02-27 13:02:32 +01:00
Florian Bruhin
ba012c6ba8 Get rid of BaseKeyparser.Type 2018-02-27 13:01:41 +01:00
Florian Bruhin
079fcc7eea Add FIXME 2018-02-27 09:38:40 +01:00
Florian Bruhin
362f923f06 Fix lint 2018-02-27 09:34:55 +01:00
Florian Bruhin
5d581d42f5 Improve key parsing with simple keys containing </> 2018-02-27 09:22:11 +01:00
Florian Bruhin
911b2daebf Fix test_keyutils 2018-02-27 09:07:20 +01:00
Florian Bruhin
eeeb763f8a Make sure 0 is handled as command 2018-02-27 08:50:50 +01:00
Florian Bruhin
9e27f2b3e7 Initial attempts at fixing test_basekeyparser 2018-02-27 08:48:16 +01:00
Florian Bruhin
44b4cb92be Make keyutils.KeySequence.parse('') work 2018-02-27 08:35:14 +01:00
Florian Bruhin
ac4fd7c563 Add KeyInfo.to_event() 2018-02-27 08:20:06 +01:00
Florian Bruhin
01462008c9 Clearly separate yesno/prompt key modes 2018-02-26 22:49:15 +01:00
Florian Bruhin
d9ae3fd5aa Fix more hinting issues 2018-02-26 20:49:02 +01:00
Florian Bruhin
de3b4adfd8 Don't force-follow hints when typing chars 2018-02-26 20:48:49 +01:00
Florian Bruhin
6fc391986f Fix KeyInfo.text() for space 2018-02-26 20:48:22 +01:00
Florian Bruhin
e9d58dae2a Fix getting individual items from KeySequence 2018-02-26 20:48:11 +01:00
Florian Bruhin
9f0e1a98a0 Make hint keybinding inhibition work 2018-02-26 20:22:52 +01:00
Florian Bruhin
f1b20f6dc4 Fix forward_unbound_keys test 2018-02-26 20:02:43 +01:00
Florian Bruhin
bb647123b7 Fix invalid key sequences 2018-02-26 14:13:46 +01:00
Florian Bruhin
2698b8bb63 Fix unicodedata check 2018-02-26 13:47:45 +01:00
Florian Bruhin
f15e2285ba Fix bindings.key_mappings 2018-02-26 13:41:01 +01:00
Florian Bruhin
0afaf2ce89 Fix capital chars after string change 2018-02-26 11:48:10 +01:00
Florian Bruhin
508a12a84c Try fixing KeyInfo.__str__ with lower-/uppercase chars 2018-02-26 11:36:24 +01:00
Florian Bruhin
16940db834 Refactor KeySequence initialization 2018-02-26 11:16:51 +01:00
Florian Bruhin
9aa37febbe Make hints work 2018-02-26 10:33:18 +01:00
Florian Bruhin
be4cd94207 Try getting hints to work 2018-02-26 10:14:30 +01:00
Florian Bruhin
d077f38ac4 Store multiple QKeySequences in KeySequence 2018-02-26 09:13:53 +01:00
Florian Bruhin
79a337767a Initial work at making :fake-key work 2018-02-26 09:13:44 +01:00
Florian Bruhin
e273f163a6 Add a KeyInfo class 2018-02-25 22:09:39 +01:00
Florian Bruhin
321d5c5d20 Merge branch 'master' into keys 2018-02-25 21:25:12 +01:00
Marc Jauvin
fbb78f1133 hook into modeman's entered and left signals
- save previous mode when a prompt is shown
- restore previous mode when finished prompting
2018-02-12 21:57:53 -05:00
Marc Jauvin
d04fc29163 save input_mode when entering/leaving mode
instead of when changing tab
2018-02-12 18:10:22 -05:00
Florian Bruhin
6f028e9ad0 Update copyright years 2018-02-05 12:19:50 +01:00
Florian Bruhin
1f5cbf21a3 Merge remote-tracking branch 'origin/pr/3348' 2018-01-20 18:28:14 +01:00
Florian Bruhin
28889cf099 Use a dict for ModeManager.eventFilter 2017-12-29 20:36:55 +01:00
Florian Bruhin
81e9060239 Make sure KeySequence keys are valid 2017-12-29 16:04:25 +01:00
Florian Bruhin
737ff2cc69 Add <> around special keys in __str__ 2017-12-29 14:43:04 +01:00
Florian Bruhin
f1fe26b0b7 Handle modifiers correctly 2017-12-29 14:40:00 +01:00
Florian Bruhin
7b17ab4b3f Initial str() attempt 2017-12-29 14:22:20 +01:00
Florian Bruhin
d9c768ed86 Strip out shift modifier for non-alpha bindings 2017-12-29 13:53:43 +01:00
Artur Shaikhullin
db16a87e68 Removed unused import 2017-12-29 18:39:29 +06:00
Florian Bruhin
917f2a30de Get tests to collect 2017-12-29 13:23:38 +01:00
Florian Bruhin
cc747b00ce Move parsing to class 2017-12-29 01:50:51 +01:00
Florian Bruhin
c98eb5502d Add some FIXMEs 2017-12-29 01:24:05 +01:00
Florian Bruhin
d961211188 Delete some old code 2017-12-29 01:24:05 +01:00
Florian Bruhin
b1dde41b74 Rename sequence.py to keyutils.py 2017-12-29 01:24:05 +01:00
Florian Bruhin
dcf0d21121 Move key related utils to sequence.py 2017-12-29 01:24:05 +01:00
Florian Bruhin
600919a23a Add a custom KeySequence class 2017-12-29 01:24:05 +01:00
Florian Bruhin
a565b77bf0 Switch from string to QKeySequence 2017-12-29 01:24:05 +01:00
Florian Bruhin
8478a1ea3d Remove _handle_special_key 2017-12-29 01:24:05 +01:00
Florian Bruhin
26fdc129d3 Split off counts 2017-12-29 01:24:05 +01:00
Florian Bruhin
55803afbd2 Fix matching 2017-12-29 01:24:05 +01:00
Florian Bruhin
a8aaf01ff0 Fix some more stuff (and break some :D) 2017-12-29 01:24:05 +01:00
Florian Bruhin
ddcb5445a2 Initial refactoring for new key parsing 2017-12-29 01:24:05 +01:00
Artur Shaik
5605d3cd8e
Merge branch 'master' into webengine_caret 2017-12-28 20:43:31 +06:00
Florian Bruhin
e65c0dd8a7 pylint: Re-enable bad-continuation
And lots and lots of whitespace changes.
2017-12-15 19:16:55 +01:00
Florian Bruhin
f4ed31b295 Add an utils.Unreachable exception 2017-12-15 16:33:47 +01:00
Florian Bruhin
016fc0ebb1 Fix some inconsistent returns 2017-12-15 16:33:47 +01:00
Florian Bruhin
3f9ded3bed Add missing docstrings 2017-12-15 13:55:06 +01:00
George Edward Bulmer
747a9bc5b6 Modify usage of re.match to fit re.fullmatch or re.search.
re.match features an implicit left anchor, which can be surprising.

re.fullmatch features implicit anchors on both sides, but is aptly named
and unsurprising.

re.search has no such implicit anchors, which ought to be the default
even if a single anchor is needed.
2017-12-11 21:32:55 +00:00
Ryan Farley
5ed8019115 update flake8 and flake8-deprecated
Updated requirements and adjusted the configuration in `.flake8`; other
files have been modified where the lack of per-file auto-ignore caused
problems, where putty's `# flake8: disable=` syntax could be replaced
with a simpler `noqa`, or where pylint directives already suppressed the
same error.
2017-11-26 00:16:14 -06:00
Artur Shaikhullin
b184d2f94d dirty initial port of chrome caretbrowser extension 2017-11-16 19:25:15 +06:00
Florian Bruhin
f6cc6677dd Remove hiding of commands
This was often confusing for people - let's instead just hide commands which are
not available in normal mode.
2017-11-13 09:02:16 +01:00
Gyorgy Orban
98c6b49cde use enum module instead or usertypes.enum
Remove the usertypes.enum from the source and use
the standard enum module instead.
Enum start number is available since python 3.5
2017-11-02 18:56:11 +01:00
Florian Bruhin
1e2015be65 Make bindings win over mappings
Fixes #2995
2017-09-22 17:13:17 +02:00
Florian Bruhin
3a5241b642 Start using attrs
Closes #1073
2017-09-19 22:21:45 +02:00
Florian Bruhin
1fc9817cd4 Remove support for ambiguous keybindings 2017-09-14 00:37:01 +02:00
Florian Bruhin
0cdd3ff82f Update some more references to old config options 2017-07-04 16:46:02 +02:00
Florian Bruhin
cff61fa0bc Fix pylint
This also reverts commit 8df0b063be.
2017-07-04 15:34:10 +02:00
Florian Bruhin
397ca47efb Fix vulture 2017-07-04 15:09:23 +02:00
Florian Bruhin
0115285a84 Initial update for better bindings management 2017-07-04 15:08:03 +02:00
Florian Bruhin
290d27a064 Add a cmdexc.Error 2017-07-04 15:08:02 +02:00
Florian Bruhin
75798bebb0 Normalize bindings correctly when checking key_mappings 2017-07-04 15:08:02 +02:00
Florian Bruhin
383968d948 Add a Key config type
Make sure any key we get from the config is normalized).
2017-07-04 15:08:02 +02:00
Florian Bruhin
056edcfed3 More keyconfig work 2017-07-04 15:08:02 +02:00
Florian Bruhin
7e7fbf106b Fix lint and old config options 2017-07-04 14:42:56 +02:00