Message ID | 1432648685-17925-2-git-send-email-kraxel@redhat.com |
---|---|
State | New |
Headers | show |
On 26-05-2015 10:58, Gerd Hoffmann wrote: > This patch adds the two extra brazilian keys to the evdev keymap for > X11. This patch gets the two keys going with the gtk and sdl1 UIs. > > With vnc (remote-viewer) only one of the two works correctly. > Probably a client-side issue. Not investigated in detail though. > > The SDL2 library complains it doesn't know these keys, so the SDL2 > library must be fixed before we can update ui/sdl2-keymap.h > > Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> > --- > ui/x_keymap.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/ui/x_keymap.c b/ui/x_keymap.c > index b9b0944..4e899b4 100644 > --- a/ui/x_keymap.c > +++ b/ui/x_keymap.c > @@ -94,7 +94,7 @@ static const uint8_t x_keycode_to_pc_keycode[115] = { > */ > > static const uint8_t evdev_keycode_to_pc_keycode[61] = { > - 0, /* 97 EVDEV - RO ("Internet" Keyboards) */ > + 0x73, /* 97 EVDEV - RO ("Internet" Keyboards) */ > 0, /* 98 EVDEV - KATA (Katakana) */ > 0, /* 99 EVDEV - HIRA (Hiragana) */ > 0x79, /* 100 EVDEV - HENK (Henkan) */ > @@ -126,7 +126,7 @@ static const uint8_t evdev_keycode_to_pc_keycode[61] = { > 0, /* 126 EVDEV - I126 ("Internet" Keyboards) */ > 0, /* 127 EVDEV - PAUS */ > 0, /* 128 EVDEV - ???? */ > - 0, /* 129 EVDEV - I129 ("Internet" Keyboards) */ > + 0xf0, /* 129 EVDEV - I129 ("Internet" Keyboards) */ > 0xf1, /* 130 EVDEV - HNGL (Korean Hangul Latin toggle) */ > 0xf2, /* 131 EVDEV - HJCV (Korean Hangul Hanja toggle) */ > 0x7d, /* 132 AE13 (Yen)*/ With this patch, the / key now works. Unfortunately, the numpad period does not work. Note that /usr/share/qemu/keymaps/pt-br lists 0x34 for KP_Decimal (this is the code my patch was using), instead of 0xf0. Thanks, João Luis.
Gerd Hoffmann <kraxel@redhat.com> writes: > This patch adds the two extra brazilian keys to the evdev keymap for > X11. This patch gets the two keys going with the gtk and sdl1 UIs. > > With vnc (remote-viewer) only one of the two works correctly. > Probably a client-side issue. Not investigated in detail though. > > The SDL2 library complains it doesn't know these keys, so the SDL2 > library must be fixed before we can update ui/sdl2-keymap.h > > Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> > --- > ui/x_keymap.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/ui/x_keymap.c b/ui/x_keymap.c > index b9b0944..4e899b4 100644 > --- a/ui/x_keymap.c > +++ b/ui/x_keymap.c > @@ -94,7 +94,7 @@ static const uint8_t x_keycode_to_pc_keycode[115] = { > */ > > static const uint8_t evdev_keycode_to_pc_keycode[61] = { > - 0, /* 97 EVDEV - RO ("Internet" Keyboards) */ > + 0x73, /* 97 EVDEV - RO ("Internet" Keyboards) */ > 0, /* 98 EVDEV - KATA (Katakana) */ > 0, /* 99 EVDEV - HIRA (Hiragana) */ > 0x79, /* 100 EVDEV - HENK (Henkan) */ > @@ -126,7 +126,7 @@ static const uint8_t evdev_keycode_to_pc_keycode[61] = { > 0, /* 126 EVDEV - I126 ("Internet" Keyboards) */ > 0, /* 127 EVDEV - PAUS */ > 0, /* 128 EVDEV - ???? */ > - 0, /* 129 EVDEV - I129 ("Internet" Keyboards) */ > + 0xf0, /* 129 EVDEV - I129 ("Internet" Keyboards) */ > 0xf1, /* 130 EVDEV - HNGL (Korean Hangul Latin toggle) */ > 0xf2, /* 131 EVDEV - HJCV (Korean Hangul Hanja toggle) */ > 0x7d, /* 132 AE13 (Yen)*/ The two patches together associate name number evdev ro 0x73 97 kp_comma 0xf0 129 If I understand things correctly, we can freely choose number (we choose it to match PS/2 scancodes, however), but evdev is externally defined. Correct? My /usr/share/X11/xkb/keycodes/evdev has // Keys that are generated on Japanese keyboards <AB11> = 97; // backslash/underscore //<RO> = 97; // Romaji and // Extended keys that may be generated on "Internet" keyboards. // evdev has standardize names for these. <I129> = 129; // #define KEY_KPCOMMA 121 I guess this is where you got the name 'ro'. Okay. I'm pretty ignorant about evdev, so please excuse if my questions are stupid: 1. Can you explain why you picked <RO> over <AB11>? 2. Should the comment in your second hunk be changed from EVDEV - I129 ("Internet" Keyboards) to something mentioning KPCOMMA?
On Wed, May 27, 2015 at 01:19:06PM +0200, Markus Armbruster wrote: > Gerd Hoffmann <kraxel@redhat.com> writes: > > > This patch adds the two extra brazilian keys to the evdev keymap for > > X11. This patch gets the two keys going with the gtk and sdl1 UIs. > > > > With vnc (remote-viewer) only one of the two works correctly. > > Probably a client-side issue. Not investigated in detail though. > > > > The SDL2 library complains it doesn't know these keys, so the SDL2 > > library must be fixed before we can update ui/sdl2-keymap.h > > > > Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> > > --- > > ui/x_keymap.c | 4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/ui/x_keymap.c b/ui/x_keymap.c > > index b9b0944..4e899b4 100644 > > --- a/ui/x_keymap.c > > +++ b/ui/x_keymap.c > > @@ -94,7 +94,7 @@ static const uint8_t x_keycode_to_pc_keycode[115] = { > > */ > > > > static const uint8_t evdev_keycode_to_pc_keycode[61] = { > > - 0, /* 97 EVDEV - RO ("Internet" Keyboards) */ > > + 0x73, /* 97 EVDEV - RO ("Internet" Keyboards) */ > > 0, /* 98 EVDEV - KATA (Katakana) */ > > 0, /* 99 EVDEV - HIRA (Hiragana) */ > > 0x79, /* 100 EVDEV - HENK (Henkan) */ > > @@ -126,7 +126,7 @@ static const uint8_t evdev_keycode_to_pc_keycode[61] = { > > 0, /* 126 EVDEV - I126 ("Internet" Keyboards) */ > > 0, /* 127 EVDEV - PAUS */ > > 0, /* 128 EVDEV - ???? */ > > - 0, /* 129 EVDEV - I129 ("Internet" Keyboards) */ > > + 0xf0, /* 129 EVDEV - I129 ("Internet" Keyboards) */ > > 0xf1, /* 130 EVDEV - HNGL (Korean Hangul Latin toggle) */ > > 0xf2, /* 131 EVDEV - HJCV (Korean Hangul Hanja toggle) */ > > 0x7d, /* 132 AE13 (Yen)*/ > > The two patches together associate > > name number evdev > ro 0x73 97 > kp_comma 0xf0 129 > > If I understand things correctly, we can freely choose number (we choose > it to match PS/2 scancodes, however), but evdev is externally defined. > Correct? > > My /usr/share/X11/xkb/keycodes/evdev has > > // Keys that are generated on Japanese keyboards > <AB11> = 97; // backslash/underscore > //<RO> = 97; // Romaji > > and > > // Extended keys that may be generated on "Internet" keyboards. > // evdev has standardize names for these. > <I129> = 129; // #define KEY_KPCOMMA 121 > > I guess this is where you got the name 'ro'. Okay. > > I'm pretty ignorant about evdev, so please excuse if my questions are > stupid: > > 1. Can you explain why you picked <RO> over <AB11>? /usr/include/linux/input.h calls it KEY_RO - not sure why X11 would use AB11 for that keycode instead, but I figure it is better for use to use the Linux names here. > > 2. Should the comment in your second hunk be changed from > > EVDEV - I129 ("Internet" Keyboards) > > to something mentioning KPCOMMA? Yeah, I think it would make sense. Regards, Daniel
On Tue, May 26, 2015 at 03:58:05PM +0200, Gerd Hoffmann wrote: > This patch adds the two extra brazilian keys to the evdev keymap for > X11. This patch gets the two keys going with the gtk and sdl1 UIs. > > With vnc (remote-viewer) only one of the two works correctly. > Probably a client-side issue. Not investigated in detail though. The gtk-vnc keymaps.csv file has entries for both these key codes. For EVDEV_RO it maps to XT KBD code 115 (0x73 in decimal) which matches your patch. For EVDEV_KPCOMMA it maps to XT KBD code 126 (0x7e in decimal) which does not match your patch. I'm not sure where I got that mapping from originally - probably from the Linux kernel's XT <-> evdev keymapping tables. So presumably you were finding the KPCOMMA one was broken in remote-viewer ? It'll be broken in SPICE too, since that shares the same keymaps.csv file > static const uint8_t evdev_keycode_to_pc_keycode[61] = { > - 0, /* 97 EVDEV - RO ("Internet" Keyboards) */ > + 0x73, /* 97 EVDEV - RO ("Internet" Keyboards) */ > 0, /* 98 EVDEV - KATA (Katakana) */ > 0, /* 99 EVDEV - HIRA (Hiragana) */ > 0x79, /* 100 EVDEV - HENK (Henkan) */ > @@ -126,7 +126,7 @@ static const uint8_t evdev_keycode_to_pc_keycode[61] = { > 0, /* 126 EVDEV - I126 ("Internet" Keyboards) */ > 0, /* 127 EVDEV - PAUS */ > 0, /* 128 EVDEV - ???? */ > - 0, /* 129 EVDEV - I129 ("Internet" Keyboards) */ > + 0xf0, /* 129 EVDEV - I129 ("Internet" Keyboards) */ > 0xf1, /* 130 EVDEV - HNGL (Korean Hangul Latin toggle) */ > 0xf2, /* 131 EVDEV - HJCV (Korean Hangul Hanja toggle) */ > 0x7d, /* 132 AE13 (Yen)*/ Regards, Daniel
On Mi, 2015-05-27 at 06:27 -0300, Joao Luis Meloni Assirati wrote: > On 26-05-2015 10:58, Gerd Hoffmann wrote: > > This patch adds the two extra brazilian keys to the evdev keymap for > > X11. This patch gets the two keys going with the gtk and sdl1 UIs. > > > > With vnc (remote-viewer) only one of the two works correctly. > > Probably a client-side issue. Not investigated in detail though. > > > > The SDL2 library complains it doesn't know these keys, so the SDL2 > > library must be fixed before we can update ui/sdl2-keymap.h > > > > Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> > > --- > > ui/x_keymap.c | 4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/ui/x_keymap.c b/ui/x_keymap.c > > index b9b0944..4e899b4 100644 > > --- a/ui/x_keymap.c > > +++ b/ui/x_keymap.c > > @@ -94,7 +94,7 @@ static const uint8_t x_keycode_to_pc_keycode[115] = { > > */ > > > > static const uint8_t evdev_keycode_to_pc_keycode[61] = { > > - 0, /* 97 EVDEV - RO ("Internet" Keyboards) */ > > + 0x73, /* 97 EVDEV - RO ("Internet" Keyboards) */ > > 0, /* 98 EVDEV - KATA (Katakana) */ > > 0, /* 99 EVDEV - HIRA (Hiragana) */ > > 0x79, /* 100 EVDEV - HENK (Henkan) */ > > @@ -126,7 +126,7 @@ static const uint8_t evdev_keycode_to_pc_keycode[61] = { > > 0, /* 126 EVDEV - I126 ("Internet" Keyboards) */ > > 0, /* 127 EVDEV - PAUS */ > > 0, /* 128 EVDEV - ???? */ > > - 0, /* 129 EVDEV - I129 ("Internet" Keyboards) */ > > + 0xf0, /* 129 EVDEV - I129 ("Internet" Keyboards) */ > > 0xf1, /* 130 EVDEV - HNGL (Korean Hangul Latin toggle) */ > > 0xf2, /* 131 EVDEV - HJCV (Korean Hangul Hanja toggle) */ > > 0x7d, /* 132 AE13 (Yen)*/ > > With this patch, the / key now works. > Unfortunately, the numpad period > does not work. Note that /usr/share/qemu/keymaps/pt-br lists 0x34 for > KP_Decimal (this is the code my patch was using), instead of 0xf0. Which ui is this? vnc? What happens if you change KP_Decimal to 0xf0 in the pt-br keymap? cheers, Gerd
On Mi, 2015-05-27 at 13:19 +0200, Markus Armbruster wrote: > Gerd Hoffmann <kraxel@redhat.com> writes: > > > This patch adds the two extra brazilian keys to the evdev keymap for > > X11. This patch gets the two keys going with the gtk and sdl1 UIs. > > > > With vnc (remote-viewer) only one of the two works correctly. > > Probably a client-side issue. Not investigated in detail though. > > > > The SDL2 library complains it doesn't know these keys, so the SDL2 > > library must be fixed before we can update ui/sdl2-keymap.h > > > > Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> > > --- > > ui/x_keymap.c | 4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/ui/x_keymap.c b/ui/x_keymap.c > > index b9b0944..4e899b4 100644 > > --- a/ui/x_keymap.c > > +++ b/ui/x_keymap.c > > @@ -94,7 +94,7 @@ static const uint8_t x_keycode_to_pc_keycode[115] = { > > */ > > > > static const uint8_t evdev_keycode_to_pc_keycode[61] = { > > - 0, /* 97 EVDEV - RO ("Internet" Keyboards) */ > > + 0x73, /* 97 EVDEV - RO ("Internet" Keyboards) */ > > 0, /* 98 EVDEV - KATA (Katakana) */ > > 0, /* 99 EVDEV - HIRA (Hiragana) */ > > 0x79, /* 100 EVDEV - HENK (Henkan) */ > > @@ -126,7 +126,7 @@ static const uint8_t evdev_keycode_to_pc_keycode[61] = { > > 0, /* 126 EVDEV - I126 ("Internet" Keyboards) */ > > 0, /* 127 EVDEV - PAUS */ > > 0, /* 128 EVDEV - ???? */ > > - 0, /* 129 EVDEV - I129 ("Internet" Keyboards) */ > > + 0xf0, /* 129 EVDEV - I129 ("Internet" Keyboards) */ > > 0xf1, /* 130 EVDEV - HNGL (Korean Hangul Latin toggle) */ > > 0xf2, /* 131 EVDEV - HJCV (Korean Hangul Hanja toggle) */ > > 0x7d, /* 132 AE13 (Yen)*/ > > The two patches together associate > > name number evdev > ro 0x73 97 > kp_comma 0xf0 129 > > If I understand things correctly, we can freely choose number (we choose > it to match PS/2 scancodes, however), but evdev is externally defined. > Correct? Almost. The ps/2 keyboard implementation (and probably others too) assumes "number" are actually ps/2 scancodes. But, yes, in theory we could change this. > > My /usr/share/X11/xkb/keycodes/evdev has > > // Keys that are generated on Japanese keyboards > <AB11> = 97; // backslash/underscore > //<RO> = 97; // Romaji > > and > > // Extended keys that may be generated on "Internet" keyboards. > // evdev has standardize names for these. > <I129> = 129; // #define KEY_KPCOMMA 121 > > I guess this is where you got the name 'ro'. Okay. /usr/include/linux/input.h names this "KEY_RO' too. > 2. Should the comment in your second hunk be changed from > > EVDEV - I129 ("Internet" Keyboards) > > to something mentioning KPCOMMA? Makes sense indeed. cheers, Gerd
Hi, > For EVDEV_KPCOMMA it maps to XT KBD code 126 (0x7e in decimal) which > does not match your patch. I'm not sure where I got that mapping > from originally - probably from the Linux kernel's XT <-> evdev > keymapping tables. > > So presumably you were finding the KPCOMMA one was broken in > remote-viewer ? Yes. FYI: https://www.kraxel.org/cgit/input/ recently got a 'emulate-key' utility which sends key events via uinput. This allows to test this kind of stuff without actually having a physical brazilian keyboard. cheers, Gerd
On 27-05-2015 11:32, Gerd Hoffmann wrote: > On Mi, 2015-05-27 at 06:27 -0300, Joao Luis Meloni Assirati wrote: >> On 26-05-2015 10:58, Gerd Hoffmann wrote: >>> This patch adds the two extra brazilian keys to the evdev keymap for >>> X11. This patch gets the two keys going with the gtk and sdl1 UIs. >>> >>> With vnc (remote-viewer) only one of the two works correctly. >>> Probably a client-side issue. Not investigated in detail though. >>> >>> The SDL2 library complains it doesn't know these keys, so the SDL2 >>> library must be fixed before we can update ui/sdl2-keymap.h >>> >>> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> >>> --- >>> ui/x_keymap.c | 4 ++-- >>> 1 file changed, 2 insertions(+), 2 deletions(-) >>> >>> diff --git a/ui/x_keymap.c b/ui/x_keymap.c >>> index b9b0944..4e899b4 100644 >>> --- a/ui/x_keymap.c >>> +++ b/ui/x_keymap.c >>> @@ -94,7 +94,7 @@ static const uint8_t x_keycode_to_pc_keycode[115] = { >>> */ >>> >>> static const uint8_t evdev_keycode_to_pc_keycode[61] = { >>> - 0, /* 97 EVDEV - RO ("Internet" Keyboards) */ >>> + 0x73, /* 97 EVDEV - RO ("Internet" Keyboards) */ >>> 0, /* 98 EVDEV - KATA (Katakana) */ >>> 0, /* 99 EVDEV - HIRA (Hiragana) */ >>> 0x79, /* 100 EVDEV - HENK (Henkan) */ >>> @@ -126,7 +126,7 @@ static const uint8_t evdev_keycode_to_pc_keycode[61] = { >>> 0, /* 126 EVDEV - I126 ("Internet" Keyboards) */ >>> 0, /* 127 EVDEV - PAUS */ >>> 0, /* 128 EVDEV - ???? */ >>> - 0, /* 129 EVDEV - I129 ("Internet" Keyboards) */ >>> + 0xf0, /* 129 EVDEV - I129 ("Internet" Keyboards) */ >>> 0xf1, /* 130 EVDEV - HNGL (Korean Hangul Latin toggle) */ >>> 0xf2, /* 131 EVDEV - HJCV (Korean Hangul Hanja toggle) */ >>> 0x7d, /* 132 AE13 (Yen)*/ >> With this patch, the / key now works. > >> Unfortunately, the numpad period >> does not work. Note that /usr/share/qemu/keymaps/pt-br lists 0x34 for >> KP_Decimal (this is the code my patch was using), instead of 0xf0. > Which ui is this? vnc? No, it is the SDL ui. > > What happens if you change KP_Decimal to 0xf0 in the pt-br keymap? It makes no difference. And it should make no difference, as I am not using the -k switch. João Luis.
Hi, > For EVDEV_KPCOMMA it maps to XT KBD code 126 (0x7e in decimal) which > does not match your patch. I'm not sure where I got that mapping > from originally - probably from the Linux kernel's XT <-> evdev > keymapping tables. Did some more testing, 0x7e seems to be the correct one. Everything is consistent with that one: vnc client, input_event_key_* trace event, input-events reporting within the guest. So no change needed in gtk-vnc, I'll update the qemu patch. cheers, Gerd
On Thu, May 28, 2015 at 08:24:04AM +0200, Gerd Hoffmann wrote: > Hi, > > > For EVDEV_KPCOMMA it maps to XT KBD code 126 (0x7e in decimal) which > > does not match your patch. I'm not sure where I got that mapping > > from originally - probably from the Linux kernel's XT <-> evdev > > keymapping tables. > > Did some more testing, 0x7e seems to be the correct one. Everything is > consistent with that one: vnc client, input_event_key_* trace event, > input-events reporting within the guest. So no change needed in > gtk-vnc, I'll update the qemu patch. Ah excellant, thanks for letting me know. Regards, Daniel
diff --git a/ui/x_keymap.c b/ui/x_keymap.c index b9b0944..4e899b4 100644 --- a/ui/x_keymap.c +++ b/ui/x_keymap.c @@ -94,7 +94,7 @@ static const uint8_t x_keycode_to_pc_keycode[115] = { */ static const uint8_t evdev_keycode_to_pc_keycode[61] = { - 0, /* 97 EVDEV - RO ("Internet" Keyboards) */ + 0x73, /* 97 EVDEV - RO ("Internet" Keyboards) */ 0, /* 98 EVDEV - KATA (Katakana) */ 0, /* 99 EVDEV - HIRA (Hiragana) */ 0x79, /* 100 EVDEV - HENK (Henkan) */ @@ -126,7 +126,7 @@ static const uint8_t evdev_keycode_to_pc_keycode[61] = { 0, /* 126 EVDEV - I126 ("Internet" Keyboards) */ 0, /* 127 EVDEV - PAUS */ 0, /* 128 EVDEV - ???? */ - 0, /* 129 EVDEV - I129 ("Internet" Keyboards) */ + 0xf0, /* 129 EVDEV - I129 ("Internet" Keyboards) */ 0xf1, /* 130 EVDEV - HNGL (Korean Hangul Latin toggle) */ 0xf2, /* 131 EVDEV - HJCV (Korean Hangul Hanja toggle) */ 0x7d, /* 132 AE13 (Yen)*/
This patch adds the two extra brazilian keys to the evdev keymap for X11. This patch gets the two keys going with the gtk and sdl1 UIs. With vnc (remote-viewer) only one of the two works correctly. Probably a client-side issue. Not investigated in detail though. The SDL2 library complains it doesn't know these keys, so the SDL2 library must be fixed before we can update ui/sdl2-keymap.h Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> --- ui/x_keymap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)