我使用的是通用usb键盘,Linux 2.6.27与gnome桌面,gnome-terminal和bash shell.我很想知道软件中发生了什么.我的键盘中的特殊字符如何通过某些编码解释为字符以及字符图片来自何处?
最佳答案
带有USB驱动程序的Linux输入层从键盘获得扫描码(基本上是“KEY 1 DOWN”“KEY 1 UP”).
X使用其键映射将扫描码转换为键码和X输入事件.
GTK输入方法将输入事件序列转换为组合的unicode字符.
Gnome-terminal以UTF-8为shell编码.
壳牌并不关心.它只知道它正在处理多字节编码.
shell通过TTY回显多字节编码的文本.
Gnome-terminal解码传入的文本并确定unicode代码点.
Gnome-terminal使用GTK工具绘制字符.
GTK使用Pango渲染文本,并调用X库将像素绘制到屏幕上.
X服务器将字符绘制到屏幕缓冲区中,视频卡显示它们.
以下是我对图表的尝试: