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:
@@ -1 +1 @@
|
||||
5.2.1-dev
|
||||
5.2.2-release
|
||||
@@ -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` |
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 @@
|
||||
{ "major": 5, "minor": 2, "patch": 1, "updateMessage": "", "optionalMessage": "" }
|
||||
{ "major": 5, "minor": 2, "patch": 2, "updateMessage": "", "optionalMessage": "" }
|
||||
Reference in New Issue
Block a user