| Summary: | Cannot bind non letter/digit/. keys in profile keybinding combinations | ||
|---|---|---|---|
| Product: | [Applications] konsole | Reporter: | Flav <hl037.prog> |
| Component: | keyboard | Assignee: | Konsole Bugs <konsole-bugs-null> |
| Status: | RESOLVED FIXED | ||
| Severity: | normal | CC: | a.samirh78, kde, nate |
| Priority: | NOR | ||
| Version First Reported In: | master | ||
| Target Milestone: | --- | ||
| Platform: | unspecified | ||
| OS: | All | ||
| Latest Commit: | https://commits.kde.org/konsole/47199ba564628f8e7230ce3cea80f65aefe17dfa | Version Fixed/Implemented In: | 18.08 |
| Sentry Crash Report: | |||
FWIW, you can use '++Ctrl', note the extra +. For the rest of it: https://phabricator.kde.org/D10939 The patch in phabricator changes it to
static const QRegularExpression key(QStringLiteral("key\\s+(\\S+)\\s*:\\s*(\"(.*)\"|\\w+)"),
I'm not actually sure why the original one is more complex. I'll try to test it.
Git commit 47199ba564628f8e7230ce3cea80f65aefe17dfa by Kurt Hindenburg, on behalf of Mariusz Glebocki. Committed on 24/05/2018 at 19:57. Pushed by hindenburg into branch 'master'. Allow any character(s) as a key in key binding. Summary: The key (the part before modifiers) is interpreted by QKeySequence. For special keys (everything except printable characters), it uses names from `Qt::Key` without `Key_` prefix. For character keys, it uses the character itself, and it is not possible to use e.g. `Comma`. For this reason limited set of characters limits possible key bindings. FIXED-IN: 18.08 Test Plan: * In profile's key bindings settings (or your keysym file) create entry: ``` key ,-Shift+Ctrl-Alt+Ansi : "Hello from keysym" ``` * Change `-Alt` to `+Alt` if you have a conflict. Do not change shift (the shortcut would trigger on `<` instead of `,`). You can also use e.g. ``;'[]=` instead of `,`. AltGr+letter works too, so `ą`, `á`, etc. can be used. * Save and close settings * Press `Ctrl+,` Expected result: "Hello from keysym" is typed Actual result: * the key binding does not work * empty rows appear in key bindings table Reviewers: #konsole, hindenburg Reviewed By: #konsole, hindenburg Subscribers: hindenburg, konsole-devel, #konsole Tags: #konsole Differential Revision: https://phabricator.kde.org/D13081 M +1 -1 src/KeyboardTranslator.cpp https://commits.kde.org/konsole/47199ba564628f8e7230ce3cea80f65aefe17dfa |
In "Settings">"Edit Current Profile...">"Keyboard">"Edit...", In the Key combination, you can only bind letters, digit, dot and underscore, others are not working. For example, you can't bind a Ctrl+; to an escape sequence (that could be used in Vim for example). It seems it's the regex key in the function KeyboardTranslatorReader::tokenize(const QString &line) that cause the limitation. Replacing : - static const QRegularExpression key(QStringLiteral("key\\s+([\\w\\+\\s\\-\\*\\.+)\\s*:\\s*(\"(.*)\"|\\w+)"), with + static const QRegularExpression key(QStringLiteral("key\\s+(.+)\\s*:\\s*(\"(.*)\"|\\w+)"), Seems to workaround the problem... but I guess there is a reason while the original regex is that complicated, this is why I didn't submitted a patch