发明内容
有鉴于此,本发明的主要目的在于提供一种基于触摸屏的多触点输入方法及装置,用于解决现有基于触摸屏的输入法中在实现组合键输入、复合键输入等多点输入时效率较低、操作复杂等技术问题。
为达到上述目的,本发明的技术方案是这样实现的:
一种基于触摸屏的多触点输入方法,该方法包括:
消息映射模块通过系统接口接收触摸屏驱动模块传送的多触点按压位置消息,将按压位置信息转换为对应的按键标识,并根据按键映射表将用户的多触点按键输入映射为相应类型的多触点按键消息发送给相应的多触点处理模块进行处理。
进一步地,所述多触点按键消息的类型包括:组合键输入消息类型、复合健输入消息类型、快速手势输入消息类型;与各多触点消息类型相对应的处理模块分别为:组合键处理模块、复合键处理模块、快速手势处理模块。
进一步地,所述方法对于组合键输入具体为:
当所述消息映射模块监测到有组合键中的前导按键按下并保持按下状态的同时又有组合键中的附加键被按下时,所述消息映射模块根据按键映射表映射组合键按下消息,并发送给组合键处理模块;组合键处理模块响应该消息,并触发组合键按下的事件处理函数,执行该组合键对应的功能。
进一步地,所述方法对于复合键输入具体为:
当所述消息映射模块监测到有复合键中的前导按键按下时,向复合键处理模块发送前导键按下的按键消息,复合键处理模块响应该消息对输入界面进行相应的变化;
当所述消息映射模块监测到在所述复合键的前导键保持按下状态的同时又有复合键中的附加键被按下时,所述消息映射模块根据按键映射表映射复合键按下消息,并发送给复合键处理模块;复合键处理模块响应该消息,并触发复合键按下的事件处理函数,执行该复合键对应的功能。
进一步地,所述方法对于快速手势命令输入具体为:
所述消息映射模块监测到有快速手势键被按下时,向快速手势处理模块发送快速手势键按下的按键消息,快速手势处理模块响应该消息,弹出窗口显示快速启动按键;
当所述消息映射模块监测到在所述快速手势键被按下并保持按下状态的同时用户又按下了所述快速启动按键时,所述消息映射模块根据按键映射表映射快速手势输入消息,并发送给快速手势处理模块;快速手势处理模块响应该消息,并触发快速手势事件处理函数,执行该快速手势键对应的功能。
进一步地,所述方法还包括对多触点的窗口缩放处理步骤:
所述消息映射模块检测到两个触点被同时按下,并发生位置移动时,建立针对两个触点的位置移动列表;所述消息映射模块根据窗口缩放的判断条件判断是否是窗口缩放操作,若是则向窗口缩放处理模块发送窗口缩放消息,消息中携带所述位置移动列表地址,窗口缩放处理模块响应该消息,并触发窗口缩放处理函数,窗口缩放处理函数根据两个触点的相对位置移动来实现窗口的缩放。
基于上述方法,本发明还提出一种基于触摸屏的多触点输入装置,所述装置包括:
组合键处理模块,用于处理组合键多触点输入操作;
复合键处理模块,用于处理复合键多触点输入操作;
快速手势处理模块,用于处理快速手势命令多触点输入操作;
消息映射模块,用于将用户的多触点输入操作与相应的多触点处理模块相关联,并负责根据用户输入的按键类型分发相应类型的多触点按键消息给相应的多触点处理模块。
所述多触点按键消息的类型包括:组合键输入消息类型、复合键输入消息类型、快速手势输入消息类型;与各多触点消息类型相对应的多触点处理模块分别为:组合键处理模块、复合键处理模块、快速手势处理模块。
进一步地,所述消息映射模块包括:
位置与按键转换模块,用于从触摸屏驱动模块接收多触点按压位置消息,根据系统预设的位置与按键标识的对应关系表将按压位置坐标转换为对应按键标识,然后传送给映射分发模块;
映射分发模块,用于根据预设的按键映射表对用户的多触点输入操作类型做出判断,将用户的多触点按键输入映射为相应类型的多触点按键消息发送给相应的多触点处理模块进行处理。
进一步地,所述多触点处理模块在接收到所述多触点按键消息后,触发相应的多触点事件处理函数,多触点事件处理函数执行用户输入的多触点操作所对应的功能。
进一步地,所述位置与按键转换模块还用于根据窗口缩放的判断条件判断当前的多触点输入操作是否是窗口缩放操作,若是,则建立用于存储位移轨迹的位置移动列表;
所述映射分发模块还用于发送窗口缩放消息给窗口缩放处理模块,并在消息中携带各触点的位置移动列表。
本发明利用多触点模拟用户操作键盘的过程,实现组合键的输入,更加符合人的操作习惯,并且一次完成输入提高了输入效率。本发明通过多触点提高了复合键输入的效率,改进了用户的输入体验。本发明通过多触点很方便的实现了缩放输入区域,通过手势命令可以方便的完成输入命令。
具体实施方式
本发明的核心思想是在输入法中采用多触点输入,克服单一触点输入的弊端,更好的处理组合键输入、复合键输入等,通过多触点操作提供更多、效率更高的操作功能。
为使本发明的目的、技术方案和优点更加清楚明白,以下举实施例并参照附图,对本发明进一步详细说明。
图1为本发明输入法系统及操作系统的逻辑结构示意图,本发明所述的输入法系统在操作系统之上,作为单独的软件系统安装在操作系统中,输入法系统与操作系统之间通过系统接口进行交互。操作系统中安装有触摸屏的驱动模块,当用户在触摸屏上做点击操作时,触摸屏驱动模块能够检测出用户点击的位置,并通过接口将用户点击的位置信息传送给输入法系统中的消息映射模块,由消息映射模块进行位置与对应按键的翻译,并将对应的按键标识转发给相应的按键处理模块,与现有技术区别的是,本发明的输入法系统支持多触点输入,本发明用于多触点处理的模块包括组合键处理模块、复合键处理模块、快速手势处理模块及窗口缩放处理模块等。
本发明输入法系统包含以下模块:
单键处理模块,用于处理单按键输入,本发明所述单按键输入是指不需要与其它按键组合生效的按键输入操作,例如用户输入小写字母a的操作。
组合键处理模块,用于处理组合键多触点输入操作,本发明所述组合键输入是指需要与前导键组合生效的多触点输入操作,所述前导键是指需要与其它按键配合使用的按键,例如Ctrl键、Alt键、Shift键等。组合键输入的实例如:用户输入全部选择Ctrl+A快捷键的操作,需要首先按下前导键Ctrl键,在保持Ctrl键按下的同时按下附加键字母a键。
复合键处理模块,用于处理复合键多触点输入操作,本发明所述复合键输入是指在按下某个前导键时,输入窗口根据所按下的前导键进行动态的变化,此时用户在保持前导键按下的同时按下变化后的输入窗口中的其它按键的输入操作。
快速手势处理模块,用于处理快速手势命令多触点输入操作,本发明所述快速手势命令输入是指用户按下快速手势按键后,输入法系统弹出窗口显示某些应用或输入法本身某些功能的快速启动按键,用户在保持快速手势按键按下的同时按下快速启动按键的输入操作。
窗口缩放处理模块,用于处理窗口放大缩小的多触点输入操作,本发明所述输入法窗口放大缩小是指通过同时按下的两个点的移动实现窗口放大或缩小的操作。
消息映射模块,用于将用户的单触点或多触点输入操作与相应的单触点或多触点处理模块相关联,并负责根据用户输入的按键类型分发相应类型的单触点或多触点按键消息给相应的处理模块。
消息映射模块进一步包括:位置与按键转换模块、映射分发模块;
位置与按键转换模块用于从触摸屏驱动模块接收用户按压及释放位置坐标消息,根据系统预设的位置与按键标识的对应关系表将按压或释放位置坐标转换为对应按键标识,然后传送给映射分发模块;位置与按键转换模块还用于检测用户的输入操作是否具有多触点移动特征时窗口缩放操作,若具有该特征,建立用于存储位移轨迹的位置移动列表。
映射分发模块用于根据预设的按键映射表对用户的按键操作类型做出判断,根据按键操作类型将用户的按键操作映射为相应类型的按键消息发送给相应的处理模块进行处理;对于窗口缩放操作,该模块直接将发送窗口缩放消息给窗口缩放处理模块,并在消息中携带各触点的位置移动列表访问地址。
按键标识是指系统定义的用于唯一标识一个按键的标识信息;
按键映射表为系统定义的按键标识或按键标识的组合与按键类型或按键消息类型的映射关系表,消息映射模块根据该表判断用户输入的是哪一类输入操作,并形成相应的按键消息发送给相应的处理模块。例如,按键映射表中保存有组合键与组合键处理模块之间的消息映射关系,当用户按下组合键时,该模块发送相应的组合键按下消息给组合键处理模块进行处理;当用户抬起组合键时,该模块发送相应的组合键释放消息给组合键处理模块进行处理。对应其它类型的按键操作,处理方式相同。
图2为本发明实现按键输入操作的总体流程图,具体步骤如下:
步骤201:输入法系统通过系统接口接收到触摸屏驱动模块传送的按压位置消息;
步骤202:消息映射模块将位置信息转换为对应的按键标识,并根据按键映射表将用户的单触点和多触点的输入按键映射为相应类型的单触点或多触点的按键消息发送给相应的单触点或多触点处理模块进行处理。
多触点按键消息类型包括:组合键输入消息、复合键输入消息、快速手势输入消息、窗口缩放消息等。所述多触点处理模块包括:组合键处理模块、复合键处理模块、快速手势处理模块、窗口缩放处理模块等。
对于单键输入操作的处理步骤为:消息映射模块接收到触摸屏驱动模块传送的单点位置信息后,根据系统预设的位置按键对应关系表转换为按键标识,然后根据按键映射表形成单键输入消息发送给单键处理模块进行单按键输入操作。
对应组合键的处理步骤为:消息映射模块接收到触摸屏驱动模块传送的多触点位置信息后,根据系统预设的位置按键对应关系表将各触点位置转换为对应的按键标识,然后根据按键映射表形成组合键输入消息发送给组合键处理模块进行相应的组合键多触点输入处理。
对应复合键的处理步骤为:消息映射模块接收到触摸屏驱动模块传送的多触点位置信息后,根据系统预设的位置按键对应关系表将各触点位置转换为对应的按键标识,然后根据按键映射表形成复合键输入消息发送给复合键处理模块进行相应的复合键多触点输入处理。
对快速手势输入操作的处理步骤为:消息映射模块接收到触摸屏驱动模块传送的多触点位置信息后,根据系统预设的位置按键对应关系表将各触点位置转换为对应的按键标识,然后根据按键映射表形成快速手势输入消息发送给快速手势处理模块进行相应的快速手势命令多触点输入处理。
对窗口缩放输入操作的处理步骤为:消息映射模块接收到触摸屏驱动模块传送的连续的多触点位置信息后,将连续的多触点位置信息形成位置信息列表,并形成窗口缩放消息发送给窗口缩放处理模块进行窗口缩放多点输入处理。
步骤203:单键处理模块进行单按键输入操作,该模块的处理方式为现有技术。
步骤204:组合键处理模块进行组合键多触点输入操作。
组合键处理模块响应组合键输入消息,触发对应的组合键处理事件函数,完成组合键的输入。
步骤205:复合键处理模块进行复合键多触点输入操作。
复合键处理模块响应复合键输入消息,触发对应的复合键处理事件函数,完成复合键的输入。
步骤206:快速手势处理模块进行快速手势命令多触点输入操作。
快速手势处理模块响应快速手势输入消息,触发对应的快速手势输入处理函数,完成快速手势命令的输入。
步骤207:窗口缩放处理模块进行窗口缩放多触点输入操作。
窗口缩放处理模块响应窗口缩放消息,触发对应的窗口缩放处理函数,完成窗口缩放处理操作。
图3A为本发明执行组合键处理的流程图,具体步骤如下:
步骤301:消息映射模块监测到有组合键中的前导按键按下;
以一具体实施例中输入组合键Ctrl+a为例,所述前导键为Ctrl键,当消息映射模块监测到前导键按下后会继续监测是否有附加键按下,附加键为组合键中除前导键外的其它按键,该实施例中为a键。可选地,所述前导键和附加键都可以是多个按键,例如组合键Ctrl+Shift+a等。
步骤302:消息映射模块监测前导键是否被释放,若被释放,则结束流程;否则执行步骤303;
步骤303:消息映射模块监测到在前导键被按下并保持按下状态的同时,又有组合键中的附加键被按下,则消息映射模块根据按键映射表映射组合键按下消息;
步骤304:消息映射模块发送组合键按下消息给组合键处理模块,消息中携带组合键的按键标识;
以组合键Ctrl+a为例,在Ctrl键被按下的同时,用户按下了附加键a,则消息映射模块发送Ctrl+a被按下的组合键消息给组合键处理模块,组合键处理模块响应该消息,执行组合键Ctrl+a所对应的相应的功能。
步骤305:消息映射模块判断附加键是否被释放,若被释放则执行步骤307;否则执行步骤306;
步骤306:消息映射模块判断前导键是否被释放,若被释放则执行步骤307;否则执行步骤304;
本发明不限制步骤305和步骤306的执行顺序,可先判断前导键是否被释放,然后判断附加键是否被释放。
消息映射模块以一定的检测间隔判断组合键是否一直保持按下状态,如果是则重复发送相应的组合键消息,否则,只要有一个按键被释放就发送相应的组合键被抬起的组合键释放消息给组合键处理模块,其它的多触点操作方法相同。
步骤307:消息映射模块监测到有按键被释放,则发送组合键释放消息给组合键处理模块,消息中携带释放的组合键标识,组合键处理模块响应该消息,执行相应的功能。
步骤308:消息映射模块判断前导键是否被释放,若未被释放,则执行步骤303,继续等待附加键的按下;否则流程结束。
以下举例说明几个组合键输入的操作过程:
1、以Shift+d输入大写字母D为例:
输入法虚拟键盘初始状态如图3B所示,左侧第一列第三行第一个按键为上档字符键(Shift键),该按键为预定义的前导键,用户首先通过一个触点按下Shift键,此时通过另外的一个触点按下附加键d键,此时的状态是,Shift键和d键被同时按下,如图3C所示;
2、以Shift+d+其他按键,实现连续输入大写字母的输入为例:
步骤311、键盘初始状态如图3B所示,首选通过一个触点按下Shift键,此时消息映射模块检测到Shift键按下事件;
步骤312、保持Shift按键状态不变,通过另外的触摸点按下d键,此时消息映射模块检测到Shift键和d键同时被按下。
步骤313、保持Shift按键状态不变,抬起d键,然后按下其他虚拟按键,如a键。
步骤314、最后抬起按键Shift完成连续大写字母的输入。
通过该实施例可以体会到,本发明在处理基于触摸屏的输入法的组合键输入时,将多个虚拟按键的单独点击操作简化为多个触点的同时操作,提高了输入速度,更符合用户的操作习惯。
图4A为本发明执行复合键处理的流程图,其步骤流程与组合键处理流程相似,所区别的是,在复合键中的前导键被按下或抬起时,消息映射模块会向复合键处理模块发送前导键被按下或抬起的消息,复合键处理模块会根据所按下的复合键对虚拟键盘做动态的改变,以显示可选择的附加键。
步骤401:消息映射模块监测到有复合键中的前导按键被按下,向复合键处理模块发送前导键按下的按键消息,复合键处理模块响应该消息对输入界面进行相应的变化;
如图4B-4D为本发明复合键输入的实例,该实施例以连续输入字母a、b、c为例,初始输入界面如图4B所示,输入的过程为:用户点击复合键的前导键即图中的虚拟键2,这时弹出显示a、b、c三个附加键,然后保持虚拟键2按下的状态不变,使用另外一个触点连续点击a、b、c完成相应的复合按键的输入,然后抬起虚拟键2。
步骤402:消息映射模块监测前导键是否被释放,若被释放,则结束流程;否则执行步骤403;
步骤403:消息映射模块监测到在前导键被按下并保持按下状态的同时,又有复合键中的附加键被按下;
步骤404:消息映射模块发送复合键被按下的复合键消息给复合键处理模块,消息中携带被按下的前导键及附加键的按键标识,复合键处理模块响应该消息,触发复合键事件处理函数,执行该复合键对应的功能;
以图4B-4D为例,在保持前导键2按下的同时,用户又按下了附加键a,则消息映射模块发送2+a的复合键消息给复合键处理模块,复合键响应该消息,实现字母a的输入。
步骤405:消息映射模块判断附加键是否被释放,若被释放则执行步骤407;否则执行步骤406;
步骤406:消息映射模块判断前导键是否被释放,若被释放则执行步骤407;否则执行步骤404;
本发明不限制步骤405和步骤406的执行顺序,可先判断前导键是否被释放,然后判断附加键是否被释放。
消息映射模块以一定的检测间隔判断复合键是否一直保持按下状态,如果是则重复发送相应的复合键消息,否则,只要有一个键被释放就发送相应的复合键被抬起的复合键释放消息给复合键处理模块。本发明可定义在接收到复合键按下消息时或在接收到复合键抬起消息时触发相应的输入事件。
步骤407:消息映射模块监测到有按键被释放,则发送复合键被抬起的复合键释放消息给复合键处理模块,消息中携带被释放的前导键及附加键的按键标识,复合键处理模块响应该消息,执行相应的功能。
步骤408:消息映射模块判断前导键是否被释放,若未被释放,则执行步骤403,继续等待附加键的按下;否则流程结束。
以下举另一实例说明复合键的处理过程,如图4E-图4F所示,为通过复合键方式输入大写字母的示意图;操作过程如下:
初始的输入界面如图4E所示,当按下前导键Shift键时,消息映射模块检测到Shift键被按下,执行相应的窗口变化操作,动态地在虚拟键盘上的原始位置显示相应的上档字符,如图4F所示,此时用户在保持前导键按下的同时通过另外一个触点按下字母A或连续按下并抬起多个大写字母,此时,消息映射模块检测到在Shift键按下的同时,还检测到字母A或其它上档字符的按下操作,则向复合键处理模块发送复合按键消息,复合按键消息触发相应的事件处理函数,在所述事件处理函数中完成输入操作。
图5A为本发明快速手势键的处理流程图,具体步骤如下:
步骤501:消息映射模块监测到有快速手势键被按下,向快速手势处理模块发送快速手势键按下的按键消息,快速手势处理模块响应该消息,弹出窗口显示某些应用或输入法本身某些功能的快速启动按键(也可称为附加键);
步骤502:消息映射模块监测快速手势键是否被释放,若被释放,则关闭显示快速启动按键的窗口,结束流程;否则执行步骤503;
步骤503:消息映射模块监测到在快速手势键被按下并保持按下状态的同时,附加键被按下;
步骤504:消息映射模块根据按键映射表映射快速手势输入消息,并发送快速手势输入消息给快速手势处理模块,快速手势处理模块响应该消息,并触发快速手势事件处理函数,执行该快速手势键对应的功能;
步骤505:消息映射模块判断附加键是否被释放,若被释放则执行步骤507;否则执行步骤506;
步骤506:消息映射模块判断快速手势键是否被释放,若被释放则执行步骤507;否则执行步骤504;
本发明不限制步骤505和步骤506的执行顺序,可先判断快速手势键是否被释放,然后判断附加键是否被释放。
步骤507:消息映射模块监测到有按键被释放,则发送快速手势释放消息给快速手势处理模块,快速手势处理模块响应该消息,执行相应的功能。
步骤508:消息映射模块判断快速手势键是否被释放,若未被释放,则执行步骤503,继续等待附加键的按下;否则流程结束。
图5B和图5C为本发明快速手势命令输入的窗口显示示意图,初始虚拟键盘如图5B所示,用户点击右下角的快速手势按键,此时消息映射模块检测到快速手势按键被按下的事件,发送快速手势按键被按下消息给快速手势处理模块,在快速手势按键被按下的事件处理函数中,系统根据快速手势按键的设置,显示与所述快速手势按键相关联的新的输入窗口,如图5C所示,用户保持快速手势按键被按下的状态,使用另一个触点按下新的输入窗口中的虚拟按键,此时消息映射模块检测到按键被按下后,发送快速手势键输入消息,消息中携带所按下的附加键,快速手势处理模块响应该消息,并执行相应的功能,例如启动应用程序、切换输入法、切换大小写状态、快速提交文字等等。
图6A为本发明多触点窗口缩放处理流程,具体步骤为:
步骤601:消息映射模块检测到两个触点被同时按下,并发生位置移动,建立针对两个触点的位置移动列表,该列表用于存储移动轨迹上的每个检测点的坐标位置信息;
步骤602:消息映射模块根据窗口缩放的判断条件判断是否是窗口缩放操作,若是,则执行步骤603;否则结束窗口缩放操作流程,执行其它操作类型的判断处理。
本发明一具体实施例中,窗口缩放的判断条件为:
假设两个触点形成的位置移动列表为:
触点A的位置移动列表:ListA={(x1,y1),(x2,y2),(x3,y4),...(xn,yn)}
触点B的位置移动列表:ListB={(a1,b1),(a2,b2),(a3,b3),...(an,bn)}
窗口放大的判定条件为:
(1)、x1>=x2>=x3...>=xn,a1<=a2<=a3...<=an,即一个点向左滑动,另一个点向相离方向滑动。
(2)、{y1,y2,y3,...yn}{b1,b2,b3,...bn}在一定的坐标范围内,即y轴的位置坐标的偏差不超过设定的值;
窗口缩小的判断条件为:
(1)、x1<=x2<=x3...<=xn,a1>=a2>=a3...>=an,即一个点向右滑动,另一个点向相近方向滑动。
(2)、{y1,y2,y3,...yn}{b1,b2,b3,...bn}在一定的坐标范围内,即y轴的位置坐标偏差不超过设定的值;
步骤603:消息映射模块记录当前位置信息,向窗口缩放处理模块发送窗口缩放消息;
消息映射模块将监测到的两个触点的位置移动信息添加到位置移动列表中,并向窗口缩放处理模块发送窗口缩放消息,消息中携带各触点的位置移动列表内存地址,窗口缩放处理模块接收到该消息后出发窗口缩放处理函数,在函数中根据当前位置信息与第一个坐标位置信息之间的位移差来实现窗口的缩放。
步骤604:消息映射模块在监测位置移动信息的同时,也判断触点是否被释放,若被释放,则执行步骤605;否则执行步骤603;
步骤605:消息映射模块发送窗口缩放结束消息给窗口缩放处理模块,释放位置移动列表。
窗口缩放处理模块接收到窗口缩放结束消息后结束窗口缩放操作。
图6B为本发明执行窗口缩放的操作示意图,即用户在输入窗口内通过两个触点同时按住并向反方向移动,此时窗口缩放模块会根据两个触点的相对位置移动距离缩放输入窗口。
通过该实施例,本发明可以很方便的实现单触点模式下不容易实现的操作,如组合键的输入、复合键的输入、输入区域的放大缩小,快速手势命令等,更加符合用户的操作习惯,提高了输入效率。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。