中国无忧期刊网是专业从事评职称论文发表,核心期刊征稿,核心期刊发表,学术论文发表等服务的论文发表期刊咨询网。
展开
自动化

面向单手输入的PC端九宫格输入系统设计与实现

发布时间:2022-08-03   |  所属分类:自动化:论文发表  |  浏览:  |  加入收藏
摘    要:
在使用计算机进行日常办公自动化应用中,因特殊原因,往往需要单手操作键盘进行文本或数字内容的快速输入,由于传统的键盘键程过长且按键数目较多,不利于单手操作,极大地影响工作效率。面向移动终端应用的九宫格输入法具备按键集中、可实现单手输入等特点。鉴于此,设计与开发一套面向单手输入的PC端九宫格输入软、硬件系统,从而满足单手操作PC的需求,这对提升办公效率,满足单手输入人群的计算机操作习惯等,均具有重要的现实意义。
 
关键词: PC端九言格输入法;单手输入键盘;办公自动化;
 
Design and Implementation of PC Nine-grid Input System for the Single-handed Input
MA Xiangping GE Jike BI Yuanchun
School of Inelligent Technology and Engineering.Chongqing University of Science and Technology
 
Abstract:
In the daily application of office automation(OA), due to the special reasons, it is often necessary to operate the keyboarded with single-handed to input quickly the text or digital contents. Because the key distance of traditional keyboard is too scattered, which is not conducive to single-handed operation. The nine-grid input method for mobile terminal applications possess the characteristics of centralized keys, which can realize single-handed input. In view of this, it is important to design and develop a set of PC nine-grid input software and hardware system for single-handed input, so as to meet the needs of PC operation by single hand, which is of a great importance for promoting office efficiency and satisfying the people with computer operation habits of the single-handed input, which possess the practical significance.
 
Keyword:
nine-grid typewriting method; single-handed typing keyboard; office automation(OA);
 
0前言
调查和分析发现,对一些单手残疾的肢残人士而言,他们在使用计算机进行日常办公时,往往与双手健全的普通人一样,使用传统的101键或104键的PC键盘,由于传统键盘按键数目较多且键程过长,需要肢残人士利用单手手指来回往复地敲击键盘。相较于肢体健全、双手打字的人们而言,即便是肢残人士对键盘按键了如指掌,也无法像拥有双手的人们一样实现盲打,实际操作起来会非常繁琐与低效。同时,单手残疾人士在文本输入时,他们所面临的最大困难在于无法借助另外一只手按住Shift键以辅助标点符号、特殊符号、大写字母等字符的输入;此外,因肢体残疾的影响,尤其是对先天肢体健全而因后天发生灾祸导致肢体残疾的普通人而言,在使用普通PC键盘操作计算机时,往往因不能像双手健全时那样操作计算机,致使他们在身体和心灵上都备受打击。现有关注肢残人士身心健康的研究及应用中[1,2,3],通常从心理抚慰、自我效能感提升、借助假肢进行肢残辅助等方面入手。比如,仿生手的使用已能满足一些拧瓶盖、系鞋带等动作[4]。但是,对操作键盘这种复杂动作,还很难通过假肢实现,也很难消除肢残人士的心理阴影,不利于他们的身心健康发展。
 
在账务数据汇总及会计电算化业务应用中,为提高工作效率,有时也需财务人员在工作过程中一边翻阅纸质记账资料,一边打字录入纸质资料上的数据及文字信息,这种工作方式很易产生错误输入,并且由于长时间操作可能产生肌肉疲劳,形成职业病。这种传统工作模式已无法满足他们对工作舒适度的需要;另外,通过网络调查发现,目前有很多网民习惯于移动终端的九宫格输入法,在刚开始转向使用PC端的标准输入键盘时,对其比较生疏,打字不熟练,经常出现“一指禅”式的文本输入现象,不能很好地适应移动端与PC端输入法的切换。因此,他们迫切希望有一款能应用于PC端的九宫格输入法以及与之配套的专用键盘,以满足日常生活中的办公、娱乐等需求。
 
