键盘设计参考规范.docx
《键盘设计参考规范.docx》由会员分享,可在线阅读,更多相关《键盘设计参考规范.docx(18页珍藏版)》请在冰豆网上搜索。
键盘设计参考规范
键盘-Keyboard
设计理念
设计规范
文档编写
在Microsoft®Windows®中,“键盘”是用于文字输入的主要输入设备。
为了提高使用效率和满足残障人士的操作特点,大多数操作也应当能够使用键盘完成。
键盘也包括虚拟键盘、屏幕键盘和手写板等用于没有物理键盘的计算机,例如:
平板电脑等。
WindowsTablet中使用触摸技术的屏幕键盘
WindowsTablet中使用触摸技术的手写板
按键有以下六种基本类型:
∙“字符键”,指用于给Windows的输入焦点发送文本字符的按键。
∙“修饰键”,指那些与另外一个键组合并改变相关含义的按键,例如:
Ctrl、Alt、Shift和Windows徽标键。
∙“导航键”,指方向键以及Home、End、PageUp和PageDown。
∙“编辑键”,指Insert、Backspace以及Delete。
∙“功能键”,指F1到F12。
∙“系统键”,指可以使系统进入某个模式或者执行某个系统任务,例如:
PrintScreen、CapsLock以及NumLock。
“访问键”是指那些用于键盘和所有控件或菜单项交互的按键或按键组。
快捷键是指那些提高高级用户执行常用命令效率的按键或按键组。
Windows通过在指定访问键下划线来标识访问键。
这个示例显示了访问键和快捷键。
为了消除视觉混乱,Windows默认隐藏访问键的下划线。
只有当Alt键被按下时,Windows才会显示访问键的下划线。
为与Windows保持一致,文中如未提及访问键,则截图仅显示隐藏下划线的访问键。
在程序的整个开发过程中,为了明确访问键的分配情况,你可以其始终显示。
在控制面板,进入“轻松访问中心”,单击“使键盘更易于使用”,然后选择“给键盘快捷方式和访问键加下划线”。
注:
与无障碍访问(辅助特性)相关的设计规范请参考各自相应的章节。
设计理念
键盘导航元素
用户可以使用键盘在窗口中的控件之间导航、进行选择并执行命令。
这是通过下列元素来共同实现的。
我们将在下面的列表中引用该对话框以说明键盘导航元素。
∙输入焦点。
带有输入焦点的控件能够接受大部分键盘输入。
输入焦点是由点状矩形框来指示的,称为焦点框(focusrectangle)。
有些键盘输入是发送至不带输入焦点的控件的,我们将在后面说明。
Basiccolor中的第一个控件具有输入焦点,通过点状矩形框来指示。
∙Tab键与Tab停靠位。
Tab键是在窗口内进行导航的主要机制。
Tab键仅会访问那些具有Tab停靠位的控件。
所有的交互控件都应当具有Tab停靠位(除非它们被编成组),而非交互控件则没有,如标签。
∙Tab顺序。
所有带有Tab停靠位的控件是按Tab顺序访问的。
按下Tab键则会将输入焦点依照Tab顺序移至下一个控件,而按下Shift+Tab则会将输入焦点移至前一个控件。
∙控件组。
一组件关的控件可以被编成组,分配单个Tab停靠位。
控件组用于用起来像单个控件的一组控件,如选项按钮。
当控件太多,仅用Tab键导航效率太低时可以使用。
Basiccolors和Customcolors都是控件组,使该对话框只有五个Tab停靠位。
这里的控件数量太多,如果不用控件组的话,导航的效率会很低。
∙方向键。
方向键用于将输入焦点在组内的控件之间移动。
按下向右键将输入焦点依照Tab顺序移至下一个控件,而按下向左键则会将输入焦点移至前一个控件。
Home、End、向上和向下键在组中同样具有其应有的行为。
用户无法用方向键导航至控件组之外。
∙默认按钮。
包含命令按钮和命令链接的窗口具有一个单独的默认按钮,用高亮边框标明,按下Enter键即相当于单击该按钮。
默认会分配一个默认命令按钮或命令链接。
不过,默认按钮也会随着用户的Tab导航移至其他命令按钮或命令链接。
因此,任何具有输入焦点的命令按钮或命令链接同时也是默认按钮。
OK按钮通常是默认按钮,通过其高亮边框标明。
但是,如果用户通过Tab定位至Cancel按钮,Cancel按钮则成为默认按钮,并可以用Enter键来触发。
∙空格键、Enter及Esc键。
空格键会激活具有输入焦点的控件,而Enter键激活默认按钮。
单击Esc键则取消或关闭该窗口。
∙访问键。
访问键(accesskey)用于直接操作控件,而非通过Tab导航。
它与Alt键一起使用,通过标签中带下划线的字母来标明。
∙访问键标签。
虽然有些控件本身包含标签,如命令按钮、复选框及选项按钮,但其他控件则具有外部标签,如列表框和树形视图。
对于外部标签来说,访问键是分配给标签的,当它被触发时,将依照Tab顺序导航至下一个控件。
标签为OK(确定)、Cancel(取消)和Close(关闭)的按钮则不被分配访问键,因为它们是通过Enter和Esc键来触发的。
按下Alt+B将导航至选中的基本颜色,按下Alt+D则相当于单击DefineCustomColors按钮,Enter键触发OK按钮,而Esc键触发Cancel按钮。
∙访问键行为。
当某个访问键被触发且分配唯一的话,相当于单击对应的控件。
如果访问键的分配不唯一,则对应的控件会获得输入焦点。
如果用户再按下同样的访问键的话,依照Tab顺序的下一个具有相同访问键的控件则会获得输入焦点。
虽然该机制相当复杂,但也很直观。
用户能够立即学会大部分内容,尽管很少有人能说清楚它是如何工作的。
对无障碍访问及高级用户的键盘支持
在Windows中,键盘设计可以归结为提供设计良好的键盘导航、用于无障碍访问的访问键、以及用于高级用户的快捷键。
要确保你程序的功能对于尽可能广泛的用户来说都是易于获得的,包括那些有残疾和缺陷的人的话,那么所有的交互用户界面元素都必须能够通过键盘访问。
通常来说,这意味着大多数常用UI元素可以通过单个访问键或组合键来访问,而不太常用的元素则可能需要额外的Tab或访问键导航。
对于这些用户来说,全面性比一致性更加重要。
要确保你程序的功能对于有经验的用户来说是高效的话,常用UI元素应当还具有快捷键,用于直接键盘访问。
有经验的用户往往对于使用键盘有着强烈的偏好,因为基于键盘的命令用起来更快,不需要让他们的手从键盘上移开。
对于这些用户,高效性和一致性至关重要,而全面性仅对于最常用的那些命令来说是重要的。
为这两个群体设计键盘访问时存在一些微小的差别,这也是Windows提供了两种独立的键盘直接访问机制的原因。
通过有效地使用访问键和快捷键,你可以使你的程序实现高效、一致、全面的键盘访问,适合每一个用户。
访问键
访问键具有下列特点:
∙使用Alt键加一个字母数字键。
∙主要用于无障碍访问。
∙分配给所有菜单及大多数对话框控件。
∙不需要用户进行记忆,因此它们会通过给相应的控件标签字符添加下划线的方式直接在用户界面中呈现出来。
∙仅在当前窗口中有效,用于导航至相应的菜单项或控件。
∙其分配不一定一致,因为无法每次都做到这一点。
但是,应当为经常使用的控件分配一致的访问键,尤其是提交按钮。
∙会被本地化。
由于访问键并不希望用户进行记忆,因此会被分配至标签中靠前的字符以便于查找,即使关键字出现在标签的后面。
正确:
错误:
在正确的示例中,访问键被分配至标签中靠前的字符。
快捷键
不同的是,快捷键则具有下列特点:
∙主要使用Ctrl和Fn键组合(Windows系统快捷键也会使用Alt加非字母数字键以及Windows徽标键)。
∙主要帮助高级用户提高效率。
∙只分配给最常使用的命令。
∙希望用户进行记忆,且仅在菜单、工具提示和帮助中呈现。
∙在整个程序中有效,不过如果不适用的话就无效。
∙必须保持统一的分配,因为它们是被记忆的,而非直接呈现的。
∙不会被本地化。
由于快捷键是希望用户进行记忆的,因此理想情况下,最常用的快捷键应当使用命令关键字中第一个或最容易记忆的字符,比如Ctrl+C用于Copy(复制)而Ctrl+Q用于Request(请求)。
为熟知的快捷键赋予不一致的含义会很麻烦且容易导致错误。
错误:
在这个示例中,Ctrl+F是Find(查找)命令的标准快捷键,因此将其分配给Forward(前进)会很麻烦且可能产生错误。
用Ctrl+W可能更好、更容易记忆。
最后,因为快捷键是希望用户进行记忆的,因此,仅当那些程序和功能使用非常频繁,使得积极的用户愿意去记忆时,特定于应用程序的快捷键才有意义。
不常用的程序和功能不需要快捷键。
例如,安装程序和大多数向导不需要分配任何特别的快捷键。
同样,在生产型应用程序中,不常用的命令也不需要。
在对话框中分配访问键
尽可能为所有交互控件分配唯一的访问键,那些通常不分配访问键的除外。
但是,英语中只有26个字母,有些字母可能在任何标签中都没有出现过,而且并非所有标签都能找到独特的字母,这样一来,这个数字更少。
而且,你需要预留一些未分配的字符以帮助本地化。
结果,在一个对话框中,你大概只能分配20个不同的访问键。
在这个示例中,控件太多,无法分配唯一访问键。
如果你的对话框包含超过20个交互性控件的话,要么不要给某些控件分配访问键,要么在一些罕见的情况下,考虑分配重复的访问键。
遵循下面的常规程序来分配访问键:
∙首先,为提交按钮和命令链接分配访问键。
如果适用则应遵照标准访问键分配表,否则就使用第一个单词的首字母。
∙跳过无须分配访问键的控件。
∙为剩下的控件分配唯一的访问键(从最常用的开始):
∙可能的话,遵照标准访问键分配表来分配访问键。
∙否则:
∙优先考虑在标签中比较靠前的字符,最好是前两个单词的首字母。
∙优先考虑独特的辅音或元音,如“Exit”中的“x”。
∙优先考虑较宽的字符,如w、m以及大写字母。
∙避免使用会导致下划线难以发现的字符,比如只有一个像素宽的字母、带有下伸部的字母、以及紧靠带有下伸部的字母的字母。
∙如果不是所有的控件都能分配到唯一的访问键的话(从最不常用的开始):
∙如果有成组的相关控件,比如:
∙单独一组选项按钮
∙一组相关复选框
∙位于分组框内的一组相关控件
将访问键分配给组标签,而非单个控件。
通常情况下,你不应该这么做。
(当这么做时,确保为这些控件定义了控件组。
)
∙如果仍然不能为所有的控件分配到唯一的访问键:
∙如果符合下列情况,你可以分配非唯一的访问键:
∙这些控件很难通过其他方式导航。
∙该非唯一访问键与常用控件的访问键没有冲突。
∙否则,剩下的控件可以通过Tab和访问键导航来访问。
在这个示例中,由于重复控件的存在,访问键分配给了选项按钮组。
避免意外操作
如果窗口是在上下文之外弹出的(不是用户触发的)并强行获取了输入焦点的话,该窗口很有可能接受到本应属于其他窗口的输入。
而且,如果该对话框不包含任何接受文本输入的控件的话(比如文本框和列表),即使没有按下Alt键,访问键也能生效。
因此,在下面的示例中,按下“R”键则会激活Restartnow(立即重启)按钮。
可见,这样的输入会引起意想不到的严重后果。
错误:
在这个示例中,键入文字时带有空格、“r”、或者Enter都会意外导致重启Windows。
当然,对于这个问题最好的办法是不要强行获取输入焦点。
而是闪烁程序的任务栏按钮或是通过显示通知来引起用户的注意。
不过,如果你必须显示这样的窗口的话,最好的方式是不要指定默认按钮和访问键,把初始焦点设在不是提交按钮的控件上。
正确:
在这个示例中,意外重启Windows要困难得多。
最重要的六点:
1.设计良好的键盘访问,包括合理的Tab顺序和控件分组、初始输入焦点、以及默认按钮。
2.为所有菜单和大多数控件分配访问键。
3.将访问键分配至标签中靠前的字符,以易于查找。
4.为最常用的命令分配快捷键。
5.尝试将快捷键分配至关键字中第一个或最容易记忆的字符。
6.为熟知的快捷键赋予一致的含义。
设计规范
交互
∙不要用Shift键来修改菜单或对话框中的命令。
这么做难以被发现而且也出乎意料。
错误:
在这个来自WindowsXP的示例中,按下Shift键后YestoAll会变成NotoAll。
∙不要禁用具有输入焦点的控件。
这么做可能会导致窗口无法接受键盘输入。
应当在禁用具有输入焦点的控件前,先将焦点移到其他控件上。
∙如果某个窗口是在当前上下文之外弹出的,可能会让用户感到意外的话,你可能需要防止出现严重的非预期的后果:
∙不要指定默认按钮。
∙不要分配访问键。
∙将焦点的初始位置设置为提交按钮以外的控件。
键盘导航
∙将初始输入焦点分配给用户最有可能先进行交互的控件,往往也就是第一个可交互控件。
如果第一个交互控件并不合适,考虑更改窗口的布局。
∙为所有交互控件分配Tab停靠位,包括只读的编辑框。
例外:
∙一组相关联的、行为与单个控件相同的控件,如选项按钮。
这种组合具有单一的Tab停靠位。
∙正确包含分组,以使方向键可以用于在分组内向前向后循环,并保持在该组内。
∙Tab顺序应当以自然流向从左至右,从上至下。
通常,Tab顺序应当遵循阅读顺序。
考虑对常用控件例外处理,将其Tab顺序排得靠前一些。
Tab应当在所有Tab停靠位之间双向循环没有中断。
在一具分组内,Tab顺序应当连续,没有例外。
∙在一个Tab停靠位内,方向键顺序应当以自然流向从左至右,从上至下,没有例外。
方向键应当在所有项之间双向循环没有中断。
∙应当以下列顺序呈现提交按钮:
∙确定/[做某事]/是
∙[不做某事]/否
∙取消
∙应用(如果有的话)
其中[做某事]和[不做某事]应当是针对主标题说明的具体回答。
∙将最可靠(防止数据丢失或系统访问)且最安全的命令按钮或命令链接作为默认值。
如果可靠性或安全性不是需要考虑的因素,则选择最常用或最方便的选项。
∙键盘访问不应更改控件的值或者导致错误信息。
不要要求用户在导航过程中更改控件的初始值。
而应当用有效值初始化那些在退出时进行验证的控件,且仅当控件的值发生改变时再进行验证。
访问键
∙尽可能按照下表为经常使用的命令分配快捷键。
很难使所有的访问键分配都保持一致,但对于经常使用的对话框来说最好如此。
About(关于)
File(文件)
Next(下一个)
Resume(恢复)
Alwaysontop(置于顶端)
Find(查找)
No(否)
Retry(重试)
Apply(应用)
Findnext(查找下一个)
Open(打开)
Run(运行)
Back(后退)
Font(字体)
Openwith(打开方式)
Save(保存)
Bold(粗体)
Forward(前进)
Options(选项)
Saveas(另存为)
Browse或Browse(浏览)
Help(帮助)
Pagesetup(页面设置)
Selectall(全选)
Close(关闭)
Helptopics(帮助主题)
Paste(粘贴)
Sendto(发送至)
Copy(复制)
Hide(隐藏)
Pastelink(粘贴为链接)
Show(显示)
Copyhere(复制到此处)
Insert(插入)
Pasteshortcut(粘贴为快捷方式)
Size(大小/尺寸)
Createshortcut(创建快捷方式)
Insertobject(插入对象)
Pastespecial(选择性粘贴)
Split(分割)
Createshortcuthere(在此处创建快捷方式)
Italic(斜体)
Pause(暂停)
Stop(停止)
Cut(剪切)
Linkhere(链接至此处)
Play(播放)
Tools(工具)
Delete(删除)
Maximize(最大化)
Print(打印)
Underline(下划线)
Don'tshowthis[item]again(不要再显示此[项])
Minimize(最小化)
Printhere(打印此处)
Undo(撤销)
Edit(编辑)
More(更多)
Properties(属性)
View(查看)
Exit(退出)
Move(移动)
Redo(重做)
Window(窗口)
Explore(浏览)
Movehere(移动到此处)
Repeat(重复)
Yes(是)
Fewer(更少)
New(新建)
Restore(还原/恢复)
∙优先考虑较宽的字符,如w、m以及大写字母。
∙优先考虑独特的辅音或元音,如“Exit”中的“x”。
∙避免使用会导致下划线难以发现的字符,例如(从最严重到最轻):
∙只有一个像素宽的字母,比如i和l。
∙带有下伸部的字母,比如g、j、p、q和y。
∙紧靠带有下伸部的字母的字母。
∙当在向导页中分配访问键时,记住将“B”留给Back(后退)、“N”留给Next(下一步)。
∙在属性页中分配访问键时,如果有的话,记住将“A”留给Apply(应用)。
菜单访问键
∙为所有菜单项分配访问键。
没有任何例外。
∙对于动态菜单项(例如最近使用的文件),应使用数字作为访问键。
在这个示例中,Windows中的画图程序为最近使用的文件分配了数字访问键。
∙在每级菜单中使用唯一的访问键。
你可以在不同的菜单层级中使用重复的访问键。
∙使访问键易于发现:
∙对于最常使用的菜单项,选择标签文本中第一个或第二个单词的首字符,最好是第一个。
∙对于较常使用的菜单项,选择标签文本中独特的辅音或元音字母。
对话框访问键
∙尽可能为所有交互控件或其标签分配唯一的访问键。
只读文本框也是交互控件(因为用户可以滚动并复制文本),因此它们也需要访问键。
不要将访问键分配给:
∙确定、取消及关闭按钮。
Enter及Esc键已经用作它们的访问键。
但是,一定要给那些表示确定或取消,但标签文字不同的控件分配访问键。
在这个示例中,表示正面意义的提交按钮被分配了访问键。
∙分组框标签。
通常,组内的控件会被单独分配访问键,因此组标签并不需要。
但是,如果访问键不够用的话,可以为组标签分配访问键,而不是单独分配给每个控件。
∙普通帮助按钮,可通过F1键访问。
∙链接标签。
通常链接太多,无法分配唯一的访问键,且链接下划线会隐藏访问键下划线。
让用户改用Tab键访问链接。
∙选项卡名称。
选项卡是通过Ctrl+Tab和Ctrl+Shift+Tab键来循环访问的。
∙标签为“...”的浏览按钮。
这无法分配唯一的访问键。
∙没有标签的控件,如微调控件、图形命令按钮及没有标签的渐进展开控件。
∙无标签的静态文本或用于不可交互控件的标签,如进度条。
∙先为提交按钮分配访问键以确保他们具有标准的访问键分配。
如果确实无法使用标准访问键分配,则使用第一个单词的首字母。
例如,用于Yes(是)和No(否)提交按钮的访问键应当始终是“Y”和“N”,无论对话框中其他的控件如何。
∙对于用“Don't(不……)”来措辞的表示否定的提交按钮来说(除了取消以外),应当将访问键设为“Don't”中的“n”。
如果不是以“Don't”来措辞的,则使用标准访问键分配或者分配为第一个单词的首字母。
这么做可以使所有“Don't”和“No”开头的提交按钮具有一致的访问键。
∙为使访问键易于查找,应当使用标签中较靠前的字符分配为访问键,最好是首字母,即使关键字是在标签较后的地方出现。
∙至多分配20个访问键,你还有少量未分配的字符可用于帮助本地化。
∙如果交互性控件太多,无法分配唯一的访问键的话,当符合下列情况时,你可以分配非唯一的访问键:
∙这些控件很难通过其他方式导航。
∙该非唯一访问键与常用控件的访问键没有冲突。
∙不要在对话框中使用菜单栏。
这种情况下很难分配唯一的访问键,因为对话框控件和菜单项包含了相同的字符。
快捷键
∙为最常使用的命令分配快捷键。
不需要为那些不常用的程序和功能分配快捷键,用户可以使用访问键来代替。
∙不要将快捷键作为执行任务的唯一途径。
用户应当也能够使用鼠标或通过Tab键、光标键及访问键来执行任务。
∙不要为常用的快捷键分配不同的含义。
这些常用快捷键是需要记忆使用的,含义不一致会使用户产生挫败感且易于出错。
关于Windows程序中使用到的那些常用快捷键,参见Windows键盘快捷键。
∙不要试图分配系统级的程序快捷键。
你的程序的快捷键仅会当其拥有输入焦点时才会生效。
∙记载所有的快捷键。
将快捷键记载在菜单项、工具提示、以及用于记载所有启用的快捷键的单篇帮助文档中。
这将帮助用户学习这些快捷键——这不应成为秘密。
∙例外:
不要在快捷菜单中显示快捷键。
快捷菜单上不会显示分配的快捷键,因为其本身就是为高效使用而优化的。
快捷键记载在工具提示中。
∙如果你的程序使用了大量快捷键,那么应提供自定义快捷键的功能。
这可以让用户能够重新分配冲突的快捷键以从其他产品迁移。
大部分没有分配足够快捷键的程序都需要这个功能。
选择快捷键
∙以标准的方式分配那些常用的快捷键。
关于Windows程序中使用到的那些常用快捷键,参见Windows键盘快捷键。
∙对于非标准快捷键分配,应将下列推荐快捷键用于最常使用的命令。
之所以推荐这些快捷键,是因为它们与常用的那些快捷键没有冲突,而且也比较好按。
∙Ctrl+G、J、K、L、M、Q、R或T
∙Ctrl+任何数字键
∙F7、F8、F9或F12
∙Shift+F2、F3、F4、F5、F7、F8、F9、F11或F12
∙Alt+任何Fn键,F4除外
∙将下列推荐的快捷键用于不太常用的命令。
这些快捷键不存在冲突,但是不太好按——通常需要两只手。
∙Ctrl+任何Fn键,F4和F6除外
∙Ctrl+Shift+任何字母或数字键
∙让常用的快捷键易于记忆:
∙使用字母而不是数字或功能键。
∙尝试使用命令关键字第一个单词中的字母或者最易于记忆的字符。
∙将Fn键用于那些影响范围较小的命令,比如用于选中对象的命令。
例如:
F2用于重命名选中项。
∙将Ctrl组合键用于那些影响范围较大的命令,比如用于整个文档的命令。
例如,Ctrl+S用于保存当前文档。
∙将Shift组合键用于对标准快捷键的操作进行扩展或补充的命令。
例如,Alt+Tab快捷键会在打开的主窗口之间循环切换,而Alt+Shift+Tab则会以相反的方向循环切换。
类似地,F1用于显示帮助,而Shift+F1则显示上下文相关的帮助。
∙当使用方向键