C6.21.1Dead keys设计研究
死键按下后不立即输出字符,而是与下一个按键组合生成变音符号
别名: 死键 · 变音组合键 · compose 前缀
概念解释
死键(dead key)是布局里的前缀键:按下时不往文本里插入可见字符,而是等待下一击,与之合成带变音的字母,例如先按 ´ 再按 e 得到 é。它不是修饰键——不必按住;也不是普通字符键——单独一击通常什么都不留下(或只在第二次按死键时才插入变音符号本身)。西语、法语、北欧等布局靠死键在有限键数上覆盖整套正字法。
机制
输入法或系统布局在死键 down 之后进入组合状态,把下一击查一张“变音 × 基字母”表。命中则输出预组合字符或组合序列;不命中则输出变音符号再输出该字母,或吞掉这一击,视平台而定。死键因此是长度为二的微型输入法,状态挂在下一次击键上,而不是挂在修饰键是否按住。与 AltGr 层不同:AltGr 要求同时按住才能改当前键的第三字符,死键是先后两击。与中文输入法组字也不同:死键的候选空间极小,几乎是确定表,不必翻页。
怎么研究
给不熟悉该布局的人一张死键任务表(重音 e、鼻音 a、分音符 u),记录他们是否把死键当成普通符号连按、是否在合成失败后插入了裸变音。自变量包括布局是否在键帽上印出死键标记、合成失败时的回退规则。因变量是一次合成成功率、多余字符数。把死键任务和“按住 Shift 打大写”混在一个测验里,会把前缀状态与准模式弄混。
边界
美式英文布局几乎不用死键,用户第一次碰到国际布局会按自己的“按下即出字”模型来理解。触屏键盘常把变音做成长按弹出,绕过死键时序。Linux 的 Compose 键是更长的前缀链,规则类似但长度不限。某些应用自己拦截按键,会把死键状态打断,导致只在系统文本框里能合成。屏幕阅读器若把空的死键击发读成“无输入”,使用者会以为键坏了。
怎么落地
- 面向多语言桌面输入时,尊重系统死键,不要在按键监听里把死键当普通字符立刻插入。
- 自定义输入组件要走系统文本输入协议,让组合在框架层完成后再交给应用。
- 键帽和屏幕提示把死键印成与普通字符不同的记号,避免被当成引号或重音符号本身。
- 验证:在目标布局下依次打出产品必须支持的变音字母,再故意打一个非法后继(死键后跟数字),确认失败回退不会弄乱光标或提交表单。