ctrl+<key> incorrect/missing keycodes with dvorak layout

Dieter Plaetinck dieter at plaetinck.be
Tue Nov 25 02:03:59 PST 2008


Hi again list,
I still haven't managed to figure this one out.  the resulting keycodes 
when holding control are 'weird', to say at least.
Any help is appreciated.

Dieter Plaetinck wrote:
> Hi list,
> I'm using:
> xorg 7.4
> xorg-server 1.5.3
> xkeyboard-config 1.4
>
> I'm using a regular ps/2 azerty keyboard but with dvorak layout.  The
> problem is the dvorak layout by itself works fine, but when I press (and
> hold) ctrl the other buttons behave totally differently, some seem to be
> qwerty again but sometimes it's even different.
> I test this in urxvt and xterm, so no gtk or gnome is involved (not that
> I know)
> Examples: (xev output follows later)
> * ctrl+c becomes ctrl+i (dvorak c is on qwerty i)
> * ctrl+j on dvorak does not become ctrl+c (what it would be in qwerty).
> * ctrl+a only produces thew  ctrl character.
>
> I have this problem both with hal hotplugging and with the classic
> method (autoadddevices false).
> I have this with both layout dvorak and dvorak-intl.
> setxkbmap -layout dvorak[-intl] doesn't change anything
>
> dieter at dieter-ws ~ $ setxkbmap -v
> Trying to build keymap using the following components:
> keycodes:   xfree86+aliases(qwerty)
> types:      complete
> compat:     complete
> symbols:    pc+us(dvorak-intl)
> geometry:   pc(pc104)
>
> ( I posted my xorg.conf and fdi file here:
> http://bbs.archlinux.org/viewtopic.php?pid=451182#p451182 )
>
> dieter at dieter-ws ~ $xmodmap -pke # some relevant keys
> keycode  31 = c C c C ccedilla dead_abovedot
> keycode  38 = a A a A agrave
> keycode  39 = o O o O ocircumflex
> keycode  40 = e E e E eacute
> keycode  41 = u U u U ucircumflex
> keycode  42 = i I i I icircumflex
>
>
> And now, the xev's:
>
> * xev ctrl+c (press+hold ctrl, press c, release c, release ctrl !)
> KeyPress event, serial 32, synthetic NO, window 0x1c00001,
>    root 0x188, subw 0x0, time 1817959, (170,-29), root:(196,66),
>    state 0x10, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
>    XLookupString gives 0 bytes:
>    XmbLookupString gives 0 bytes:
>    XFilterEvent returns: False
>
> FocusOut event, serial 32, synthetic NO, window 0x1c00001,
>    mode NotifyGrab, detail NotifyAncestor
>
> FocusIn event, serial 32, synthetic NO, window 0x1c00001,
>    mode NotifyUngrab, detail NotifyAncestor
>
> KeymapNotify event, serial 32, synthetic NO, window 0x0,
>    keys:  4294967176 0   0   0   32  0   0   0   0   0   0   0   0
> 0   0   0
>           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
>
> KeyRelease event, serial 32, synthetic NO, window 0x1c00001,
>    root 0x188, subw 0x0, time 1820112, (170,-29), root:(196,66),
>    state 0x14, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
>    XLookupString gives 0 bytes:
>    XFilterEvent returns: False
>
>
>
> * xev ctrl+j
>
> KeyPress event, serial 29, synthetic NO, window 0x1c00001,
>    root 0x188, subw 0x0, time 1240357, (171,-26), root:(197,69),
>    state 0x10, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
>    XLookupString gives 0 bytes:
>    XmbLookupString gives 0 bytes:
>    XFilterEvent returns: False
>
> KeyPress event, serial 32, synthetic NO, window 0x1c00001,
>    root 0x188, subw 0x0, time 1241550, (171,-26), root:(197,69),
>    state 0x14, keycode 54 (keysym 0x6a, j), same_screen YES,
>    XLookupString gives 1 bytes: (0a) "
> "
>    XmbLookupString gives 1 bytes: (0a) "
> "
>    XFilterEvent returns: False
>
> KeyRelease event, serial 32, synthetic NO, window 0x1c00001,
>    root 0x188, subw 0x0, time 1241644, (171,-26), root:(197,69),
>    state 0x14, keycode 54 (keysym 0x6a, j), same_screen YES,
>    XLookupString gives 1 bytes: (0a) "
> "
>    XFilterEvent returns: False
>
> KeyRelease event, serial 32, synthetic NO, window 0x1c00001,
>    root 0x188, subw 0x0, time 1242297, (171,-26), root:(197,69),
>    state 0x14, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
>    XLookupString gives 0 bytes:
>    XFilterEvent returns: False
>
>
> * xev ctrl+a (press+hold ctrl, press a, release a, release ctrl !)
>
> KeyPress event, serial 29, synthetic NO, window 0x1800001,
>    root 0x188, subw 0x0, time 16768525, (171,-26), root:(185,38),
>    state 0x10, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
>    XLookupString gives 0 bytes:
>    XmbLookupString gives 0 bytes:
>    XFilterEvent returns: False
>
> FocusOut event, serial 32, synthetic NO, window 0x1800001,
>    mode NotifyGrab, detail NotifyAncestor
>
> FocusIn event, serial 32, synthetic NO, window 0x1800001,
>    mode NotifyUngrab, detail NotifyAncestor
>
> KeymapNotify event, serial 32, synthetic NO, window 0x0,
>    keys:  4294967290 0   0   0   32  0   0   0   0   0   0   0   0   0 
>   0   0
>           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
>
> KeyRelease event, serial 32, synthetic NO, window 0x1800001,
>    root 0x188, subw 0x0, time 16770786, (171,-26), root:(185,38),
>    state 0x14, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
>    XLookupString gives 0 bytes:
>    XFilterEvent returns: False
>
>
> * xev a:
> KeyPress event, serial 29, synthetic NO, window 0x1c00001,
>    root 0x188, subw 0x0, time 1778583, (166,-26), root:(192,69),
>    state 0x10, keycode 38 (keysym 0x61, a), same_screen YES,
>    XLookupString gives 1 bytes: (61) "a"
>    XmbLookupString gives 1 bytes: (61) "a"
>    XFilterEvent returns: False
>
> KeyRelease event, serial 32, synthetic NO, window 0x1c00001,
>    root 0x188, subw 0x0, time 1778694, (166,-26), root:(192,69),
>    state 0x10, keycode 38 (keysym 0x61, a), same_screen YES,
>    XLookupString gives 1 bytes: (61) "a"
>    XFilterEvent returns: False
>
>
>
> Is there anyone who understands anything of this?
> Thanks,
> Dieter
>
>




More information about the xorg mailing list