How to attach keyboard to tinyX server
题
I have compiled root file system for my arm development board with the help of buildroot.My rootfs contains TinyX server and match-box as window manager.Then i have launched the x server by this script below.
export DISPLAY=:0
X -wr -keybd keyboard -mouse mouse & (TinyX)
matchbox-session &
The problem that i am facing is keyboard not working in the TinyX server. The TinyX server is producing the following error message "driver Linux console keyboard wanted to post scancode 57 outside of [0, 0]!" for all key press and release. But mouse is working fine.
Can anybody please give me some suggestions to troubleshoot this issue?
解决方案
Env: QEMU qemu-system-arm ver 1.2.0 on Ubuntu 12.10 host. Guest: kernel 3.2.21
Emulated board: ARMv7l Verstatile Express
Root filesystem with X support, etc built using Buildroot ver 12.08; TinyX X server.
Ran qemu with:
/usr/bin/qemu-system-arm -M vexpress-a9 -kernel <kernel> -drive file=<rootfs-ext2-img>,if=sd -append "console=ttyAMA0,115200 root=/dev/mmcblk0 init=/myinit.sh" -serial stdio -net nic,model=lan9118 -net user
Once the guest is running, we have a console window and a graphical qemu window (which is empty to start with).
In the guest console window: Start X:
Xfbdev :0 -keybd evdev,,device=/dev/input/event0 -mouse evdev,,device=/dev/input/event1 &
Then load up xterm, etc.
I use a simple script, here it is:
# cat Xstart.sh
#!/bin/ash
unset USERNAME LOGNAME
echo Setting up X server ..
# kill any stale instance
kill $(ps |grep Xfb|head -n1|awk '{print $1}') 2> /dev/null
export DISPLAY=:0
# How to determine 'mouse' dev?
# dmesg shows :
# input: AT Raw Set 2 keyboard as /devices/mb:kmi0/serio0/input/input0
# input: ImExPS/2 Generic Explorer Mouse as /devices/mb:kmi1/serio1/input/input1
# QEMU_ARM_BR / # ls /sys//devices/mb:kmi1/serio1/input/input1
# capabilities/ id/ name properties uniq
# device@ modalias phys subsystem@
# event1/ mouse0/ power/ uevent
# Can see the only 'event' file is 'event1', so we use it!
Xfbdev :0 -keybd evdev,,device=/dev/input/event0 -mouse evdev,,device=/dev/input/event1 &
sleep 1
echo "Running fluxbox & xterm .."
DISPLAY=:0 xterm 2> /dev/null &
DISPLAY=:0 fluxbox 2> /dev/null &
echo "### Please wait a bit for X to initialize & come up ... ###"
sleep 3
echo "Press [Enter] to use this console..."
read
#
Notice the hint on how to determine mouse, keyboard device: look up dmesg output..