summaryrefslogtreecommitdiff
path: root/src/ncurses_ui.cc
diff options
context:
space:
mode:
authorfsub <31548809+fsub@users.noreply.github.com>2019-12-14 20:03:48 +0100
committerfsub <31548809+fsub@users.noreply.github.com>2019-12-14 20:03:48 +0100
commit3aab0327975330c0913ec00c2656955dddd4025d (patch)
treeabf932619a450a909d127e36d4fd6d54650d9d26 /src/ncurses_ui.cc
parentb982371843168d104767434dfa1ead2befa7b6e3 (diff)
Support rxvt style s-F11 and s-F12
Rxvt emits `\E[23$` and `\E[24$` for `F21` and `F22` (alias `s-F11` and `s-F12` provided that `ncurses_shift_function_key` is set to `10`), respectively.
Diffstat (limited to 'src/ncurses_ui.cc')
-rw-r--r--src/ncurses_ui.cc9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/ncurses_ui.cc b/src/ncurses_ui.cc
index 8cf08d9d..8d9efc15 100644
--- a/src/ncurses_ui.cc
+++ b/src/ncurses_ui.cc
@@ -640,7 +640,7 @@ Optional<Key> NCursesUI::get_next_key()
else
return {};
}
- if (c < 0x40 or c > 0x7e)
+ if (c != '$' and (c < 0x40 or c > 0x7e))
return {};
auto parse_mask = [](int mask) {
@@ -678,6 +678,13 @@ Optional<Key> NCursesUI::get_next_key()
switch (c)
{
+ case '$':
+ switch (params[0])
+ {
+ case 23: case 24:
+ return Key{Key::Modifiers::Shift, Key::F11 + params[0] - 23}; // rxvt style
+ }
+ return {};
case 'A': return masked_key(Key::Up);
case 'B': return masked_key(Key::Down);
case 'C': return masked_key(Key::Right);