Deamon management
This commit is contained in:
110
shared/keys.cpp
Normal file
110
shared/keys.cpp
Normal file
@@ -0,0 +1,110 @@
|
||||
// gKeyMapper - canonical key name tables.
|
||||
|
||||
#include "keys.h"
|
||||
|
||||
#include <linux/input-event-codes.h>
|
||||
|
||||
namespace gkeymapper {
|
||||
|
||||
namespace {
|
||||
|
||||
const KeyDef kKeys[] = {
|
||||
// Modifiers (also needed as key codes when a shortcut is replayed).
|
||||
{"ctrl", KEY_LEFTCTRL},
|
||||
{"control", KEY_LEFTCTRL},
|
||||
{"alt", KEY_LEFTALT},
|
||||
{"shift", KEY_LEFTSHIFT},
|
||||
{"super", KEY_LEFTMETA},
|
||||
{"meta", KEY_LEFTMETA},
|
||||
{"altgr", KEY_RIGHTALT},
|
||||
{"iso_level3_shift", KEY_RIGHTALT},
|
||||
|
||||
// Letters.
|
||||
{"a", KEY_A}, {"b", KEY_B}, {"c", KEY_C}, {"d", KEY_D},
|
||||
{"e", KEY_E}, {"f", KEY_F}, {"g", KEY_G}, {"h", KEY_H},
|
||||
{"i", KEY_I}, {"j", KEY_J}, {"k", KEY_K}, {"l", KEY_L},
|
||||
{"m", KEY_M}, {"n", KEY_N}, {"o", KEY_O}, {"p", KEY_P},
|
||||
{"q", KEY_Q}, {"r", KEY_R}, {"s", KEY_S}, {"t", KEY_T},
|
||||
{"u", KEY_U}, {"v", KEY_V}, {"w", KEY_W}, {"x", KEY_X},
|
||||
{"y", KEY_Y}, {"z", KEY_Z},
|
||||
|
||||
// Digits.
|
||||
{"0", KEY_0}, {"1", KEY_1}, {"2", KEY_2}, {"3", KEY_3}, {"4", KEY_4},
|
||||
{"5", KEY_5}, {"6", KEY_6}, {"7", KEY_7}, {"8", KEY_8}, {"9", KEY_9},
|
||||
|
||||
// Function keys.
|
||||
{"f1", KEY_F1}, {"f2", KEY_F2}, {"f3", KEY_F3}, {"f4", KEY_F4},
|
||||
{"f5", KEY_F5}, {"f6", KEY_F6}, {"f7", KEY_F7}, {"f8", KEY_F8},
|
||||
{"f9", KEY_F9}, {"f10", KEY_F10}, {"f11", KEY_F11}, {"f12", KEY_F12},
|
||||
|
||||
// Editing / navigation.
|
||||
{"escape", KEY_ESC},
|
||||
{"tab", KEY_TAB},
|
||||
{"space", KEY_SPACE},
|
||||
{"return", KEY_ENTER},
|
||||
{"backspace", KEY_BACKSPACE},
|
||||
{"delete", KEY_DELETE},
|
||||
{"insert", KEY_INSERT},
|
||||
{"home", KEY_HOME},
|
||||
{"end", KEY_END},
|
||||
{"page_up", KEY_PAGEUP},
|
||||
{"page_down", KEY_PAGEDOWN},
|
||||
{"up", KEY_UP},
|
||||
{"down", KEY_DOWN},
|
||||
{"left", KEY_LEFT},
|
||||
{"right", KEY_RIGHT},
|
||||
{"caps_lock", KEY_CAPSLOCK},
|
||||
|
||||
// Punctuation.
|
||||
{"minus", KEY_MINUS},
|
||||
{"equal", KEY_EQUAL},
|
||||
{"bracketleft", KEY_LEFTBRACE},
|
||||
{"bracketright", KEY_RIGHTBRACE},
|
||||
{"semicolon", KEY_SEMICOLON},
|
||||
{"apostrophe", KEY_APOSTROPHE},
|
||||
{"grave", KEY_GRAVE},
|
||||
{"backslash", KEY_BACKSLASH},
|
||||
{"comma", KEY_COMMA},
|
||||
{"period", KEY_DOT},
|
||||
{"slash", KEY_SLASH},
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
const KeyDef* key_definitions() {
|
||||
return kKeys;
|
||||
}
|
||||
|
||||
int key_definition_count() {
|
||||
return static_cast<int>(sizeof(kKeys) / sizeof(kKeys[0]));
|
||||
}
|
||||
|
||||
int linux_key_code(const std::string& name) {
|
||||
for (const KeyDef& def : kKeys) {
|
||||
if (name == def.name) {
|
||||
return def.linux_code;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
unsigned modifier_bit(const std::string& name) {
|
||||
if (name == "ctrl" || name == "control") {
|
||||
return kModCtrl;
|
||||
}
|
||||
if (name == "alt") {
|
||||
return kModAlt;
|
||||
}
|
||||
if (name == "shift") {
|
||||
return kModShift;
|
||||
}
|
||||
if (name == "super" || name == "meta") {
|
||||
return kModSuper;
|
||||
}
|
||||
if (name == "altgr" || name == "iso_level3_shift") {
|
||||
return kModAltGr;
|
||||
}
|
||||
return kModNone;
|
||||
}
|
||||
|
||||
} // namespace gkeymapper
|
||||
Reference in New Issue
Block a user