Add support for function keys F1-F12
This commit is contained in:
parent
a7ed017ef3
commit
4b518ee6b9
28
src/keys.cc
28
src/keys.cc
|
@ -80,6 +80,29 @@ KeyList parse_keys(const String& str)
|
||||||
pos = end_pos;
|
pos = end_pos;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if ((keyname[0] == 'f' or keyname[0] == 'F') and
|
||||||
|
keyname.length() <= 3)
|
||||||
|
{
|
||||||
|
|
||||||
|
int val = 0;
|
||||||
|
for (auto i = 1_byte; i < keyname.length(); ++i)
|
||||||
|
{
|
||||||
|
char c = keyname[i];
|
||||||
|
if (c >= '0' and c <= '9')
|
||||||
|
val = val*10 + c - '0';
|
||||||
|
else
|
||||||
|
{
|
||||||
|
val = -1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (val >= 1 and val <= 12)
|
||||||
|
{
|
||||||
|
result.push_back(Key{ modifier, Key::F1 + (val - 1) });
|
||||||
|
pos = end_pos;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
result.push_back({Key::Modifiers::None, Codepoint(str[pos])});
|
result.push_back({Key::Modifiers::None, Codepoint(str[pos])});
|
||||||
|
@ -98,6 +121,11 @@ String key_to_str(Key key)
|
||||||
named = true;
|
named = true;
|
||||||
res = it->first;
|
res = it->first;
|
||||||
}
|
}
|
||||||
|
else if (key.key >= Key::F1 and key.key < Key::F12)
|
||||||
|
{
|
||||||
|
named = true;
|
||||||
|
res = "F" + to_string((int)(Codepoint)key.key - (int)(Codepoint)Key::F1 + 1);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
res = codepoint_to_str(key.key);
|
res = codepoint_to_str(key.key);
|
||||||
|
|
||||||
|
|
12
src/keys.hh
12
src/keys.hh
|
@ -32,6 +32,18 @@ struct Key
|
||||||
Home,
|
Home,
|
||||||
End,
|
End,
|
||||||
BackTab,
|
BackTab,
|
||||||
|
F1,
|
||||||
|
F2,
|
||||||
|
F3,
|
||||||
|
F4,
|
||||||
|
F5,
|
||||||
|
F6,
|
||||||
|
F7,
|
||||||
|
F8,
|
||||||
|
F9,
|
||||||
|
F10,
|
||||||
|
F11,
|
||||||
|
F12,
|
||||||
Invalid,
|
Invalid,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -354,6 +354,12 @@ Key NCursesUI::get_key()
|
||||||
case KEY_BTAB: return Key::BackTab;
|
case KEY_BTAB: return Key::BackTab;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < 12; ++i)
|
||||||
|
{
|
||||||
|
if (c == KEY_F(i+1))
|
||||||
|
return Key::F1 + i;
|
||||||
|
}
|
||||||
|
|
||||||
if (c >= 0 and c < 256)
|
if (c >= 0 and c < 256)
|
||||||
{
|
{
|
||||||
ungetch(c);
|
ungetch(c);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user