C6.21.1Dead keys设计研究

死键按下后不立即输出字符,而是与下一个按键组合生成变音符号

别名: 死键 · 变音组合键 · compose 前缀

概念解释

死键(dead key)是布局里的前缀键:按下时不往文本里插入可见字符,而是等待下一击,与之合成带变音的字母,例如先按 ´ 再按 e 得到 é。它不是修饰键——不必按住;也不是普通字符键——单独一击通常什么都不留下(或只在第二次按死键时才插入变音符号本身)。西语、法语、北欧等布局靠死键在有限键数上覆盖整套正字法。

机制

输入法或系统布局在死键 down 之后进入组合状态,把下一击查一张“变音 × 基字母”表。命中则输出预组合字符或组合序列;不命中则输出变音符号再输出该字母,或吞掉这一击,视平台而定。死键因此是长度为二的微型输入法,状态挂在下一次击键上,而不是挂在修饰键是否按住。与 AltGr 层不同:AltGr 要求同时按住才能改当前键的第三字符,死键是先后两击。与中文输入法组字也不同:死键的候选空间极小,几乎是确定表,不必翻页。

怎么研究

给不熟悉该布局的人一张死键任务表(重音 e、鼻音 a、分音符 u),记录他们是否把死键当成普通符号连按、是否在合成失败后插入了裸变音。自变量包括布局是否在键帽上印出死键标记、合成失败时的回退规则。因变量是一次合成成功率、多余字符数。把死键任务和“按住 Shift 打大写”混在一个测验里,会把前缀状态与准模式弄混。

边界

美式英文布局几乎不用死键,用户第一次碰到国际布局会按自己的“按下即出字”模型来理解。触屏键盘常把变音做成长按弹出,绕过死键时序。Linux 的 Compose 键是更长的前缀链,规则类似但长度不限。某些应用自己拦截按键,会把死键状态打断,导致只在系统文本框里能合成。屏幕阅读器若把空的死键击发读成“无输入”,使用者会以为键坏了。

怎么落地

  • 面向多语言桌面输入时,尊重系统死键,不要在按键监听里把死键当普通字符立刻插入。
  • 自定义输入组件要走系统文本输入协议,让组合在框架层完成后再交给应用。
  • 键帽和屏幕提示把死键印成与普通字符不同的记号,避免被当成引号或重音符号本身。
  • 验证:在目标布局下依次打出产品必须支持的变音字母,再故意打一个非法后继(死键后跟数字),确认失败回退不会弄乱光标或提交表单。

延伸

  • 同组C6.21.2 死键输出前的等待状态若无提示,用户会误以为按键失灵 · C6.21.3 AltGr等多层布局用同一物理键承载第三层符号,依赖修饰键切换层级 · C6.21.4 多层布局增加了单键的信息密度,也增加了误按层级的概率
  • 相邻C6.04 修饰键 · C6.25 输入法状态与切换
  • 站内检索dead key · diacritic · compose key

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/C6.21.1