常用的九宫格输入法主要用于手机等移动终端,当前市面上支持PC端的九宫格输入软件寥寥无几,以主流的Windows平台输入法而言,包括搜狗输入法、百度输入法、微软拼音输入法等,它们几乎都没有将移动端的九宫格输入法移植到PC桌面端。其原因在于九宫格输入法具有9个对称布局的键位,而当前标准键盘中的数字小键盘由于按键数量限制,无法达到目前移动终端九宫格输入法同样的候选词的触控筛选、标点符号输入以及中、英文切换等操作的要求。从目前的应用来看,市面上还没有较成熟的PC端单手输入键盘和与之配套的输入法。大部分是通过软键盘进行模拟输入,这样易与其它PC端输入法产生记忆冲突,导致输入错误率较高;同时,这种模拟输入也易与其它快捷键产生冲突,导致部分按键功能失灵。
 
因此,设计与开发一套用于PC端的单手输入键盘以及与之配套使用的输入法,对满足特定人群的需要,提升他们的办公效率,具有重要的现实意义。
 
1 PC端九宫格输入系统设计与实现
结合移动终端上广泛应用的九宫格输入法和人体工程学原理,设计与开发一款用于Windows操作系统下的PC端九宫格输入系统。该PC端九宫格输入系统包括单手输入小键盘的硬件设计与开发和PC端九宫格输入法的开发,通过软、硬件协同工作,实现PC端的单手快速输入。
 
1.1 单手输入小键盘的硬件设计与实现
1.1.1 单手输入小键盘功能设计
在参照移动终端九宫格输入法的基础上,结合自主设计,开发出一款拥有30个按键的单手输入小键盘,如图1所示。小键盘作为PC端九宫格输入系统的硬件部分,需满足九宫格输入法的基本操作。小键盘被划分为四个区域,分别是横排的5个词组候选键、左侧纵排的5个音节候选键、中间对称的9宫格数字按键,以及其它标点符号等辅助输入的按键。
 
小键盘中关键按键所对应的功能如表1所示,其余按键的功能与移动终端九宫格输入法的功能一致。特别地,Shift按键可以配合数字键、候选键进行标点符号的单手输入。
 
1.1.2单手输入小键盘制作
根据图1所示的单手输入小键盘的功能及按键布局,结合PCB设计与开发流程,对本键盘专用的PCB电路板进行自主设计与功能实现,并使用3D打印技术制作键帽、定位板、键盘外壳等部件。PCB电路板上为每个按键焊接一个LED发光二极管,使其具有灯光效果,以方便夜晚打字。为便于安装和使用,单手输入小键盘通过USB接口与普通PC主板进行连接,因此不需额外开发针对本键盘设备的驱动程序,当键盘与普通PC的USB接口连接后,Windows操作系统会自动安装或更新微软提供的HID(Human Interface Devices)键盘设备驱动程序,达到与操作系统的无缝对接,实现即插即用的使用效果。单手输入小键盘的PCB电路板以及实物图如图2和图3所示。
 
1.2 PC端九宫格输入法的设计与实现
1.2.1 Hook技术实现键盘消息的拦截
PC端九宫格输入法程序以“外挂”的形式进行驱动,采用MSVC 2017编译器进行编译,为防止程序中的一些Windows API函数执行失败,通常需请求管理员权限。因此,在利用Qt框架进行开发过程中,首先需要在Qt的项目文件中设置如下所示链接器参数:
 
 
为实现文字输入功能,需对操作系统的全局键盘事件进行捕获并处理。在Qt创建的窗口程序未被激活的情况下,无法直接使用Qt本身自带的QKeyEvent事件类对键盘事件进行监听,因此需用键盘Hook技术实现键盘事件的监听功能[5]。将监听键盘事件的Hook函数与Qt的信号槽机制结合起来,才能使对应的回调函数处理键盘消息,其功能是将单手输入小键盘按键的ASCII码发送给键盘事件处理函数,从而利用Hook技术实现键盘消息的拦截。
 
