added the ability to use keycode in keys file
This commit is contained in:
parent
3172279d10
commit
f9af363e24
1 changed files with 20 additions and 2 deletions
22
src/Keys.cc
22
src/Keys.cc
|
@ -201,9 +201,27 @@ bool Keys::addBinding(const std::string &linebuffer) {
|
||||||
if(tmpmod)
|
if(tmpmod)
|
||||||
mod |= tmpmod; //If it's a modifier
|
mod |= tmpmod; //If it's a modifier
|
||||||
else {
|
else {
|
||||||
key = FbTk::KeyUtil::getKey(val[argc].c_str()); // else get the key
|
// keycode covers the following three two-byte cases:
|
||||||
|
// 0x - hex
|
||||||
|
// +[1-9] - number between +1 and +9
|
||||||
|
// numbers 10 and above
|
||||||
|
//
|
||||||
|
if (val[argc].size() > 1 && (isdigit(val[argc][0]) &&
|
||||||
|
(isdigit(val[argc][1]) || val[argc][1] == 'x') ||
|
||||||
|
val[argc][0] == '+' && isdigit(val[argc][1])) ) {
|
||||||
|
|
||||||
|
key = strtoul(val[argc].c_str(), NULL, 0);
|
||||||
|
|
||||||
|
if (errno == EINVAL || errno == ERANGE)
|
||||||
|
key = 0;
|
||||||
|
|
||||||
|
} else // convert from string symbol
|
||||||
|
key = FbTk::KeyUtil::getKey(val[argc].c_str());
|
||||||
|
|
||||||
if (key == 0) {
|
if (key == 0) {
|
||||||
cerr<<_FBTEXT(Keys, InvalidKeyMod, "Keys: Invalid key/modifier on line", "A bad key/modifier string was found on line (number following)")<<" "<<
|
cerr<<_FBTEXT(Keys, InvalidKeyMod,
|
||||||
|
"Keys: Invalid key/modifier on line",
|
||||||
|
"A bad key/modifier string was found on line (number following)")<<" "<<
|
||||||
m_current_line<<"): "<<linebuffer<<endl;
|
m_current_line<<"): "<<linebuffer<<endl;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue