test/interactive: use xkb_state_key_get_one_sym() when there's only 1
authorRan Benita <ran234@gmail.com>
Tue, 13 Aug 2013 15:55:09 +0000 (18:55 +0300)
committerRan Benita <ran234@gmail.com>
Thu, 15 Aug 2013 06:58:50 +0000 (09:58 +0300)
Kind of odd, but get_one_sym() will be getting a different behavior.
Real life users *should* pick one or the other.

Signed-off-by: Ran Benita <ran234@gmail.com>
test/interactive.c

index f90f6eb..341693f 100644 (file)
@@ -236,12 +236,19 @@ print_keycode(struct keyboard *kbd, xkb_keycode_t keycode)
     if (nsyms <= 0)
         return;
 
-    printf("keysyms [ ");
-    for (i = 0; i < nsyms; i++) {
-        xkb_keysym_get_name(syms[i], s, sizeof(s));
-        printf("%-*s ", (int)sizeof(s), s);
+    if (nsyms == 1) {
+        xkb_keysym_t sym = xkb_state_key_get_one_sym(state, keycode);
+        xkb_keysym_get_name(sym, s, sizeof(s));
+        printf("keysym [ %-*s ] ", (int) sizeof(s), s);
+    }
+    else {
+        printf("keysyms [ ");
+        for (i = 0; i < nsyms; i++) {
+            xkb_keysym_get_name(syms[i], s, sizeof(s));
+            printf("%-*s ", (int) sizeof(s), s);
+        }
+        printf("] ");
     }
-    printf("] ");
 
     /*
      * Only do this if wchar_t is UCS-4, so we can be lazy and print