Use key names in wayland device

This commit is contained in:
Deve 2017-07-20 22:14:57 +02:00
parent 0dba3c8f67
commit 7a92708fd3

View File

@ -23,6 +23,7 @@
#include <cstdio> #include <cstdio>
#include <cstdlib> #include <cstdlib>
#include <string> #include <string>
#include <linux/input.h>
#include <sys/mman.h> #include <sys/mman.h>
#include <sys/utsname.h> #include <sys/utsname.h>
#include <time.h> #include <time.h>
@ -30,18 +31,9 @@
#if defined _IRR_COMPILE_WITH_JOYSTICK_EVENTS_ #if defined _IRR_COMPILE_WITH_JOYSTICK_EVENTS_
#include <fcntl.h> #include <fcntl.h>
#include <unistd.h> #include <unistd.h>
#include <sys/ioctl.h>
// linux/joystick.h includes linux/input.h, which #defines values for various
// KEY_FOO keys. These override the irr::KEY_FOO equivalents, which stops key
// handling from working. As a workaround, defining _INPUT_H stops linux/input.h
// from being included; it doesn't actually seem to be necessary except to pull
// in sys/ioctl.h.
#define _INPUT_H
#include <sys/ioctl.h> // Would normally be included in linux/input.h
#include <linux/joystick.h> #include <linux/joystick.h>
#undef _INPUT_H #endif
#endif // _IRR_COMPILE_WITH_JOYSTICK_EVENTS_
#include "CColorConverter.h" #include "CColorConverter.h"
#include "CContextEGL.h" #include "CContextEGL.h"
@ -132,7 +124,7 @@ public:
switch (button) switch (button)
{ {
case 272: case BTN_LEFT:
if (state == WL_POINTER_BUTTON_STATE_PRESSED) if (state == WL_POINTER_BUTTON_STATE_PRESSED)
{ {
irrevent.MouseInput.Event = irr::EMIE_LMOUSE_PRESSED_DOWN; irrevent.MouseInput.Event = irr::EMIE_LMOUSE_PRESSED_DOWN;
@ -144,7 +136,7 @@ public:
device->m_mouse_button_states &= ~(irr::EMBSM_LEFT); device->m_mouse_button_states &= ~(irr::EMBSM_LEFT);
} }
break; break;
case 273: case BTN_RIGHT:
if (state == WL_POINTER_BUTTON_STATE_PRESSED) if (state == WL_POINTER_BUTTON_STATE_PRESSED)
{ {
irrevent.MouseInput.Event = irr::EMIE_RMOUSE_PRESSED_DOWN; irrevent.MouseInput.Event = irr::EMIE_RMOUSE_PRESSED_DOWN;
@ -156,7 +148,7 @@ public:
device->m_mouse_button_states &= ~(irr::EMBSM_RIGHT); device->m_mouse_button_states &= ~(irr::EMBSM_RIGHT);
} }
break; break;
case 274: case BTN_MIDDLE:
if (state == WL_POINTER_BUTTON_STATE_PRESSED) if (state == WL_POINTER_BUTTON_STATE_PRESSED)
{ {
irrevent.MouseInput.Event = irr::EMIE_MMOUSE_PRESSED_DOWN; irrevent.MouseInput.Event = irr::EMIE_MMOUSE_PRESSED_DOWN;
@ -179,8 +171,6 @@ public:
device->signalEvent(irrevent); device->signalEvent(irrevent);
// It's not exactly true for middle/right button, but keep
// consistency with x11 device
if (irrevent.MouseInput.Event >= EMIE_LMOUSE_PRESSED_DOWN && if (irrevent.MouseInput.Event >= EMIE_LMOUSE_PRESSED_DOWN &&
irrevent.MouseInput.Event <= EMIE_MMOUSE_PRESSED_DOWN) irrevent.MouseInput.Event <= EMIE_MMOUSE_PRESSED_DOWN)
{ {
@ -1085,133 +1075,133 @@ void CIrrDeviceWayland::clearSystemMessages()
void CIrrDeviceWayland::createKeyMap() void CIrrDeviceWayland::createKeyMap()
{ {
m_key_map[0] = IRR_KEY_UNKNOWN; //KEY_RESERVED m_key_map[KEY_RESERVED] = IRR_KEY_UNKNOWN;
m_key_map[1] = IRR_KEY_ESCAPE; //KEY_ESC m_key_map[KEY_ESC] = IRR_KEY_ESCAPE;
m_key_map[2] = IRR_KEY_1; //KEY_1 m_key_map[KEY_1] = IRR_KEY_1;
m_key_map[3] = IRR_KEY_2; //KEY_2 m_key_map[KEY_2] = IRR_KEY_2;
m_key_map[4] = IRR_KEY_3; //KEY_3 m_key_map[KEY_3] = IRR_KEY_3;
m_key_map[5] = IRR_KEY_4; //KEY_4 m_key_map[KEY_4] = IRR_KEY_4;
m_key_map[6] = IRR_KEY_5; //KEY_5 m_key_map[KEY_5] = IRR_KEY_5;
m_key_map[7] = IRR_KEY_6; //KEY_6 m_key_map[KEY_6] = IRR_KEY_6;
m_key_map[8] = IRR_KEY_7; //KEY_7 m_key_map[KEY_7] = IRR_KEY_7;
m_key_map[9] = IRR_KEY_8; //KEY_8 m_key_map[KEY_8] = IRR_KEY_8;
m_key_map[10] = IRR_KEY_9; //KEY_9 m_key_map[KEY_9] = IRR_KEY_9;
m_key_map[11] = IRR_KEY_0; //KEY_0 m_key_map[KEY_0] = IRR_KEY_0;
m_key_map[12] = IRR_KEY_MINUS; //KEY_MINUS m_key_map[KEY_MINUS] = IRR_KEY_MINUS;
m_key_map[13] = IRR_KEY_PLUS; //KEY_EQUAL m_key_map[KEY_EQUAL] = IRR_KEY_PLUS;
m_key_map[14] = IRR_KEY_BACK; //KEY_BACKSPACE m_key_map[KEY_BACKSPACE] = IRR_KEY_BACK;
m_key_map[15] = IRR_KEY_TAB; //KEY_TAB m_key_map[KEY_TAB] = IRR_KEY_TAB;
m_key_map[16] = IRR_KEY_Q; //KEY_Q m_key_map[KEY_Q] = IRR_KEY_Q;
m_key_map[17] = IRR_KEY_W; //KEY_W m_key_map[KEY_W] = IRR_KEY_W;
m_key_map[18] = IRR_KEY_E; //KEY_E m_key_map[KEY_E] = IRR_KEY_E;
m_key_map[19] = IRR_KEY_R; //KEY_R m_key_map[KEY_R] = IRR_KEY_R;
m_key_map[20] = IRR_KEY_T; //KEY_T m_key_map[KEY_T] = IRR_KEY_T;
m_key_map[21] = IRR_KEY_Y; //KEY_Y m_key_map[KEY_Y] = IRR_KEY_Y;
m_key_map[22] = IRR_KEY_U; //KEY_U m_key_map[KEY_U] = IRR_KEY_U;
m_key_map[23] = IRR_KEY_I; //KEY_I m_key_map[KEY_I] = IRR_KEY_I;
m_key_map[25] = IRR_KEY_P; //KEY_P m_key_map[KEY_P] = IRR_KEY_P;
m_key_map[24] = IRR_KEY_O; //KEY_O m_key_map[KEY_O] = IRR_KEY_O;
m_key_map[26] = IRR_KEY_OEM_4; //KEY_LEFTBRACE m_key_map[KEY_LEFTBRACE] = IRR_KEY_OEM_4;
m_key_map[27] = IRR_KEY_OEM_6; //KEY_RIGHTBRACE m_key_map[KEY_RIGHTBRACE] = IRR_KEY_OEM_6;
m_key_map[28] = IRR_KEY_RETURN; //KEY_ENTER m_key_map[KEY_ENTER] = IRR_KEY_RETURN;
m_key_map[29] = IRR_KEY_LCONTROL; //KEY_LEFTCTRL m_key_map[KEY_LEFTCTRL] = IRR_KEY_LCONTROL;
m_key_map[30] = IRR_KEY_A; //KEY_A m_key_map[KEY_A] = IRR_KEY_A;
m_key_map[31] = IRR_KEY_S; // KEY_S m_key_map[KEY_S] = IRR_KEY_S;
m_key_map[32] = IRR_KEY_D; //KEY_D m_key_map[KEY_D] = IRR_KEY_D;
m_key_map[33] = IRR_KEY_F; //KEY_F m_key_map[KEY_F] = IRR_KEY_F;
m_key_map[34] = IRR_KEY_G; //KEY_G m_key_map[KEY_G] = IRR_KEY_G;
m_key_map[35] = IRR_KEY_H; //KEY_H m_key_map[KEY_H] = IRR_KEY_H;
m_key_map[36] = IRR_KEY_J; //KEY_J m_key_map[KEY_J] = IRR_KEY_J;
m_key_map[37] = IRR_KEY_K; //KEY_K m_key_map[KEY_K] = IRR_KEY_K;
m_key_map[38] = IRR_KEY_L; //KEY_L m_key_map[KEY_L] = IRR_KEY_L;
m_key_map[39] = IRR_KEY_OEM_1; //KEY_SEMICOLON m_key_map[KEY_SEMICOLON] = IRR_KEY_OEM_1;
m_key_map[40] = IRR_KEY_OEM_7; //KEY_APOSTROPHE m_key_map[KEY_APOSTROPHE] = IRR_KEY_OEM_7;
m_key_map[41] = IRR_KEY_OEM_3; //KEY_GRAVE m_key_map[KEY_GRAVE] = IRR_KEY_OEM_3;
m_key_map[42] = IRR_KEY_LSHIFT; //KEY_LEFTSHIFT m_key_map[KEY_LEFTSHIFT] = IRR_KEY_LSHIFT;
m_key_map[43] = IRR_KEY_OEM_5; //KEY_BACKSLASH m_key_map[KEY_BACKSLASH] = IRR_KEY_OEM_5;
m_key_map[44] = IRR_KEY_Z; //KEY_Z m_key_map[KEY_Z] = IRR_KEY_Z;
m_key_map[45] = IRR_KEY_X; //KEY_X m_key_map[KEY_X] = IRR_KEY_X;
m_key_map[46] = IRR_KEY_C; //KEY_C m_key_map[KEY_C] = IRR_KEY_C;
m_key_map[47] = IRR_KEY_V; //KEY_V m_key_map[KEY_V] = IRR_KEY_V;
m_key_map[48] = IRR_KEY_B; //KEY_B m_key_map[KEY_B] = IRR_KEY_B;
m_key_map[49] = IRR_KEY_N; //KEY_N m_key_map[KEY_N] = IRR_KEY_N;
m_key_map[50] = IRR_KEY_M; //KEY_M m_key_map[KEY_M] = IRR_KEY_M;
m_key_map[51] = IRR_KEY_COMMA; //KEY_COMMA m_key_map[KEY_COMMA] = IRR_KEY_COMMA;
m_key_map[52] = IRR_KEY_PERIOD; //KEY_DOT m_key_map[KEY_DOT] = IRR_KEY_PERIOD;
m_key_map[53] = IRR_KEY_OEM_2; // KEY_SLASH m_key_map[KEY_SLASH] = IRR_KEY_OEM_2;
m_key_map[54] = IRR_KEY_RSHIFT; //KEY_RIGHTSHIFT m_key_map[KEY_RIGHTSHIFT] = IRR_KEY_RSHIFT;
m_key_map[55] = IRR_KEY_MULTIPLY; //KEY_KPASTERISK m_key_map[KEY_KPASTERISK] = IRR_KEY_MULTIPLY;
m_key_map[56] = IRR_KEY_LMENU; //KEY_LEFTALT m_key_map[KEY_LEFTALT] = IRR_KEY_LMENU;
m_key_map[57] = IRR_KEY_SPACE; //KEY_SPACE m_key_map[KEY_SPACE] = IRR_KEY_SPACE;
m_key_map[58] = IRR_KEY_CAPITAL; //KEY_CAPSLOCK m_key_map[KEY_CAPSLOCK] = IRR_KEY_CAPITAL;
m_key_map[59] = IRR_KEY_F1; //KEY_F1 m_key_map[KEY_F1] = IRR_KEY_F1;
m_key_map[60] = IRR_KEY_F2; //KEY_F2 m_key_map[KEY_F2] = IRR_KEY_F2;
m_key_map[61] = IRR_KEY_F3; //KEY_F3 m_key_map[KEY_F3] = IRR_KEY_F3;
m_key_map[62] = IRR_KEY_F4; //KEY_F4 m_key_map[KEY_F4] = IRR_KEY_F4;
m_key_map[63] = IRR_KEY_F5; //KEY_F5 m_key_map[KEY_F5] = IRR_KEY_F5;
m_key_map[64] = IRR_KEY_F6; //KEY_F6 m_key_map[KEY_F6] = IRR_KEY_F6;
m_key_map[65] = IRR_KEY_F7; //KEY_F7 m_key_map[KEY_F7] = IRR_KEY_F7;
m_key_map[66] = IRR_KEY_F8; //KEY_F8 m_key_map[KEY_F8] = IRR_KEY_F8;
m_key_map[67] = IRR_KEY_F9; //KEY_F9 m_key_map[KEY_F9] = IRR_KEY_F9;
m_key_map[68] = IRR_KEY_F10; //KEY_F10 m_key_map[KEY_F10] = IRR_KEY_F10;
m_key_map[69] = IRR_KEY_NUMLOCK; //KEY_NUMLOCK m_key_map[KEY_NUMLOCK] = IRR_KEY_NUMLOCK;
m_key_map[70] = IRR_KEY_SCROLL; //KEY_SCROLLLOCK m_key_map[KEY_SCROLLLOCK] = IRR_KEY_SCROLL;
m_key_map[71] = IRR_KEY_NUMPAD7; //KEY_KP7 m_key_map[KEY_KP7] = IRR_KEY_NUMPAD7;
m_key_map[72] = IRR_KEY_NUMPAD8; //KEY_KP8 m_key_map[KEY_KP8] = IRR_KEY_NUMPAD8;
m_key_map[73] = IRR_KEY_NUMPAD9; //KEY_KP9 m_key_map[KEY_KP9] = IRR_KEY_NUMPAD9;
m_key_map[74] = IRR_KEY_SUBTRACT; //KEY_KPMINUS m_key_map[KEY_KPMINUS] = IRR_KEY_SUBTRACT;
m_key_map[75] = IRR_KEY_NUMPAD4; //KEY_KP4 m_key_map[KEY_KP4] = IRR_KEY_NUMPAD4;
m_key_map[76] = IRR_KEY_NUMPAD5; //KEY_KP5 m_key_map[KEY_KP5] = IRR_KEY_NUMPAD5;
m_key_map[77] = IRR_KEY_NUMPAD6; //KEY_KP6 m_key_map[KEY_KP6] = IRR_KEY_NUMPAD6;
m_key_map[78] = IRR_KEY_ADD; //KEY_KPPLUS m_key_map[KEY_KPPLUS] = IRR_KEY_ADD;
m_key_map[79] = IRR_KEY_NUMPAD1; //KEY_KP1 m_key_map[KEY_KP1] = IRR_KEY_NUMPAD1;
m_key_map[80] = IRR_KEY_NUMPAD2; //KEY_KP2 m_key_map[KEY_KP2] = IRR_KEY_NUMPAD2;
m_key_map[81] = IRR_KEY_NUMPAD3; //KEY_KP3 m_key_map[KEY_KP3] = IRR_KEY_NUMPAD3;
m_key_map[82] = IRR_KEY_NUMPAD0; //KEY_KP0 m_key_map[KEY_KP0] = IRR_KEY_NUMPAD0;
m_key_map[83] = IRR_KEY_SEPARATOR; //KEY_KPDOT m_key_map[KEY_KPDOT] = IRR_KEY_SEPARATOR;
m_key_map[85] = IRR_KEY_UNKNOWN; //KEY_ZENKAKUHANKAKU m_key_map[KEY_ZENKAKUHANKAKU] = IRR_KEY_UNKNOWN;
m_key_map[86] = IRR_KEY_OEM_102; //KEY_102ND m_key_map[KEY_102ND] = IRR_KEY_OEM_102;
m_key_map[87] = IRR_KEY_F11; //KEY_F11 m_key_map[KEY_F11] = IRR_KEY_F11;
m_key_map[88] = IRR_KEY_F12; //KEY_F12 m_key_map[KEY_F12] = IRR_KEY_F12;
m_key_map[89] = IRR_KEY_UNKNOWN; //KEY_RO m_key_map[KEY_RO] = IRR_KEY_UNKNOWN;
m_key_map[90] = IRR_KEY_UNKNOWN; //KEY_KATAKANA m_key_map[KEY_KATAKANA] = IRR_KEY_UNKNOWN;
m_key_map[91] = IRR_KEY_UNKNOWN; //KEY_HIRAGANA m_key_map[KEY_HIRAGANA] = IRR_KEY_UNKNOWN;
m_key_map[92] = IRR_KEY_UNKNOWN; //KEY_HENKAN m_key_map[KEY_HENKAN] = IRR_KEY_UNKNOWN;
m_key_map[93] = IRR_KEY_UNKNOWN; //KEY_KATAKANAHIRAGANA m_key_map[KEY_KATAKANAHIRAGANA] = IRR_KEY_UNKNOWN;
m_key_map[94] = IRR_KEY_UNKNOWN; //KEY_MUHENKAN m_key_map[KEY_MUHENKAN] = IRR_KEY_UNKNOWN;
m_key_map[95] = IRR_KEY_SEPARATOR; //KEY_KPJPCOMMA m_key_map[KEY_KPJPCOMMA] = IRR_KEY_SEPARATOR;
m_key_map[96] = IRR_KEY_RETURN; //KEY_KPENTER m_key_map[KEY_KPENTER] = IRR_KEY_RETURN;
m_key_map[97] = IRR_KEY_RCONTROL; //KEY_RIGHTCTRL m_key_map[KEY_RIGHTCTRL] = IRR_KEY_RCONTROL;
m_key_map[98] = IRR_KEY_DIVIDE; //KEY_KPSLASH m_key_map[KEY_KPSLASH] = IRR_KEY_DIVIDE;
m_key_map[99] = IRR_KEY_UNKNOWN; //KEY_SYSRQ m_key_map[KEY_SYSRQ] = IRR_KEY_UNKNOWN;
m_key_map[100] = IRR_KEY_RMENU; //KEY_RIGHTALT m_key_map[KEY_RIGHTALT] = IRR_KEY_RMENU;
m_key_map[101] = IRR_KEY_UNKNOWN; //KEY_LINEFEED m_key_map[KEY_LINEFEED] = IRR_KEY_UNKNOWN;
m_key_map[102] = IRR_KEY_HOME; //KEY_HOME m_key_map[KEY_HOME] = IRR_KEY_HOME;
m_key_map[103] = IRR_KEY_UP; //KEY_UP m_key_map[KEY_UP] = IRR_KEY_UP;
m_key_map[104] = IRR_KEY_PRIOR; //KEY_PAGEUP m_key_map[KEY_PAGEUP] = IRR_KEY_PRIOR;
m_key_map[105] = IRR_KEY_LEFT; //KEY_LEFT m_key_map[KEY_LEFT] = IRR_KEY_LEFT;
m_key_map[106] = IRR_KEY_RIGHT; //KEY_RIGHT m_key_map[KEY_RIGHT] = IRR_KEY_RIGHT;
m_key_map[107] = IRR_KEY_END; //KEY_END m_key_map[KEY_END] = IRR_KEY_END;
m_key_map[108] = IRR_KEY_DOWN; //KEY_DOWN m_key_map[KEY_DOWN] = IRR_KEY_DOWN;
m_key_map[109] = IRR_KEY_NEXT; //KEY_PAGEDOWN m_key_map[KEY_PAGEDOWN] = IRR_KEY_NEXT;
m_key_map[110] = IRR_KEY_INSERT; //KEY_INSERT m_key_map[KEY_INSERT] = IRR_KEY_INSERT;
m_key_map[111] = IRR_KEY_DELETE; //KEY_DELETE m_key_map[KEY_DELETE] = IRR_KEY_DELETE;
m_key_map[112] = IRR_KEY_UNKNOWN; //KEY_MACRO m_key_map[KEY_MACRO] = IRR_KEY_UNKNOWN;
m_key_map[113] = IRR_KEY_VOLUME_MUTE; //KEY_MUTE m_key_map[KEY_MUTE] = IRR_KEY_VOLUME_MUTE;
m_key_map[114] = IRR_KEY_VOLUME_DOWN; //KEY_VOLUMEDOWN m_key_map[KEY_VOLUMEDOWN] = IRR_KEY_VOLUME_DOWN;
m_key_map[115] = IRR_KEY_VOLUME_UP; //KEY_VOLUMEUP m_key_map[KEY_VOLUMEUP] = IRR_KEY_VOLUME_UP;
m_key_map[116] = IRR_KEY_UNKNOWN; //KEY_POWER m_key_map[KEY_POWER] = IRR_KEY_UNKNOWN;
m_key_map[117] = IRR_KEY_RETURN; //KEY_KPEQUAL m_key_map[KEY_KPEQUAL] = IRR_KEY_RETURN;
m_key_map[118] = IRR_KEY_PLUS; //KEY_KPPLUSMINUS m_key_map[KEY_KPPLUSMINUS] = IRR_KEY_PLUS;
m_key_map[119] = IRR_KEY_PAUSE; //KEY_PAUSE m_key_map[KEY_PAUSE] = IRR_KEY_PAUSE;
m_key_map[120] = IRR_KEY_UNKNOWN; //KEY_SCALE m_key_map[KEY_SCALE] = IRR_KEY_UNKNOWN;
m_key_map[121] = IRR_KEY_COMMA; //KEY_KPCOMMA m_key_map[KEY_KPCOMMA] = IRR_KEY_COMMA;
m_key_map[122] = IRR_KEY_UNKNOWN; //KEY_HANGEUL m_key_map[KEY_HANGEUL] = IRR_KEY_UNKNOWN;
m_key_map[123] = IRR_KEY_UNKNOWN; //KEY_HANJA m_key_map[KEY_HANJA] = IRR_KEY_UNKNOWN;
m_key_map[124] = IRR_KEY_UNKNOWN; //KEY_YEN m_key_map[KEY_YEN] = IRR_KEY_UNKNOWN;
m_key_map[125] = IRR_KEY_LWIN; //KEY_LEFTMETA m_key_map[KEY_LEFTMETA] = IRR_KEY_LWIN;
m_key_map[126] = IRR_KEY_RWIN; //KEY_RIGHTMETA m_key_map[KEY_RIGHTMETA] = IRR_KEY_RWIN;
m_key_map[127] = IRR_KEY_MENU; //KEY_COMPOSE m_key_map[KEY_COMPOSE] = IRR_KEY_MENU;
} }
// The joystick code is mostly copied from CIrrDeviceLinux. // The joystick code is mostly copied from CIrrDeviceLinux.