Add scancode arrays for Wayland and Mir

Related to #830.
This commit is contained in:
Camilla Berglund 2016-08-14 14:42:47 +02:00
parent afb6e485b7
commit f17d60da64
4 changed files with 20 additions and 0 deletions

View File

@ -35,7 +35,10 @@
// //
static void createKeyTables(void) static void createKeyTables(void)
{ {
int scancode;
memset(_glfw.mir.publicKeys, -1, sizeof(_glfw.mir.publicKeys)); memset(_glfw.mir.publicKeys, -1, sizeof(_glfw.mir.publicKeys));
memset(_glfw.mir.nativeKeys, -1, sizeof(_glfw.mir.nativeKeys));
_glfw.mir.publicKeys[KEY_GRAVE] = GLFW_KEY_GRAVE_ACCENT; _glfw.mir.publicKeys[KEY_GRAVE] = GLFW_KEY_GRAVE_ACCENT;
_glfw.mir.publicKeys[KEY_1] = GLFW_KEY_1; _glfw.mir.publicKeys[KEY_1] = GLFW_KEY_1;
@ -153,6 +156,12 @@ static void createKeyTables(void)
_glfw.mir.publicKeys[KEY_KPCOMMA] = GLFW_KEY_KP_DECIMAL; _glfw.mir.publicKeys[KEY_KPCOMMA] = GLFW_KEY_KP_DECIMAL;
_glfw.mir.publicKeys[KEY_KPEQUAL] = GLFW_KEY_KP_EQUAL; _glfw.mir.publicKeys[KEY_KPEQUAL] = GLFW_KEY_KP_EQUAL;
_glfw.mir.publicKeys[KEY_KPENTER] = GLFW_KEY_KP_ENTER; _glfw.mir.publicKeys[KEY_KPENTER] = GLFW_KEY_KP_ENTER;
for (scancode = 0; scancode < 256; scancode++)
{
if (_glfw.mir.publicKeys[scancode] > 0)
_glfw.mir.nativeKeys[_glfw.mir.publicKeys[scancode]] = scancode;
}
} }

View File

@ -108,6 +108,7 @@ typedef struct _GLFWlibraryMir
EventQueue* event_queue; EventQueue* event_queue;
short int publicKeys[256]; short int publicKeys[256];
short int nativeKeys[GLFW_KEY_LAST + 1];
pthread_mutex_t event_mutex; pthread_mutex_t event_mutex;
pthread_cond_t event_cond; pthread_cond_t event_cond;

View File

@ -440,7 +440,10 @@ static const struct wl_registry_listener registryListener = {
// //
static void createKeyTables(void) static void createKeyTables(void)
{ {
int scancode;
memset(_glfw.wl.publicKeys, -1, sizeof(_glfw.wl.publicKeys)); memset(_glfw.wl.publicKeys, -1, sizeof(_glfw.wl.publicKeys));
memset(_glfw.wl.nativeKeys, -1, sizeof(_glfw.wl.nativeKeys));
_glfw.wl.publicKeys[KEY_GRAVE] = GLFW_KEY_GRAVE_ACCENT; _glfw.wl.publicKeys[KEY_GRAVE] = GLFW_KEY_GRAVE_ACCENT;
_glfw.wl.publicKeys[KEY_1] = GLFW_KEY_1; _glfw.wl.publicKeys[KEY_1] = GLFW_KEY_1;
@ -558,6 +561,12 @@ static void createKeyTables(void)
_glfw.wl.publicKeys[KEY_KPCOMMA] = GLFW_KEY_KP_DECIMAL; _glfw.wl.publicKeys[KEY_KPCOMMA] = GLFW_KEY_KP_DECIMAL;
_glfw.wl.publicKeys[KEY_KPEQUAL] = GLFW_KEY_KP_EQUAL; _glfw.wl.publicKeys[KEY_KPEQUAL] = GLFW_KEY_KP_EQUAL;
_glfw.wl.publicKeys[KEY_KPENTER] = GLFW_KEY_KP_ENTER; _glfw.wl.publicKeys[KEY_KPENTER] = GLFW_KEY_KP_ENTER;
for (scancode = 0; scancode < 256; scancode++)
{
if (_glfw.wl.publicKeys[scancode] > 0)
_glfw.wl.nativeKeys[_glfw.wl.publicKeys[scancode]] = scancode;
}
} }

View File

@ -130,6 +130,7 @@ typedef struct _GLFWlibraryWayland
int monitorsSize; int monitorsSize;
short int publicKeys[256]; short int publicKeys[256];
short int nativeKeys[GLFW_KEY_LAST + 1];
struct { struct {
struct xkb_context* context; struct xkb_context* context;