Common::HardwareKeySet *OSystem_SDL::getHardwareKeySet() { #ifdef ENABLE_KEYMAPPER HardwareKeySet *keySet = new HardwareKeySet(); const Key *key; const Mod *mod; char fullKeyId[50]; char fullKeyDesc[100]; uint16 ascii; for (mod = modifiers; mod->id; mod++) { for (key = keys; key->hwId; key++) { ascii = key->ascii; if (mod->shiftable && key->shiftable) { snprintf(fullKeyId, 50, "%s%c", mod->id, toupper(key->hwId[0])); snprintf(fullKeyDesc, 100, "%s%c", mod->desc, toupper(key->desc[0])); ascii = toupper(key->ascii); } else if (mod->shiftable) { snprintf(fullKeyId, 50, "S+%s%s", mod->id, key->hwId); snprintf(fullKeyDesc, 100, "Shift+%s%s", mod->desc, key->desc); } else { snprintf(fullKeyId, 50, "%s%s", mod->id, key->hwId); snprintf(fullKeyDesc, 100, "%s%s", mod->desc, key->desc); } keySet->addHardwareKey(new HardwareKey(fullKeyId, KeyState(key->keycode, ascii, mod->flag), fullKeyDesc, key->preferredAction )); } } return keySet; #else return 0; #endif }
void OSystem_Android::setupKeymapper() { #ifdef ENABLE_KEYMAPPER using namespace Common; Keymapper *mapper = getEventManager()->getKeymapper(); HardwareKeySet *keySet = new HardwareKeySet(); keySet->addHardwareKey( new HardwareKey("n", KeyState(KEYCODE_n), "n (vk)", kTriggerLeftKeyType, kVirtualKeyboardActionType)); mapper->registerHardwareKeySet(keySet); Keymap *globalMap = new Keymap("global"); Action *act; act = new Action(globalMap, "VIRT", "Display keyboard", kVirtualKeyboardActionType); act->addKeyEvent(KeyState(KEYCODE_F7, ASCII_F7, 0)); mapper->addGlobalKeymap(globalMap); mapper->pushKeymap("global"); #endif }
HardwareKeySet *OSystem_SDL_WebOS::getHardwareKeySet() { // Get the original SDL hardware key set HardwareKeySet *keySet = OSystem_SDL::getHardwareKeySet(); // Add WebOS specific keys keySet->addHardwareKey(new HardwareKey("FORWARD", KeyState((KeyCode) 229, 229, 0), "Forward")); // Return the modified hardware key set return keySet; }