GTKeyboardDriver::keys::keys() { ADD_KEY("context_menu", VK_APPS); ADD_KEY("back", VK_BACK); ADD_KEY("tab", VK_TAB); ADD_KEY("clear", VK_CLEAR); ADD_KEY("enter", VK_RETURN); ADD_KEY("shift", VK_SHIFT); ADD_KEY("rshift", VK_RSHIFT); ADD_KEY("lshift", VK_LSHIFT); ADD_KEY("ctrl", VK_CONTROL); ADD_KEY("rctrl", VK_RCONTROL); ADD_KEY("lctrl", VK_LCONTROL); ADD_KEY("alt", VK_MENU); ADD_KEY("pause", VK_PAUSE); ADD_KEY("esc", VK_ESCAPE); ADD_KEY("space", VK_SPACE); ADD_KEY("left", VK_LEFT); ADD_KEY("up", VK_UP); ADD_KEY("right", VK_RIGHT); ADD_KEY("down", VK_DOWN); ADD_KEY("insert", VK_INSERT); ADD_KEY("delete", VK_DELETE); ADD_KEY("pageup", VK_PRIOR); ADD_KEY("pagedown", VK_NEXT); ADD_KEY("help", VK_HELP); ADD_KEY("f1", VK_F1); ADD_KEY("f2", VK_F2); ADD_KEY("f3", VK_F3); ADD_KEY("f4", VK_F4); ADD_KEY("f5", VK_F5); ADD_KEY("f6", VK_F6); ADD_KEY("f7", VK_F7); ADD_KEY("f8", VK_F8); ADD_KEY("f9", VK_F9); ADD_KEY("f10", VK_F10); ADD_KEY("f12", VK_F12); ADD_KEY("home", VK_HOME); ADD_KEY("end", VK_END); // feel free to add other keys // macro VK_* defined in WinUser.h }
/* * The internal joystick events processing function */ static int do_process_joystick_events( u16 *keypad, SDL_Event *event) { int processed = 1; u16 key_code; u16 key; u16 key_o; u16 key_u; u16 key_r; u16 key_d; u16 key_l; switch ( event->type) { /* Joystick axis motion Note: button constants have a 1bit offset. */ case SDL_JOYAXISMOTION: key_code = ((event->jaxis.which & 15) << 12) | JOY_AXIS << 8 | ((event->jaxis.axis & 127) << 1); if( ((u32)abs(event->jaxis.value) >> 14) != 0 ) { if (event->jaxis.value > 0) key_code |= 1; key = lookup_joy_key( key_code ); key_o = lookup_joy_key( key_code ^ 1 ); if (key != 0) ADD_KEY( *keypad, key ); if (key_o != 0) RM_KEY( *keypad, key_o ); } else { // Axis is zeroed key = lookup_joy_key( key_code ); key_o = lookup_joy_key( key_code ^ 1 ); if (key != 0) RM_KEY( *keypad, key ); if (key_o != 0) RM_KEY( *keypad, key_o ); } break; case SDL_JOYHATMOTION: /* Diagonal positions will be treated as two separate keys being activated, rather than a single diagonal key. */ /* JOY_HAT_* are sequential integers, rather than a bitmask */ key_code = ((event->jhat.which & 15) << 12) | JOY_HAT << 8 | ((event->jhat.hat & 63) << 2); key_u = lookup_joy_key( key_code | JOY_HAT_UP ); key_r = lookup_joy_key( key_code | JOY_HAT_RIGHT ); key_d = lookup_joy_key( key_code | JOY_HAT_DOWN ); key_l = lookup_joy_key( key_code | JOY_HAT_LEFT ); if ((key_u != 0) && ((event->jhat.value & SDL_HAT_UP) != 0)) ADD_KEY( *keypad, key_u ); else if (key_u != 0) RM_KEY( *keypad, key_u ); if ((key_r != 0) && ((event->jhat.value & SDL_HAT_RIGHT) != 0)) ADD_KEY( *keypad, key_r ); else if (key_r != 0) RM_KEY( *keypad, key_r ); if ((key_d != 0) && ((event->jhat.value & SDL_HAT_DOWN) != 0)) ADD_KEY( *keypad, key_d ); else if (key_d != 0) RM_KEY( *keypad, key_d ); if ((key_l != 0) && ((event->jhat.value & SDL_HAT_LEFT) != 0)) ADD_KEY( *keypad, key_l ); else if (key_l != 0) RM_KEY( *keypad, key_l ); break; /* Joystick button pressed */ /* FIXME: Add support for BOOST */ case SDL_JOYBUTTONDOWN: key_code = ((event->jbutton.which & 15) << 12) | JOY_BUTTON << 8 | (event->jbutton.button & 255); key = lookup_joy_key( key_code ); if (key != 0) ADD_KEY( *keypad, key ); break; /* Joystick button released */ case SDL_JOYBUTTONUP: key_code = ((event->jbutton.which & 15) << 12) | JOY_BUTTON << 8 | (event->jbutton.button & 255); key = lookup_joy_key( key_code ); if (key != 0) RM_KEY( *keypad, key ); break; default: processed = 0; break; }
GTKeyboardDriver::keys::keys() { ADD_KEY("cmd", kVK_Command); ADD_KEY("tab", kVK_Tab); ADD_KEY("enter", kVK_Return); ADD_KEY("shift", kVK_Shift); ADD_KEY("ctrl", kVK_Control); ADD_KEY("alt", kVK_Option); ADD_KEY("esc", kVK_Escape); ADD_KEY("space", kVK_Space); ADD_KEY("left", kVK_LeftArrow); ADD_KEY("up", kVK_UpArrow); ADD_KEY("right", kVK_RightArrow); ADD_KEY("down", kVK_DownArrow); ADD_KEY("delete", kVK_ForwardDelete); ADD_KEY("back", kVK_Delete); ADD_KEY("help", kVK_Help); ADD_KEY("f1", kVK_F1); ADD_KEY("f2", kVK_F2); ADD_KEY("f3", kVK_F3); ADD_KEY("f4", kVK_F4); ADD_KEY("f5", kVK_F5); ADD_KEY("f6", kVK_F6); ADD_KEY("f7", kVK_F7); ADD_KEY("f8", kVK_F8); ADD_KEY("f9", kVK_F9); ADD_KEY("f10", kVK_F10); ADD_KEY("f12", kVK_F12); ADD_KEY("home", kVK_Home); ADD_KEY("end", kVK_End); ADD_KEY("pageup", kVK_PageUp); ADD_KEY("pagedown", kVK_PageDown); // feel free to add other keys // macro kVK_* defined in Carbon.framework/Frameworks/HIToolbox.framework/Headers/Events.h }