导图社区 X系统概念
介绍X系统的基本概念,输入、输出、视窗、系统、对象、设备、概念、事件、X调试方法。
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
X系统概念
输入
输入处理往往是两者中更困难和更复杂的。输入是多源,并发的,并且高度依赖于复杂的用户偏好
键盘输入
由于国家以及厂商不同导致键盘不同
press和release键盘事件时会报告一个8位二进制码
提供建码到键上标签含义的映射
同一键在不同的服务,键盘,配置和操作系统上产生不同的值
一次只有一个客户端具有“输入焦点”,并且大多数关键事件都将发送到该客户端
子主题
客户端可以使用“抓取"来覆盖将关键事件默认传递给焦点客户端
鼠标输入
核心协议提供两个颜色光标图像的支持
渲染扩展提供包含apha通道32位色的光标支持
可以通过libXcursor访问此支持
向客户端报告移动事件以及press和release事件
默认配置一个指针,汇总所有指针行设备的事件
触摸板输入
触摸屏输入
GetImage从显示读取数据
xlib,xcb提供方法从帧缓冲区获取数据
输出
渲染/栅格化
直接将图像推给X进行显示
使用DRI绕过X服务直接与本地视频硬件交互
利用GPU等其他硬件
显示和屏幕
X将计算机的资源分为“显示”和“屏幕”。显示器通常是连接到单个X服务器并为单个用户显示单个会话的所有设备。系统可能具有多个显示器,例如多座设置,甚至系统控制台上的多个虚拟终端。每个显示器都有一组输入设备,以及一个或多个与其关联的屏幕。屏幕是显示器的子集,可以在其中显示或移动窗口-但窗口不能跨越多个屏幕或从一个屏幕移动到另一个屏幕。输入设备可以与X服务器所有屏幕上的窗口进行交互,例如将鼠标光标从一个屏幕移动到另一个屏幕。最初,每个屏幕都是一个显示适配器,并附加了一个显示器
将客户端连接到X服务器时,必须通过$ DISPLAY环境变量或应用程序选项(例如-display或--display)指定要连接的显示
Graphics contexts
Syncing and Flushing connections
视窗系统对象
视窗
根窗口服务器创建覆盖整个屏幕表面
Widgets
Pixmaps
XID
Atoms
Properties
Grabs
设备概念
X服务器1.7引入了XI2和主/从设备层次结构。VCP和VCK是前两个“主设备”,所有物理设备都“连接”到其中一个。这些物理设备称为“从设备”。事件由从设备生成,然后向上移动到相应的主设备。从设备只能生成XI 1.x或XI2事件,而主设备也可能生成核心事件。使用MPX,可能会有一对以上的主设备,但原理保持不变。
主设备
virtual core pointer
virtual core keyboard
从设备
事件
事件创建
每次输入事件的套接字之一发生中断时,设备驱动程序都会读取数据,并将其交还给X Server,后者构造一个或多个InternalEvents并将其放入事件队列
事件处理
事件处理阶段是将事件从事件队列中取出,进行单独处理然后发送给客户端的阶段。此外,此处还会综合生成更多抽象输入事件(输入和离开通知)服务器将事件从队列中移出,用正确的变量填充事件,必要时生成enter和leave通知,并将其写入客户端
X调试方法
xev工具查看活动报告
xrestop查看客户端在X中资源使用情况
协议监视器
xscope、x11vis、xmon、xtrace、wireshark
xprop获取窗口属性
xmodmap修改键盘映射