输入子系统由输入子驱动层(input driver),系统核心层(input core)和事件处理层(Event Handler)三部分组成。一个输入事件,比如滑动触摸屏都是通过input driver -> input core -> event handler -> user space 到达用户空间传给应用程序。
event hander事件处理层主要和用户空间交互,接收用户空间下发的file operation操作命令,生成/dev/input/xx设备节点供用户空间进行file operations操作;
input core层负责管理系统中的input dev设备 和input hander事件处理,并起到承上启下作用,负责输入设备和input handler之间信息传输;
input driver为具体用户设备驱动,输入设备由struct input-dev 结构表示,并由input_register_device和input_unregister_device来注册和卸载;\
X server默认使用 libinput 驱动(xf86-input-libinput) 处理输入设备,xf86-input-evdev 和相关驱动是后备方案。配置文件是 /usr/share/X11/xorg.conf.d/ 中的 10-evdev.conf 和 40-libinput.conf
Udev由 systemd 通过 xorg-server提供,会自动检测硬件,使用 evdev 或 libinput 处理设备的输入
Input Devices
/dev/input
Input Drivers
驱动包xserver-xorg-input-all
xserver-xorg-input-evdev 键盘,触摸屏
xserver-xorg-input-vmmouse 鼠标
xserver-xorg-input-wacom 数位板/触摸板
其他
xserver-xorg-input-libinput 键盘
xserver-xorg-input-synaptics 触摸板
xserver-xorg-input-joystick 遥杆
xserver-xorg-input-mtrack 触摸板
xserver-xorg-input-mutrack 触摸板
xserver-xorg-input-void 空输入设备
xserver-xorg-input-xwiimote Wii设备
xserver-xorg-input-acecad 绘图板
Input Conf
/etc/X11/xorg.conf
/usr/share/X11/xorg.conf.d/
/usr/share/X11/xkb
Input Log
/var/log/Xorg.0.log
Input Check Tools
检查键盘:setxkbmap -print -verbose 10
Input Setting Tools
设置键盘相关属性(布局,频率等): setxkbmap
setx
ibus
sudo apt-get install language-pack-zh-hans
sudo apt-get install ibus
sudo im-config
sudo apt-get install ibus-pinyin
sudo ibus-setup
gnome-control-center