注意

此设计指南是为 Windows 7 创建的,并且尚未更新Windows的较新版本。 大部分指南原则上仍然适用,但演示和示例并不反映我们 当前的设计指南

应启用所有 Microsoft Windows应用程序。 这样做比你想象的要容易。

笔输入是指Windows允许你使用笔直接与计算机交互的方式。 笔可用于指向手势、简单文本输入以及捕获数字墨迹中的自由形式思想。

用于输入的笔有一个精细的平滑提示,支持精确指向、写入或绘制墨迹。 笔可能还有一个可选的笔按钮 (用于执行右键单击) 和橡皮擦 (用于擦除墨迹) 。 大多数笔支持悬停。

figure of a typical pen

典型的笔。

当笔用于手写时,可以使用手写识别将用户的笔划转换为文本。 笔划可以像编写一样保留,并在后台执行识别以支持搜索和复制为文本。 这种未转换的笔划称为数字墨迹。

screen shot of handwriting on onenote page

墨迹输入的示例。

大多数Windows程序已经是笔友好,可以使用笔而不是鼠标,笔可以顺利地处理最重要的任务和交互,并且程序响应手势。 当程序协助手写文本输入时,程序会变得手写友好。 当程序可以直接处理墨迹时,程序将变为墨迹启用,而不是要求将笔划转换为文本或等效的鼠标移动。 这允许用户在自由流动、高质量的数字墨迹中编写、绘制和添加批注。 收集墨迹不同于收集鼠标事件,因为墨迹需要更高的分辨率和更高的采样率,并且还可以增加压力和倾斜的细微差别。 有关创建手写友好和启用墨迹的程序的信息,请参阅使用笔 集成墨迹文本输入

定位笔时,由于小费表示自身,因此不需要光标。 但是,为了定位帮助,Windows提供了一个指示当前笔位置的小笔光标。 与它替换的鼠标指针不同,除非笔靠近显示器,否则不需要笔光标,因此它会在几秒钟内处于非活动状态后消失,以允许信息不受干扰的视图。

大多数触控笔友好的程序支持手势。 手势是计算机解释为命令的屏幕上笔的快速移动,而不是鼠标移动、写入或绘图。 要执行的最快、最简单的手势之一是轻扫。 轻扫是导致导航或编辑命令的简单手势。 导航轻扫包括向上拖动、向下拖动、后移和向前移动,而编辑轻扫包括复制、粘贴、撤消和删除。

除忙碌指针之外的所有指针都有一个像素热点,用于定义指针的确切屏幕位置。 热点确定哪个对象受交互影响。 对象定义一个热区域,即将热点视为对象上的区域。 通常,热区域与对象的边框相吻合,但使交互更加轻松可能更大。

因为笔可以比手指更准确地指向,如果你的用户界面适用于触摸,它也适用于笔。 因此,本文主要侧重于为已设计用于触摸的程序添加笔支持。

注意:鼠标辅助功能和触摸相关的指南在单独的文章中提供。

设计概念

使用笔输入具有以下特征:

  • 自然和直观。 每个人都知道如何用笔指向和点击。 对象交互旨在与用户如何以一致的方式与现实世界中的对象交互。
  • 表达。 笔划易于控制,使写作、绘图、素描、绘画和批注比使用鼠标更容易。
  • 更个人化。 正如手写笔记或签名比键入笔记更个人一样,使用数字手写笔记或签名也更个人化。
  • 不太侵入性。 使用笔是无声的,因此比键入或单击要少得多的分心,尤其是在会议等社交场合。
  • 便携式。 具有笔功能的计算机可能更紧凑,因为大多数任务都可以在没有键盘、鼠标或触摸板的情况下完成。 它可以更灵活,因为它不需要工作图面。 它支持使用计算机的新位置和方案。
  • 直接和引人入胜。 使用笔可以让你感觉你与屏幕上的对象直接交互,而使用鼠标或触摸板始终要求你使用单独的屏幕指针移动来协调手部移动,这感觉是间接的。

所有Windows程序都应有良好的笔体验。 用户应能够有效地使用笔执行程序最重要的任务。 某些任务(如键入或详细的像素操作)不适合笔,但至少应该可能。

幸运的是,如果你的程序已经设计得很好,并且是触摸友好的,提供良好的笔支持很容易做到。 为此,设计良好的程序:

  • 具有良好的鼠标支持。 交互式控件具有清晰可见的显示效果,并具有指针反馈的悬停状态。 对象具有标准鼠标交互的标准行为, (单键和双击、右键单击、拖动和悬停) 。 指针形状会相应地更改,以指示直接操作的类型。
  • 具有良好的键盘支持。 该程序通过提供标准快捷键分配(尤其是对于也可以通过手势生成的导航和编辑命令)使用户高效。
  • 具有足够大的控件,足以用于触摸。 控件的最小大小为 23x23 像素, (13x13 对话框单位 [DLU]) ,最常用的控件至少为 40x40 像素, (23x22 DLL) 。 为避免无响应行为,UI 元素之间不应有较小的间距,以便相邻目标在触摸或至少有 5 像素 (3 个 DLL 之间) 空间。
  • 可访问。 使用 Microsoft Active Accessibility (MSAA) 为辅助技术提供对 UI 的编程访问。 程序适当地响应主题和系统指标更改。
  • 在每英寸 120 dpi (点) 中效果良好 ,这是支持笔的计算机的默认显示分辨率。
  • 使用常用控件。 最常见的控件旨在支持良好的笔体验。 如有必要,程序使用实现良好的自定义控件,这些控件旨在支持简单的定位和交互式操作。
  • 使用受约束的控件。 当设计用于轻松定位时,列表和滑块等约束控件可以比文本框等不受约束的控件更好,因为它们减少了文本输入的需求。
  • 提供适当的默认值。 默认情况下,程序选择最安全的 (,以防止数据丢失或系统访问) 和最安全的选项。 如果安全和安全不是因素,程序会选择最有可能或方便的选项,从而消除不必要的交互。
  • 提供文本自动完成。 提供最有可能或最近输入值的列表,使文本输入更容易。

遗憾的是,如果程序设计不善,其缺点对于使用笔的用户来说尤其明显。

笔交互模型

如果你没有使用笔的经验,最好的介绍是通过这样做来学习。 获取启用了笔的计算机,将鼠标和键盘放在一边,并执行通常只使用笔执行的任务。 请务必尝试启用墨迹的程序,例如Windows日记,以及未启用墨迹的程序。 如果你有平板电脑,请尝试将其放在不同的位置,如在腿上,躺在桌子上或手臂上,而你站着。 请尝试在纵向和横向方向使用它,并按住笔进行写作,并只是为了指向,在左手和右手。

尝试使用笔时,你将发现:

  • 小型控件难以使用。 控件的大小极大地影响你有效交互的能力。 对于笔而言,10x10 像素的控件可合理工作,但较大的控件更易于使用。 例如, 旋转控件 (15x11 像素) 太小,无法轻松用于笔。
  • 手部是一个因素。 你的手有时涵盖你可能希望看到或与之交互的内容。 例如,对于右撇子用户上下文菜单,如果在单击点右侧显示,则很难使用,因此,如果它们显示在左侧,则情况会更好。 Windows允许用户在平板电脑设置控制面板项中指示其手部。
  • 任务区域有助于。 虽然你可以使用 3 英寸鼠标移动跨 14 英寸屏幕移动指针,但使用笔要求将手移到全 14 英寸。 在遥远的目标之间反复移动可能很繁琐,因此尽可能保持任务交互在休息的手范围内要好得多。 上下文菜单很方便,因为它们不需要手部移动。
  • 文本输入和选择很困难。 使用笔时,较长的文本输入尤其困难,因此自动完成和可接受的默认文本值可以真正简化任务。 文本选择也可能相当困难,因此任务在不需要精确光标放置时更容易。
  • 显示边缘附近的小型目标可能很难点击。 一些显示器挡板突出,一些触摸屏技术在边缘上不太敏感,使边缘附近的控件更难使用。 例如,在最大化窗口时,标题栏上的最小化、最大化/还原和关闭按钮可能更难使用。

控制位置

任务区域可减少繁琐的跨屏幕移动。 若要最大程度地减少手部移动,请找到最接近其使用位置的控件。

不正确:

screen shot of color palette separated from tools

在此示例中,Windows XP 中的调色板离使用颜色调色板的位置太远。

请考虑用户的当前位置是最接近的目标,使得获取目标变得微不足道。 因此,上下文菜单充分利用了“拟合法”,就像Microsoft Office使用的小型工具栏一样。

screen shot of pointers near menus

