chiark / gitweb /
keymap: Ignore brightness keys on Dell Inspiron 1520 to avoid double events
[elogind.git] / src / libsystemd-terminal / evcat.c
index 590a30d8735bce1111c913352e4dc4ac8fdf11f6..9e8a262b79ae6fb7d2a5aa5169dc799ffc875da1 100644 (file)
@@ -203,6 +203,9 @@ static void kdata_print(idev_data *data) {
                         k->value == 1 ? "DOWN" :
                         "REPEAT");
 
+        /* Resync state */
+        printf(" | %-6s", data->resync ? "RESYNC" : "");
+
         /* Keycode that triggered the event */
         printf(" | %5u", (unsigned)k->keycode);
 
@@ -216,6 +219,13 @@ static void kdata_print(idev_data *data) {
         printf(" %-5s", (k->mods & IDEV_KBDMOD_LINUX) ? "LINUX" : "");
         printf(" %-4s", (k->mods & IDEV_KBDMOD_CAPS) ? "CAPS" : "");
 
+        /* Consumed modifiers */
+        printf(" | %-5s", (k->consumed_mods & IDEV_KBDMOD_SHIFT) ? "SHIFT" : "");
+        printf(" %-4s", (k->consumed_mods & IDEV_KBDMOD_CTRL) ? "CTRL" : "");
+        printf(" %-3s", (k->consumed_mods & IDEV_KBDMOD_ALT) ? "ALT" : "");
+        printf(" %-5s", (k->consumed_mods & IDEV_KBDMOD_LINUX) ? "LINUX" : "");
+        printf(" %-4s", (k->consumed_mods & IDEV_KBDMOD_CAPS) ? "CAPS" : "");
+
         /* Resolved symbols */
         printf(" |");
         for (i = 0; i < k->n_syms; ++i) {
@@ -313,8 +323,6 @@ static int evcat_sysview_fn(sysview_context *c, void *userdata, sysview_event *e
                         return r;
                 }
 
-                idev_session_enable(e->idev_session);
-
                 if (e->managed) {
                         r = sysview_session_take_control(ev->session_add.session);
                         if (r < 0) {
@@ -323,11 +331,14 @@ static int evcat_sysview_fn(sysview_context *c, void *userdata, sysview_event *e
                         }
                 }
 
+                idev_session_enable(e->idev_session);
+
                 break;
         case SYSVIEW_EVENT_SESSION_REMOVE:
                 idev_session_disable(e->idev_session);
                 e->idev_session = idev_session_free(e->idev_session);
-                sd_event_exit(e->event, 0);
+                if (sd_event_get_exit_code(e->event, &r) == -ENODATA)
+                        sd_event_exit(e->event, 0);
                 break;
         case SYSVIEW_EVENT_SESSION_ATTACH:
                 d = ev->session_attach.device;