qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [v2, 3/4] qemu-char: add support for U-prefixed symbols


From: Michael Tokarev
Subject: Re: [Qemu-devel] [v2, 3/4] qemu-char: add support for U-prefixed symbols
Date: Fri, 01 Nov 2013 13:59:17 +0400
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130922 Icedove/17.0.9

16.10.2013 16:40, Jan Krupa wrote:
This patch adds support for Unicode symbols in keymap files. This
feature was already used in some keyboard layouts in QEMU generated
from XKB (e.g. Arabic) but it wasn't implemented in QEMU source code.

There is no need for check of validity of the hex string after U character
because strtol returns 0 in case the conversion was unsuccessful.

Signed-off-by: Jan Krupa <address@hidden>

---
ui/keymaps.c |    3 +++
  1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/ui/keymaps.c b/ui/keymaps.c
index f373cc5..426a893 100644
--- a/ui/keymaps.c
+++ b/ui/keymaps.c
@@ -33,6 +33,9 @@ static int get_keysym(const name2keysym_t *table,
          if (!strcmp(p->name, name))
              return p->keysym;
      }
+    if (strlen(name) == 5 && name[0] == 'U') {
+        return (int)strtol(name + 1, NULL, 16);
+    }
      return 0;
  }


I still dislike this.  People already complained that the keysyms
should be case-insensitive.  And there might be many words starting
with "u" and of 5 chars long.

How about this:

Author: Jan Krupa <address@hidden>
Date:   Wed Oct 16 14:40:05 2013 +0200

    qemu-char: add support for U-prefixed symbols

    This patch adds support for Unicode symbols in keymap files. This
    feature was already used in some keyboard layouts in QEMU generated
    from XKB (e.g. Arabic) but it wasn't implemented in QEMU source code.

    There is no need for check of validity of the hex string after U character
    because strtol returns 0 in case the conversion was unsuccessful.

    Signed-off-by: Jan Krupa <address@hidden>
    Signed-off-by: Michael Tokarev <address@hidden>

diff --git a/ui/keymaps.c b/ui/keymaps.c
index f373cc5..80d658d 100644
--- a/ui/keymaps.c
+++ b/ui/keymaps.c
@@ -33,6 +33,12 @@ static int get_keysym(const name2keysym_t *table,
         if (!strcmp(p->name, name))
             return p->keysym;
     }
+    if (name[0] == 'U' && strlen(name) == 5) { /* try unicode Uxxxx */
+        char *end;
+        int ret = (int)strtoul(name + 1, &end, 16);
+        if (*end == '\0' && ret > 0)
+          return ret;
+    }
     return 0;
 }


?

(I'm not sure about the author here, I just commit --amend'ed your change)


Thanks,

/mjt



reply via email to

[Prev in Thread] Current Thread [Next in Thread]