Added F10-F12 For Custom KeyBinds (#507)

* added F10-F12 keys

* updated version strings to 5.2.2

* updated spec to reflect new keys
This commit is contained in:
ykeara
2020-08-11 20:02:34 -05:00
committed by GitHub
parent c8f519ec0b
commit 15f5534f69
8 changed files with 109 additions and 47 deletions
+1 -1
View File
@@ -1 +1 @@
5.2.1-dev
5.2.2-release
+1
View File
@@ -55,6 +55,7 @@
| A to Z | The letter in lowercase. `a`, `b`, `c`, ... |
| Number Row 0-9 | The number. `0`, `1`, `2`, ... |
| Function keys F1-F9 | Capital F followed by number. `F1`, `F2`, `F3`, ... |
| Function keys F10-F12 | Capital G followed by number. `G0` = F10, `G1` = F11, ... |
| Backspace | `BACKSPACE` |
| Space | `SPACE` |
| Tab | `TAB` |
@@ -47,6 +47,7 @@ A token is either a modifier symbol, literal symbol, symbol sequence or space ch
| A to Z | The letter in lowercase. `a`, `b`, `c`, ... |
| Number Row 0-9 | The number. `0`, `1`, `2`, ... |
| Function keys F1-F9 | Capital F followed by number. `F1`, `F2`, `F3`, ... |
| Function keys F10-F12 | Capital G followed by number. `G0` = F10, `G1` = F11, ... |
| Backspace | `BACKSPACE` |
| Space | `SPACE` |
| Tab | `TAB` |
+44
View File
@@ -55,6 +55,24 @@ std::optional<Token> getFunctionNumber( const char& character ) noexcept
}
}
std::optional<Token> getFunctionNumberExtended( const char& character ) noexcept
{
switch ( character )
{
case '0':
return Token::KEY_F10;
case '1':
return Token::KEY_F11;
case '2':
return Token::KEY_F12;
// Theoretically we could extende out to f19, but as F12 is the only
// function key on Standard Keyboard.
default:
LOG( INFO ) << "Unknown function key number: " << character;
return std::nullopt;
}
}
std::optional<Token> checkIfLegalCapitalLiteral( std::string input ) noexcept
{
// C++ can't do string comparisons in switches. :(
@@ -200,6 +218,26 @@ std::vector<Token>
break;
}
}
else if ( *ch == 'G' )
{
++ch;
if ( ch == end )
{
break;
}
const auto token = getFunctionNumberExtended( *ch );
if ( token.has_value() )
{
tokens.push_back( *token );
continue;
}
else
{
// Spec says to abort on errors and submit correct values before
// error.
break;
}
}
std::string characters;
characters.push_back( *ch );
@@ -428,6 +466,12 @@ bool isLiteral( const Token token ) noexcept
return true;
case Token::KEY_F9:
return true;
case Token::KEY_F10:
return true;
case Token::KEY_F11:
return true;
case Token::KEY_F12:
return true;
case Token::KEY_BACKSPACE:
return true;
+49 -45
View File
@@ -7,6 +7,55 @@
enum class Token
{
KEY_F1,
KEY_F2,
KEY_F3,
KEY_F4,
KEY_F5,
KEY_F6,
KEY_F7,
KEY_F8,
KEY_F9,
KEY_F10,
KEY_F11,
KEY_F12,
KEY_BACKSPACE,
KEY_SPACE,
KEY_TAB,
KEY_ESC,
KEY_INS,
KEY_DEL,
KEY_END,
KEY_PGDN,
KEY_PGUP,
KEY_CAPS,
KEY_PRNSCRN,
KEY_PAUSE,
KEY_SCRLOCK,
KEY_LEFTARROW,
KEY_RIGHTARROW,
KEY_UPARROW,
KEY_DOWNARROW,
KEY_KPSLASH,
KEY_KPSTAR,
KEY_KPMINUS,
KEY_KPPLUS,
KEY_ENTER,
// Misc tokens
TOKEN_NEW_SEQUENCE,
TOKEN_NO_KEYUP_NEXT,
// Modifiers
MODIFIER_CTRL,
MODIFIER_ALT,
MODIFIER_SHIFT,
MODIFIER_RSHIFT,
MODIFIER_SUPER,
MODIFIER_TILDE,
// Literals
KEY_a = 'a',
KEY_b = 'b',
@@ -45,51 +94,6 @@ enum class Token
KEY_7 = '7',
KEY_8 = '8',
KEY_9 = '9',
KEY_F1,
KEY_F2,
KEY_F3,
KEY_F4,
KEY_F5,
KEY_F6,
KEY_F7,
KEY_F8,
KEY_F9,
KEY_BACKSPACE,
KEY_SPACE,
KEY_TAB,
KEY_ESC,
KEY_INS,
KEY_DEL,
KEY_END,
KEY_PGDN,
KEY_PGUP,
KEY_CAPS,
KEY_PRNSCRN,
KEY_PAUSE,
KEY_SCRLOCK,
KEY_LEFTARROW,
KEY_RIGHTARROW,
KEY_UPARROW,
KEY_DOWNARROW,
KEY_KPSLASH,
KEY_KPSTAR,
KEY_KPMINUS,
KEY_KPPLUS,
KEY_ENTER,
// Misc tokens
TOKEN_NEW_SEQUENCE,
TOKEN_NO_KEYUP_NEXT,
// Modifiers
MODIFIER_CTRL,
MODIFIER_ALT,
MODIFIER_SHIFT,
MODIFIER_RSHIFT,
MODIFIER_SUPER,
MODIFIER_TILDE,
};
std::vector<Token>
+6
View File
@@ -99,6 +99,12 @@ unsigned int tokenToKeySym( const Token token )
return XK_F8;
case Token::KEY_F9:
return XK_F9;
case Token::KEY_F10:
return XK_F10;
case Token::KEY_F11:
return XK_F11;
case Token::KEY_F12:
return XK_F12;
case Token::KEY_BACKSPACE:
return XK_BackSpace;
+6
View File
@@ -30,6 +30,12 @@ WORD convertToVirtualKeycode( const Token token )
return VK_F8;
case Token::KEY_F9:
return VK_F9;
case Token::KEY_F10:
return VK_F10;
case Token::KEY_F11:
return VK_F11;
case Token::KEY_F12:
return VK_F12;
case Token::KEY_BACKSPACE:
return VK_BACK;
+1 -1
View File
@@ -1 +1 @@
{ "major": 5, "minor": 2, "patch": 1, "updateMessage": "", "optionalMessage": "" }
{ "major": 5, "minor": 2, "patch": 2, "updateMessage": "", "optionalMessage": "" }