1.2.2 输入法程序的执行流程
结合Hook技术和Qt框架,设计开发的PC端九宫格输入程序流程图如图4所示。
 
在KeyBoard_Hook捕获到专用键盘的按键消息后,通过Qt的信号槽机制将消息传递给对应的键盘消息函数进行处理,如果被检测到的按键是九宫格数字按键,则将已输入的数字按键序列拆分成多个子序列,并在词库中进行分词检索,将检索到的目标候选词加入Candi_List链表中,按每个词语的使用频率进行排序,最后显示在候选词窗口界面上;如果被检测到的按键是候选词按键,则首先获取插入光标的屏幕坐标,再根据插入光标的位置获取应用程序的输入框句柄,接着使用SendMessage函数将候选词发送到目标输入框中;如果被检测到的按键是候选音节按键,则从原来的候选词列表中筛选出与音节匹配的候选词,然后对剩余音节重新进行检索;如果被检测到的按键是退格键,则删除末尾的数字按键序列,并对剩余的数字按键序列重新进行分词检索。
 
由于每个单独的字或词组都有它所对应的九宫格按键序列,基于此,构建了本输入法的词库。例如,“你好”,该词语在小键盘上的按键序列为“64’486”,同时也对应了全拼拼音“ni’hao”、简拼拼音“n’h”。针对这种对应关系,设计一个词库表以及对应的实体类,该词库表包含GB2312常用的6000多个汉字以及收集整理的18万常用词语,词库在输入法程序启动时自动加载。
 
1.2.3 插入光标的跟随定位功能实现
为便于文本输入和满足操作习惯,外置输入法的候选词窗口需被准确定位到文本编辑框的插入光标附近。插入光标定位可通过MSAA (Microsoft Active Accessibility)实现。MSAA是一种基于组件对象模型(COM)的应用程序编程接口,该技术旨在辅助一些盲人、听力障碍的残疾人士访问、识别和操作Windows应用程序的UI元素。开发人员可通过相应的API函数获得目标应用程序中的UI元素对象(包括按钮、复选框、菜单、标签、文本输入框等控件),进而获取其UI元素对象中的属性值(如窗口句柄、坐标、文本内容等信息)。该项技术类似于浏览器中的“审查网页元素”功能,当鼠标悬浮在一个网页的某个UI对象上时,就能在Styles栏显示出对应的一系列属性。
 
本输入法主要针对于Windows桌面应用程序,为能进一步地准确定位插入光标的位置,需下载并安装Windows SDK,使用微软提供的控件识别工具Inspect.exe进行辅助。在本输入法程序设计中,输入框插入光标坐标获取函数的核心代码如下所示:
 
HRESULT GetCaretPos(long&x,long&y){
 
IAccessible*pAcc=NULL;
 
CoInitialize(NULL);
 
//1获取被激活的窗口的PID
 
DWORD focused_window=GetWindowThreadProcessId(GetForegroundWindow(),NULL);
 
//2将激活窗口的输入消息连接到当前线程,共享输入焦点
 
AttachThreadInput(focused_window,GetCurrentThreadId(),TRUE);
 
//3获取拥有键盘输入焦点的窗口句柄
 
HWND hwnd=GetFocus();
 
//4解除线程之间的联系
 
AttachThreadInput(focused_window,GetCurrentThreadId(),FALSE);
 
//5获取指定窗口中插入光标的IAccessible接口,插入光标的对象标识为OBJID_CARET
 
if (SUCCEEDED (AccessibleObjectFromWindow(hwnd,OBJID_CARET,IID_IAccessible,(void**)(&pAcc)))){
 
VARIANT varChild={0};
 
varChild.vt=VT_I4;
 
varChild.intVal=CHILDID_SELF;
 
longleft,top,width,height;
 
//获取插入光标的屏幕坐标
 
if(SUCCEEDED(pAcc->accLocation(&left,&top,&width,&height,varChild))){
 
x=left;y=top;
 
pAcc->Release();
 
return S_OK;
 
}
 
}
 
pAcc->Release();
 
return S_FALSE;
 
}
 
通过MSAA编程接口获取插入光标位置的实现能满足Windows操作系统中大多数的桌面应用程序,包括记事本、Notepad++、腾讯QQ以及Edge、Chrome浏览器中网页的表单控件等。但个别应用程序并不能较好地兼容这个接口,例如VS Code、Clion等程序的插入光标位置不能较好地获取到。然而,由于用户在输入文字时,通常需用鼠标点击输入框进行定位,如果该函数的返回值为S_FALSE或获取到的屏幕坐标全为0时,则可将候选词窗口设置到鼠标位置附近,这样就可用鼠标位置辅助该函数进行定位,从而间接解决部分应用程序使用过程中光标无法定位的问题。
 
1.2.4 用户交互界面设计
为能让使用者较快地熟悉并友好地使用本输入法,在借鉴移动终端九宫格输入法的基础上,在Qt Creator中设计了候选词窗口界面,如图5所示。
 
本输入法将用户交互界面分为三部分,在候选词窗口的顶部显示第一个候选词所对应的全拼拼音组合、中间部分显示5个权重最高的候选词、左侧部分显示5个候选音节,这种布局能在视觉和键盘手感上形成对接,防止出现操作失误的情况。
 
2 实际应用效果评测
本输入法系统在实际使用时的状态如图6所示。专用键盘的特殊按键排列较近似于移动端的九宫格按键布局,符合单手打字习惯。因此,使用者在具有使用九宫格输入法经历的前提下,不需经过特殊的指法训练,只需简单了解专用的单手输入小键盘上的按键布局即可快速掌握并使用整个输入法系统。
 
从生活常识和使用经验判断,单手打字速度理论上会比双手打字慢很多。但从测试人员使用本输入法系统的实际情况来看,经过实际测试和统计,使用者每分钟打字速度基本上能维持在35 WPM (Word Per Minute,单词/每分钟)到50 WPM之间,而普通正常人在使用PC端拼音输入法时的打字速度一般是60 WPM左右,这说明本输入法系统有较理想的单手打字的应用效果。
 
安装测试发现,本输入法程序能在绝大多数安装有Windows操作系统的PC机上流畅运行,并能迅速响应候选词的查找。由于本输入法系统是一种外置输入法,但仍存在一些不足,这对一些特殊窗口,如VS Code等,并不能准确地定位到插入光标的屏幕坐标,从而导致无法获取到输入框句柄,光标定位功能上还需进一步改进和完善,以使其能兼容更多的应用程序。
 
3 结论
为便于单手打字需求的人们的日常生活需要,在设计与实现PC端九宫格输入法的基础上,通过开发一款面向单手输入需求的九宫格输入法专用键盘,形成完整的PC端九宫格输入系统。本输入法系统的专用键盘具有键位少、体积小、便于携带、具备计算机标准键盘的基本输入功能等优点。使用者可将整个输入系统掌握在一只手中,长期使用会形成肌肉记忆,熟练掌握九宫格输入法的用户可实现单手盲打,较短的键程便于手指之间的相互配合,便利标点符号等特殊字符的输入,能有效满足习惯于单手输入的人员使用。该系统设计新颖,在辅助肢残人士或财务人员进行单手输入方面具有一定的实际意义和实用价值。
 
参考文献
[1] 吴靖萱.肢残人士心理健康现状及其心理健康服务需求的调查[D].陕西师范大学,2015.
[2] 楚梦雅.小组工作介入肢残青少年人际交往自我效能感提升研究[D].大连海事大学,2020.
[3] 贾中.3D打印对肢残人的辅助作用[J].科技风,2018(03):11.
[4] 洪恒飞,江耘.仿生手随心而动肢残人士重“掌”人生[N].科技日报,2021-12-21(006).
[5]倪志慧,沈岚岚基于HOOK的鼠标键盘录制的实现[J]科技视界,2021(03):26-27.
 

上一篇:没有了
下一篇:没有了