当前指针位置始终是最容易获取的位置。

显示边缘附近的小型目标可能难以定位,因此避免在窗口边缘附近放置小控件。 为确保控件在最大化窗口时易于定位,请将其至少设置为 23x23 像素, (13x13 DLL) ,或将其远离窗口边缘。

笔交互

系统手势

系统手势由Windows定义和处理。 因此,所有Windows程序都有权访问它们。 这些手势具有等效的鼠标、键盘和应用程序命令消息:

系统手势 合成的等效消息
支持) 时将鼠标悬停 (
鼠标悬停
点击 (上下)
鼠标左键单击
双击 (上下两次)
鼠标双击
按住 (、暂停、向上)
鼠标右键单击
向下拖动 (、移动、上移)
鼠标左拖动
按、按住和拖动 (、暂停、移动、向上)
鼠标右拖动
选择 (向下移动、向上移动)
鼠标选择

开发 人员: 有关详细信息,请参阅 SystemGesture 枚举

笔触

轻扫是简单手势,大致相当于键盘快捷方式。 导航轻扫包括向上拖动、向下拖动、后移和向前移动。 编辑笔锋包括复制、粘贴、撤销以及删除。 若要使用轻扫,程序只需响应相关的击键命令。

Diagram that shows flick gestures and their default assignments in Windows 7.

Windows 7 中的八个轻扫手势及其默认分配。 导航轻扫已更改为对应于平移 (对象使用手势) 移动的位置,而不是滚动 (对象在手势) 的相反方向移动。

figure of flick gestures such as the move gesture

Windows Vista 中的八个轻扫手势及其默认分配。

导航轻弹具有自然映射,因此易于学习和记住。 编辑轻扫是需要更精确的对角线,其映射不像自然 (向回收站轻扫以删除,在后退箭头方向轻扫以撤消) ,因此默认情况下不会启用这些。 可以使用触控笔和输入设备控制面板项自定义所有轻扫操作。

电影 合成的等效消息
向左轻扫
Windows Vista) 的转发命令 (后退命令
向右轻扫
Windows Vista) 的后退命令 (转发命令
轻扫
键盘向下滚动
向下轻扫
键盘向上滚动
轻扫左对角线
键盘删除
轻扫左对角线
键盘撤消
向上对角线轻扫
键盘复制
向下对角线轻扫
键盘粘贴

应用程序手势

应用程序还可以定义和处理其他手势。 Microsoft 手势识别器可以识别 超过 40 个手势。 若要使用应用程序手势,程序必须定义它识别的手势,然后处理生成的事件。

响应性和一致性

响应能力对于创建感觉直接和引人入胜的笔体验至关重要。 为了感觉直接,手势必须立即生效,并且对象的联系人点必须在整个手势中平稳地停留在笔下。 任何滞后、窒息反应、接触损失或不准确的结果都破坏了直接操纵和质量的感知。

一致性对于创建感觉自然和直观的笔体验至关重要。 用户学习标准手势后,他们希望该手势在所有适用的程序中具有相同的效果。 为了避免混淆和沮丧,请永远不要将非标准含义分配给标准手势。 而是使用自定义手势进行程序特有的交互。

编辑墨迹和文本

使用笔时,编辑墨迹和文本是最具挑战性的交互之一。 使用受限控件、适当的默认值和自动完成可消除或减少输入文本的需求。 但是,如果你的程序涉及编辑文本或墨迹, 则可以通过在使用笔时自动缩放输入 UI,使用户更高效。

例如,电子邮件程序可以正常显示 UI,但将输入 UI 缩放为 150%, 以撰写邮件。

screen shot of outlook message in large font

在此示例中,输入 UI 缩放为 150%。

如果你只做四件事...

    1. 使你的Windows程序具有良好的笔体验! 用户应能够有效地使用笔执行程序最重要的任务 (至少涉及大量键入或详细像素操作) 的任务。
    1. 请考虑在最相关的方案中直接使用墨迹添加对写作、绘图和添加批注的支持。
    1. 若要创建直接且引人入胜的体验,请立即生效手势,在整个手势中保持用户笔下的联系人点,并直接将手势映射的效果映射到用户的动作。
    1. 若要创建自然而直观的体验,请支持适当的标准手势,并为其分配其标准含义。 使用自定义手势进行程序特有的交互。

指南

控制使用情况

  • 首选使用常用控件。 最常见的控件旨在支持良好的笔体验。
  • 首选约束控件。 尽可能使用受约束的控件(如列表和滑块)而不是不受约束的控件(如文本框)以减少对文本输入的需求。
  • 提供适当的默认值。 选择最安全的 (,以防止默认情况下丢失数据或系统访问) 和最安全的选项。 如果安全和安全不是因素,请选择最可能或最方便的选项,从而消除不必要的交互。
  • 提供文本自动完成。 提供最有可能或最近输入值的列表,使文本输入更容易。
  • 对于使用多个选择的重要任务,如果通常使用标准多选列表,请改为提供使用复选框列表的选项。
  • 尊重系统指标。 对所有大小使用系统指标不会硬线大小。 如有必要,用户可以更改系统指标或 dpi 以满足其需求。 但是,将此视为最后的手段,因为用户通常不必调整系统设置以使 UI 可用。

screen shot of menus with normal and large sizing

在此示例中,菜单高度的系统指标已更改。

控制大小、布局和间距

  • 对于常见控件,请使用建议的控件大小。 对于良好的笔体验而言,这些控件足够大,但旋转控件 (无法使用笔,但冗余) 。
  • 选择将控件置于最可能使用位置的布局。 尽可能将任务交互保留在较小的区域内。 避免长距离手部移动,尤其是对于常见任务和拖动。
  • 使用建议的间距。 建议的间距是笔式的。
  • 交互控件应触摸,或者最好至少具有 5 像素 (3 个 DLL,) 它们之间的空间。 这样做可以防止用户在目标外部点击时混淆。
  • 请考虑在控件组( 例如命令链接、复选框和单选按钮)以及组之间添加建议的垂直间距。 这样做会使它们更易于区分。

交互

  • 对于旨在接受手写的程序,请启用默认墨迹书写。 默认墨迹书写允许用户只需开始写入即可输入墨迹,而无需点击、提供命令或执行任何特殊操作。 这样做可实现笔的最自然体验。 对于不设计为接受手写的程序,请处理文本框中的笔输入作为选择。
  • 如果程序具有需要编辑文本的任务,则允许用户缩放内容 UI。 考虑在使用笔时自动缩放到 150%。
  • 由于手势被记住,因此分配它们意味着跨程序保持一致。 不要为具有固定语义的手势提供不同的含义。 请改用适当的特定于程序的手势。

手部

  • 如果窗口是上下文窗口,请始终在从其启动的对象附近显示它。 将源对象置于不按原样放置,以便窗口未覆盖源对象。

    • 如果使用鼠标显示,则尽可能将上下文窗口偏移到右侧。

      figure of contextual window placed right of object

      显示它从中启动的对象附近的上下文窗口。

    • 如果使用笔显示,则尽可能放置上下文窗口,以免被用户的手覆盖。 对于右手用户,请向左显示;否则会显示在右侧。

      figure of contextual window placed left of object

      使用笔时,还显示上下文窗口,以便用户手不覆盖它们。

  • 开发 人员: 可以使用 GetMessageExtraInfo API 区分鼠标事件和笔事件。 可以通过将 SystemParametersInfo API 与 SPI_GETMENUDROPALIGNMENT 一起使用来确定用户的手法

宽恕

  • 提供撤消命令。 理想情况下,应为所有命令提供撤消操作,但程序可能具有一些无法撤消其效果的命令。
  • 提供良好的悬停反馈。 清楚地指示笔何时超过可单击的目标。 这种反馈是防止意外操作的好方法。
  • 只要可行,请提供关于向下笔的良好反馈,但在移动或笔上前不要采取操作。 这样,用户就可以在犯错误之前更正错误。
  • 只要可行,用户就能轻松纠正错误。 如果操作对上笔生效,则允许用户通过在笔仍然关闭时滑动来更正错误。

文档

引用笔输入时:

  • 将笔形触笔输入设备称为笔。 第一次提及时,请使用平板电脑笔。
  • 将笔边上的按钮称为笔按钮,而不是桶按钮。
  • 一般是指键盘、鼠标、跟踪球、笔或手指作为输入设备。
  • 使用点击 (,然后双击) ,而不是在记录特定于使用笔的过程时单击。 点击意味着按屏幕,然后在保持时间之前提升。 它可能或不能用于生成鼠标单击。 对于不涉及笔的交互,请继续使用单击。