mirror of
https://github.com/aseprite/aseprite.git
synced 2024-10-05 06:20:10 +00:00
Add support to serialize special unicode chars in ui::Accelerator
This commit is contained in:
parent
6d255dd3ab
commit
ba73bcafed
@ -76,32 +76,40 @@ Accelerator::Accelerator(const std::string& str)
|
|||||||
// Scancode
|
// Scancode
|
||||||
|
|
||||||
// Word with one character
|
// Word with one character
|
||||||
else if (tok.size() == 1) {
|
else if (base::utf8_length(tok) == 1) {
|
||||||
if ((tok[0] >= 'a') && (tok[0] <= 'z')) {
|
std::wstring wstr = base::from_utf8(tok);
|
||||||
m_unicodeChar = tok[0];
|
if (wstr.size() != 1) {
|
||||||
}
|
ASSERT(false && "Something wrong converting utf-8 to wchar string");
|
||||||
else {
|
continue;
|
||||||
m_unicodeChar = tok[0];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((tok[0] >= 'a') && (tok[0] <= 'z'))
|
wchar_t wchr = wstr[0];
|
||||||
m_scancode = (KeyScancode)((int)kKeyA + std::tolower(tok[0]) - 'a');
|
wchr = tolower(wchr);
|
||||||
else if ((tok[0] >= '0') && (tok[0] <= '9'))
|
|
||||||
m_scancode = (KeyScancode)((int)kKey0 + tok[0] - '0');
|
if ((wchr >= 'a') && (wchr <= 'z')) {
|
||||||
|
m_unicodeChar = wchr;
|
||||||
|
m_scancode = (KeyScancode)((int)kKeyA + wchr - 'a');
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
switch (tok[0]) {
|
m_unicodeChar = wchr;
|
||||||
case '~': m_scancode = kKeyTilde; break;
|
|
||||||
case '-': m_scancode = kKeyMinus; break;
|
if ((wchr >= '0') && (wchr <= '9'))
|
||||||
case '=': m_scancode = kKeyEquals; break;
|
m_scancode = (KeyScancode)((int)kKey0 + wchr - '0');
|
||||||
case '[': m_scancode = kKeyOpenbrace; break;
|
else {
|
||||||
case ']': m_scancode = kKeyClosebrace; break;
|
switch (wchr) {
|
||||||
case ';': m_scancode = kKeyColon; break;
|
case '~': m_scancode = kKeyTilde; break;
|
||||||
case '\'': m_scancode = kKeyQuote; break;
|
case '-': m_scancode = kKeyMinus; break;
|
||||||
case '\\': m_scancode = kKeyBackslash; break;
|
case '=': m_scancode = kKeyEquals; break;
|
||||||
case ',': m_scancode = kKeyComma; break;
|
case '[': m_scancode = kKeyOpenbrace; break;
|
||||||
case '.': m_scancode = kKeyStop; break;
|
case ']': m_scancode = kKeyClosebrace; break;
|
||||||
case '/': m_scancode = kKeySlash; break;
|
case ';': m_scancode = kKeyColon; break;
|
||||||
case '*': m_scancode = kKeyAsterisk; break;
|
case '\'': m_scancode = kKeyQuote; break;
|
||||||
|
case '\\': m_scancode = kKeyBackslash; break;
|
||||||
|
case ',': m_scancode = kKeyComma; break;
|
||||||
|
case '.': m_scancode = kKeyStop; break;
|
||||||
|
case '/': m_scancode = kKeySlash; break;
|
||||||
|
case '*': m_scancode = kKeyAsterisk; break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user