xkb 第5章 键事件处理概述

X server 中的每一个键事件处理有三个步骤,client 中至少有三个。 本章简要介绍了每一个步骤; 以后的章节更详细地描述了每一个步骤。服务器

  1. 首先,server 应用全局键盘 controls 来肯定是否应当即、延迟或忽略键事件。例如,SlowKeys control 能够致使键事件被延迟,直到 slow keys delay 已通过去,而 RepeatKeys control 可让单个物理键按下并按住延长一段时间致使多个X事件。code

  2. 接下来,server 应用每一个键的 behavior。每一个键 behavior 可用于模拟或指示某些特殊类型的键 behavior。好比,能够用键 behavior 实现键盘 overlays,在某些状况下键生成备用 keycode。 每一个键都有单个 behavior,所以键 behavior 的效果不依赖于键盘 modifier 或 group state, 尽管它可能依赖于全局键盘 controls。server

  3. 最后,server 应用键 actions。从逻辑上讲,键盘上的每一个keysym都有一些与之相关的动做。键 action 告诉 server 在生成相应 keysym 的事件时要作什么。键action可能会更改或抑制事件,生成其余事件或更改服务器的某些方面。事件

若是全局 controls、每一个键的 behavior 和键 action 组合起来致使了键事件,则接受事件的 client 将分几步处理它。字符串

  1. 首先,客户端从事件的 state 字段中提取有效的键盘 group 和一组 modifiers。
  2. client 使用 modifiers 和有效键盘 group 从绑定到键的 keysyms 列表中选择一个符号。
  3. 若有必要,client 使用从查找符号的过程当中“遗留”的任何 modifier 来转换符号和结果字符串。 例如,若是保留 Lock modifier,则根据系统指定的大写规则获得 keysym 的大写体。
  4. 最后,client 以特定于应用程序的方式使用 keysym 和剩余 modifier。 例如,基于 X toolkit 的应用程序可能会根据前三个步骤报告的符号和 modifier 应用 translations。
相关文章
相关标签/搜索