Enable more common ASCII tokens to be used in accelerator, fixes #107.
This commit is contained in:
parent
9a2fc8f4ea
commit
92c68797d0
1 changed files with 44 additions and 10 deletions
|
@ -57,22 +57,56 @@ bool StringToAccelerator(const std::string& description,
|
||||||
} else if (tokens[i] == "Shift") {
|
} else if (tokens[i] == "Shift") {
|
||||||
modifiers |= ui::EF_SHIFT_DOWN;
|
modifiers |= ui::EF_SHIFT_DOWN;
|
||||||
} else if (tokens[i].size() == 1) {
|
} else if (tokens[i].size() == 1) {
|
||||||
|
char token = tokens[i][0];
|
||||||
|
|
||||||
if (key != ui::VKEY_UNKNOWN) {
|
if (key != ui::VKEY_UNKNOWN) {
|
||||||
// Multiple key assignments.
|
// Multiple key assignments.
|
||||||
key = ui::VKEY_UNKNOWN;
|
key = ui::VKEY_UNKNOWN;
|
||||||
break;
|
return false;
|
||||||
}
|
}
|
||||||
if (tokens[i][0] >= 'A' && tokens[i][0] <= 'Z') {
|
if (token >= 'A' && token <= 'Z') {
|
||||||
key = static_cast<ui::KeyboardCode>(ui::VKEY_A + (tokens[i][0] - 'A'));
|
key = static_cast<ui::KeyboardCode>(ui::VKEY_A + (token - 'A'));
|
||||||
} else if (tokens[i][0] >= '0' && tokens[i][0] <= '9') {
|
} else if (token >= '0' && token <= '9') {
|
||||||
key = static_cast<ui::KeyboardCode>(ui::VKEY_0 + (tokens[i][0] - '0'));
|
key = static_cast<ui::KeyboardCode>(ui::VKEY_0 + (token - '0'));
|
||||||
} else if (tokens[i][0] >= '+' && tokens[i][0] <= '.') {
|
} else if (token >= '*' && token <= '/') {
|
||||||
|
// *+,-./
|
||||||
key = static_cast<ui::KeyboardCode>(
|
key = static_cast<ui::KeyboardCode>(
|
||||||
ui::VKEY_OEM_PLUS + (tokens[i][0] - '+'));
|
ui::VKEY_MULTIPLY + (token - '*'));
|
||||||
} else {
|
} else {
|
||||||
LOG(WARNING) << "Invalid accelerator character: " << tokens[i];
|
switch (token) {
|
||||||
key = ui::VKEY_UNKNOWN;
|
case ':':
|
||||||
break;
|
case ';':
|
||||||
|
key = ui::VKEY_OEM_1;
|
||||||
|
break;
|
||||||
|
case '?':
|
||||||
|
case '/':
|
||||||
|
key = ui::VKEY_OEM_2;
|
||||||
|
break;
|
||||||
|
case '~':
|
||||||
|
case '`':
|
||||||
|
key = ui::VKEY_OEM_3;
|
||||||
|
break;
|
||||||
|
case '{':
|
||||||
|
case '[':
|
||||||
|
key = ui::VKEY_OEM_4;
|
||||||
|
break;
|
||||||
|
case '|':
|
||||||
|
case '\\':
|
||||||
|
key = ui::VKEY_OEM_5;
|
||||||
|
break;
|
||||||
|
case '}':
|
||||||
|
case ']':
|
||||||
|
key = ui::VKEY_OEM_6;
|
||||||
|
break;
|
||||||
|
case '\"':
|
||||||
|
case '\'':
|
||||||
|
key = ui::VKEY_OEM_7;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
LOG(WARNING) << "Invalid accelerator character: " << tokens[i];
|
||||||
|
key = ui::VKEY_UNKNOWN;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
LOG(WARNING) << "Invalid accelerator token: " << tokens[i];
|
LOG(WARNING) << "Invalid accelerator token: " << tokens[i];
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue