工业控制 | 能源技术 | 汽车电子 | 通信网络 | 安防监控 | 智能电网 | 移动手持 | 无线技术 | 家用电器 | 数字广播 | 消费电子 | 应用软件 | 其他方案

电路设计->综合电路图->综合电路图->LazyBoard双轨迹球一体式键盘设计方案

LazyBoard双轨迹球一体式键盘设计方案

作者:angelazhang时间:2015-03-23

一  引言

1.1 前言

有人说,是懒人和疯人改变了世界——懒人为技术的改进提出需求,疯人则去大胆的创意和实现。在我们的生活中,汽车、计算机都是典型的例子。我们在日常生活里大多数人习以为常的键盘鼠标触摸板中,寻找到一个可以“偷懒”的办法,于是一个疯狂的懒人键盘——LazyBoard诞生了。

 

1.2 项目背景

鼠标和键盘是计算机上最常用也最重要的输入设备,二者分别承担着字符输入和指针控制的功能,如果仔细分析,会发现这两种输入设备在使用中有着巨大的差别。人们在使用键盘时主要运用手指敲击,移动区域则依靠手指屈伸,手腕及手臂的运动幅度很小,且对大拇指的使用有限;而使用鼠标的时候,移动主要依靠手腕及手臂运动,手指则主要负责点击按键或前后滚动滚轮。可以看到,使用两种输入设备时运用的上肢肌肉群及肌肉运动模式其实相差很大。另一方面,在进行诸如网页浏览、即时通信、软件办公以及代码开发等行为时,一只手常需要在二者间来回移动切换(图1.1),这就造成了我们在使用鼠标及键盘的过程中手的运动缺乏连贯性,大大降低了键盘输入或鼠标移动的效率甚至节奏感,也使得同时使用二者显得麻烦。

 

鼠标与键盘使用中手的切换

 

特别是对于便携式电脑的使用者来说,浏览网页、即时通信以及软件办公本就是最主要最常用的功能,但在车厢、机舱、野外等特殊的使用环境中,使用鼠标不仅意味着用户要额外携带一个外接设备,还需要为其开辟一块高度与面积合适的使用空间,这就使得键盘鼠标间的切换更加局促而惹人厌烦。

 

1.3 目前已经成熟的解决方案调研

由于前节所述的一些问题和用户需求,人们在输入设备的简化上进行了多方面的尝试。一种是尺寸外形上的优化,比如迷你鼠标[1](图1.2左)、利用摄像头分析手指动作的“鼠标”[2],但是这种方法在鼠标键盘的运动模式及移动切换上并无实质性的改进。第二种方法则是尝试将鼠标与键盘融为一体,最具代表性的就是触摸屏、触摸板与“小红点”。触摸屏的指针控制方便且有效缩小了面积,但是始终难以像键盘一样保证文本的输入效率;触摸板是目前大多数便携式电脑的标配,它在一定程度上改善了鼠标键盘间来回移动的问题,并在滚轮鼠标基础上增加了多点触控缩放功能,但是触摸板一方面增大了面板的面积,另一方面尽管其被放置在空格键下方,但单靠大拇指操纵并不现实,这也意味着运动模式及移动切换的问题仍然存在;Thinkpad的“小红点”设计解决了运动范围及移动切换的问题,也有助于缩小面板,但是其运用却相当依赖力道或“手感”,并非所有人都能灵活操纵,且其不具备滚轮和缩放功能,这也是为什么大多Thinkpad的“小红点”电脑仍然会配有触摸板。

 

从改善输入模式与缩小设备尺寸来看,将指针设备(鼠标)与字符设备(键盘)融合显然是一个更好的选择,但是可否寻求一种更为舒适和便捷的输入手段呢?有人设计了将轨迹球嵌入的一体式键盘(图1.2右),轨迹球操作起来简单灵活,但是较大的球径使其变成了触摸板的另一种形式,同时却失掉了滚轮及多点触控功能[3]。

 

左:迷你鼠标;右:轨迹球键盘


1.4 Lazyboard 键盘及其与现有解决方案比较

尽管单轨迹球键盘并不成功,但是用轨迹球替代鼠标或触摸板却使我们想到了一种崭新的模式——我们设计了一种新的双轨迹球键盘(图1.3),把两个有按键功能的小型轨迹球嵌入空格键下方,结合轨迹球手势同时实现鼠标、触摸板与键盘的所有功能。双轨迹球可以方便地用大拇指操控,既保证了舒适感,又完全免去了手在鼠标与键盘间移动及改变肌群运动模式的烦扰,同时也大幅减小了设备面积,十分有助于便携式计算机的进一步小型化。

 

  1. 双轨迹球一体式键盘(3D效果图)

 

综前所述,我们将Lazybord键盘和已有的键鼠解决方案进行比较,可将它们的特点汇总成一张表格,如表1.1所示。

 

  1. Lazybord 键盘和其他键鼠解决方案比较

 

指针操作

便捷程度

文本输入

便捷程度

模式切换

便捷程度

总体

面积尺寸

功能

丰富程度

鼠标键盘

触摸屏

触摸板键盘

小红点键盘

单轨迹球键盘

双轨迹球键盘

 

LazyBoard既拥有概念上的新颖性,又具备操作上的实用性,因而极具实现价值。若能将其投入到日常生活中,必将是对传统输入设备与输入模式的颠覆性革新。

 

二 功能需求和实现方案

2.1 功能需求

承前所述,LazyBoard双轨迹球一体式键盘首先应包含键盘和鼠标的完整功能,即字符输入、指针移动、左右键和滚轮等功能。具体地,字符输入由键盘部分实现,单独滚动一个轨迹球时实现指针移动功能,单独按下左或右轨迹球时分别实现左右键按下的功能,两个轨迹球同时向上或下滚动则实现滚轮功能。

 

其次,LazyBoard双轨迹球一体式键盘还能实现一系列的鼠标手势。两个轨迹球同时向外侧或内侧滚动时,实现放大或缩小。单侧或双侧轨迹球来回摇动或转动的手势,将实现如打开资源管理器等的操作。

 

双轨迹球一体式的设计既能应用于一般的PC外设键盘,也能应用在笔记本键盘上。我们实现的功能Demo版属于前者,是一个支持即插即用的USB HID(Human Interface Devices)设备。具体性能参数如下:

  • 键盘标准:        标准104键盘

  • 接口方式:        USB

  • 即插即用:        支持

  • 鼠标工作方式:    双轨迹球

  • 鼠标分辨率:        8 dot/mm

  • 鼠标最大采样率:  200 sample/s

  • 鼠标按键:        左键/右键

  • 轨迹球直径:      16mm

  • 人体工学:        是

 

2.2 实现方案

2.2.1 系统硬件结构

系统硬件开发基于EVK1100开发板,所使用的板上资源包括核心芯片AT32UC3A0512,USB通信模块和电源模块。系统通过USB接口与上游PC连接,并由USB上的电源线供电。通过GPIO模拟的PS/2接口,系统与下游的两个轨迹球和一个标准104键盘连接,并且为它们供电。硬件结构框图如图2.1所示。

 

所使用的两个轨迹球为深圳万臣科技提供的JS16轨迹球,经过改造后增加了按键功能。键盘与轨迹球均采用PS/2协议。

 

双轨迹球键盘系统硬件结构

2.2.2 系统软件架构

(1)整体架构

软件的整体架构可以分为三层:驱动层(Driver Layer)、中间层(Middle Layer)和联络层 (Association Layer),如图2.2所示。驱动层包括PS/2驱动(PS/2 Driver)和USB驱动 (USB Driver),负责两种通讯协议下一个或一串字节的发送和接收。中间层实现两项功能:对下游的PS/2数据包进行解析,得到键盘的键值,以及轨迹球的移动量和按键状态;上游方面,则以USB通信为基础建立起HID协议。联络层的主要任务则是综合两个轨迹球当前时刻的动作以及最近0.5s的动作历史,识别鼠标的动作和手势,转译为HID报文,并启动其发送。

 

以下就设计中的一些关键点做进一步分析。

 

  1. 双轨迹球键盘系统软件架构

 

(2)PS/2驱动层设计要点

完成初始化后,PS/2通信主要是从设备到主机(Device to Host)的通信,其时序图如图2.3所示。时钟由设备提供,频率范围在5k~30kHz,下降沿时数据有效。一个数据帧由11bit组成,包含1个起始位、1个停止位、1位奇校验和8位数据。若干帧(字节)构成一个数据包,速率一般为几十~几百包每秒。

 

PS/2通信时序

 

每一位数据在主机中产生一个GPIO中断。通过位计数和字节计数实现帧同步。为了保证鲁棒性,我们加入了类似于“看门狗”的机制。PS/2通信中,帧间的间隔与帧内两位之间的间隔相同,一般不超过200us,而数据包之间则一般有ms级的间隔。因此,每接收1bit(数据包最后一帧的停止位除外),将定时器重置为0.5ms并重新开始计时(“喂狗”);如果在规定的时间内没有再次将定时器重置或停止,说明发生了帧失步,进入定时器中断,重启PS/2设备。

 

(3)USB HID中间层设计要点

LazyBoard采用了键鼠一体化设计,相当于同一个USB物理端口上的两个HID设备。与单一的键盘或鼠标相比,发送的报文需要在最前面添加一个报告ID字节,以指明该报文来自键盘还是鼠标。两种设备的报文格式分别如下:

 

  1. 键盘HID报文格式

  2. 字节#

    内容

    0

    报告ID

    1

    功能键状态

    2

    定值0x00

    3~8

    按下的键(最多6个)

 

  1. 鼠标HID报文格式

  字节#

内容

0

报告ID

1

按键状态

2

X 位移

3

Y 位移

4

滚轮位移

 

 

为了分别声明2种设备类型和对应的报文格式,在初始化阶段,还需向PC发送一定格式的报告描述符。限于篇幅,这里不列出具体内容。

 

(4)手势识别算法设计

所谓鼠标手势,可以理解为鼠标指针移动方向的一系列特定序列。我们对每个轨迹球的划分了8种运动方向,分别用数字1~8表示,如图2.4。如果位移量没有超过某个阈值,则标签为0。

 

轨迹球方向划分


目前,系统能够识别出轨迹球左右、上下摇动的手势。对每个轨迹球,维护一个数组,存储最近0.5s内每隔10ms的动作历史。进行手势识别时,从前到后遍历数组,若遇到方向0则忽略;若遇到方向1、5之间的跳变,则向水平方向摇动的计数器增加1;垂直方向依此类推。若最终计数值大于某个阈值,则认为发生了相应的鼠标手势。类似的算法还能应用于轨迹球顺、逆时针转动等手势的识别。

 

为了避免同一次手势被多次识别,我们引入了“不应期”机制,即当一个鼠标手势发生时,向某个变量装载一个初值,并在以后的访问中逐次减1,直到其值重新为0前都不再进行手势识别。

 

2.2.3 系统软件流程

系统的软件运行流程如图2.5所示。

上电复位后,首先对单片机的时钟、GPIO、USB通信模块和定时器进行初始化;接着以查询方式分别与3个PS/2设备通信,完成相应的配置;再通过USB与上位PC通信,声明HID设备类型;最后,使能PS/2通信涉及的GPIO中断和定时器中断,进入休眠模式,系统开始正常工作。

 

共有3种中断可将CPU唤醒。其中,GPIO的下降沿中断与定时器中断用于实现PS/2驱动,已在前面说明。本系统的USB工作在高速模式下,在此模式下,上位PC每隔1ms查询一次USB设备,在下位单片机引发一个中断。该中断响应函数调用联络层的函数,识别键盘键值和轨迹球的手势,并启动HID报文发送。

           5146a4d86ef37-thumb.jpg

双轨迹球键盘软件运行流程

 

2.2.4 系统实现效果

硬件方面,我们改造完成了一个双轨迹球键盘(图2.6左),键盘及轨迹球通过PS/2协议发送数据到EVK1100开发板,开发板再通过USB接口与上位机相连(图2.6右)。

 

双轨迹球键盘硬件系统

 

USB接头插入计算机后,可以看到设备管理器中在只增加一个USB输入设备的同时增加了一个鼠标和一个键盘(图2.7)。

 

插入双轨迹球键盘前后设备管理器对比

左:未插入Lazyboard;右:插入Lazyboard

 

软件方面,除了可以正常的实现键盘的文本输入及控制,还可以通过轨迹球实现如下基本功能:

(1)单独滚动任意一个轨迹球可进行光标的移动;

(2)左球按下相当于单击左键,右球按下相当于单击右键;

(3)按下左球同时滚动右球,相当于按下左键进行拖拽;

(4)按下右球同时滚动左球,相当于按下右键进行拖拽;

(5)两球同时向下是向下滚动滚轮,反之向上滚动滚轮;

(6)两球同时向外侧是放大,同时向内侧是缩小;

(7)左球左右摇动,打开Windows搜索框;

(8)左球上下摇动,打开“我的电脑”;

(9)右球左右摇动,切换到桌面;

(10)右球上下摇动,打开“任务管理器”。

 

除了以上基本功能,我们还将进一步增加轨迹球手势,如转动(rolling)等,并实现更多诸如双击、刷新、启动任务管理器乃至关机等常用计算机功能的便捷操作。




评论

技术专区