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