注释

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

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

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

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

典型笔的图

典型的笔。

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

onenote 页面上手写的屏幕截图

墨迹输入示例。

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

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

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

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

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

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

设计概念

将笔用于输入具有以下特征:

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

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

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

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

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

笔交互模型

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

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

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

控制位置

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

不正确:

与工具分隔的调色板的屏幕截图

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

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

菜单附近的指针的屏幕截图

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

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

笔交互

系统手势

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

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

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

笔触

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

显示 Windows 7 中的轻扫手势及其默认分配的关系图。

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

轻扫手势(如移动手势)的图

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

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

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

应用程序手势

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

响应能力和一致性

响应能力对于创建感觉直接和引人入胜的笔体验至关重要。 要直接感受,手势必须立即生效,并且对象的接触点必须在整个手势中保持笔平稳。 任何滞后、断断续续的响应、接触损失或不准确的结果都破坏了直接纵的感知,也破坏了质量。

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

编辑墨迹和文本

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

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

以大字体显示 Outlook 邮件的屏幕截图

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

如果你只做四件事...

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

准则

控制使用情况

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

具有正常大小和大尺寸的菜单的屏幕截图

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

控制大小、布局和间距

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

互动

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

手部

  • 如果窗口是上下文窗口,请始终将其显示在从中启动的对象附近。 将源对象放出方式,以便窗口未覆盖源对象。

    • 如果使用鼠标显示,则尽可能将上下文窗口偏移量向下和向右放置。

      位于对象右侧的上下文窗口的 图

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

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

      放置在对象左侧的上下文窗口的 图

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

  • 开发人员: 可以使用 GetMessageExtraInfo API 区分鼠标事件和笔事件。 可以使用具有 SPI_GETMENUDROPALIGNMENT 的 SystemParametersInfo API 来确定用户的 手性

宽恕

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

文档

引用笔输入时:

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