On 11/01/2013 12:28 PM, Michael Tokarev wrote: > 01.11.2013 13:59, Michael Tokarev пишет: >> 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 <jkr...@suse.com> >>> >>> --- >>> 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 <jkr...@suse.com> >> 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 <jkr...@suse.com> >> Signed-off-by: Michael Tokarev <m...@tls.msk.ru> >> >> 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); > > Maybe strtol() here as in original.. On my system, both work > the same anyway :)
Hi Michael, Thanks for the review! Your change looks good. Agree with adding it this way. Jan