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

Bug#470886: xserver-xorg-input-kbd: repeated KeyPress events when switching VT while pressing a key



Package: xserver-xorg-input-kbd
Version: 1:1.2.2-3
Severity: normal


Hiya,

this has been buggering me for a long time, only now I've put a
little investigation in it.

If, from xorg, I switch to another VT while pressing a key, the
original X server keeps sending keypress events to the
previously focused client (and keyrelease events to some other
client which I've not determined) at the keyboard repeat rate.

This is typically reproduced with "kdmctl reserve".

When using KDM as the display manager, the "kdmctl reserve"
starts a new logging banner on a new X server on a new VT.

So, if, in an xterm, one enters at the shell prompt:

kdmctl reservee<Return>

There's a switch of VT after the <Return> key has been pressed
and before it has been released. If you get back to the original
VT (<Ctrl+Alt+F7>), you'll notice that the xterm has output a
lot of shell prompts as if the <Return> key had been left
pressed the whole time.

Doing a strace(1) on xterm and on the X server shows that the X
server sends a lot of KeyPress events with keycode 36 (Return)
to the xterm (and it seems to send KeyRelease events to another
client)

strace on the X server:
writev(17, [{"\3$|W\257\352h\0I\0\0\0\n\0 \2\16\0 \2\214\0027\1\210\2"..., 32}], 1) = 32
writev(25, [{"\2$\214Y\257\352h\0I\0\0\0\16\0 \2\0\0\0\0\214\0027\1\210"..., 32}], 1) = 32

(\3 is KeyRelease, \2 is KeyPress, $ (0x24) is <Return>'s
keycode, 25 is the fd to the unix socket to the xtern, 17 I
don't know)

If I press <Ctrl-J> instead of <Return> to accept the "kdmctl
reserve" command line, I see the <Ctrl-J> event being repeated.

Though I have no idea about the code, I suspect that a check
should be added to the code that generates keyboard repeat
events that the current VT is the X server's VT. Or that upon
switching to a different VT, all keys should be released. What
do you think?

-- System Information:
Debian Release: lenny/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: i386 (i686)

Kernel: Linux 2.6.23-rc6 (PREEMPT)
Locale: LANG=en_GB.ISO-8859-15, LC_CTYPE=en_US.ISO-8859-15 (charmap=ISO-8859-15)
Shell: /bin/sh linked to /bin/bash

Versions of packages xserver-xorg-input-kbd depends on:
ii  libc6              2.7-8                 GNU C Library: Shared libraries
ii  xserver-xorg-core  2:1.4.1~git20080131-1 Xorg X server - core server

xserver-xorg-input-kbd recommends no packages.

-- debconf-show failed



Reply to: