From 58041f51053eb3318693a596ef712beeec524d89 Mon Sep 17 00:00:00 2001 From: Aaron Culliney Date: Wed, 1 Jan 2014 11:13:22 -0800 Subject: [PATCH] Set/synchronize CAPSLOCK from X11 --- src/keys.c | 7 +------ src/keys.h | 1 + src/xvideo.c | 5 +++++ 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/keys.c b/src/keys.c index 75ec6a08..5ddc063a 100644 --- a/src/keys.c +++ b/src/keys.c @@ -52,7 +52,7 @@ extern int raw_js_y; static int next_key = -1; static int last_scancode = -1; -static char caps_lock = 1; /* is enabled */ +bool caps_lock = false; /* is enabled */ static bool in_interface = false; /* ---------------------------------------------------- @@ -165,11 +165,6 @@ void c_handle_input(int scancode, int pressed) { last_scancode = scancode; - if (key_pressed[ SCODE_CAPS ]) - { - caps_lock = !caps_lock; - } - if ((key_pressed[ SCODE_L_SHIFT ] || key_pressed[ SCODE_R_SHIFT ]) && (key_pressed[ SCODE_L_CTRL ] || key_pressed[ SCODE_R_CTRL ])) { diff --git a/src/keys.h b/src/keys.h index 3a45bdca..d1aca7a8 100644 --- a/src/keys.h +++ b/src/keys.h @@ -137,6 +137,7 @@ // ---------------------------------------------------------------------------- extern pthread_mutex_t interface_mutex; +extern bool caps_lock; #ifdef PC_JOYSTICK extern int js_fd; diff --git a/src/xvideo.c b/src/xvideo.c index 451f5fc0..1a1a3351 100644 --- a/src/xvideo.c +++ b/src/xvideo.c @@ -556,6 +556,11 @@ void video_sync(int block) { // also process other input events post_image(); + // sync to the capslock state (which could be modified outside this app) + unsigned int caps_state = 0; + XkbGetIndicatorState(display, XkbUseCoreKbd, &caps_state); + caps_lock = (caps_state & 0x01); + bool keyevent = true; do { if (doShm)