一种获取键盘任意多按键组合数据的方法技术

技术编号:35193796 阅读:21 留言:0更新日期:2022-10-12 18:19
本发明专利技术公开一种获取键盘任意多按键组合数据的方法,包括以下步骤:当键盘上的按键被按下时,记录该按键对应的keyCode值,并将其添加至数组变量ARRAY_CURRENT内,计算数组变量ARRAY_CURRENT内的keyCode值的个数值,并将其与变量Size的值进行比较,若其个数值大于变量Size的值,则变量Size的值加1;当键盘上有按键被松开时,记录该按键的keyCode值,若数组变量ARRAY_RESULT内无该keyCode值,则将该keyCode值添加至其内;当键盘的按键全部松开时,检查数组变量ARRAY_RESULT内的keyCode值的个数值与变量Size的值是否相等,若相等,则数组变量ARRAY_RESULT内记录的keyCode值为最终的按键组合数据。本发明专利技术可实现普通按键的长按时按键组合数据的获取,实现任意种类的按键的按键组合数据的获取,提高键盘数据获取的准确性。提高键盘数据获取的准确性。

【技术实现步骤摘要】
一种获取键盘任意多按键组合数据的方法


[0001]本专利技术涉及键盘数据获取方法领域,尤其涉及一种获取键盘任意多按键组合数据的方法。

技术介绍

[0002]浏览器进行键盘按键事件监听时,能够记录当前被按下的按键的数据,若多个按键同时被按下,则分别多次记录被按下的按键的数据,如果有alt或shift或ctrl等特殊按键被按下时,也能同时记录这些特殊按键是否被按下。
[0003]现有的浏览器在进行键盘按键事件的监听时,只能记录单次被按下的按键的keyCode值,若多个按键被按下,则分别多次记录按键的keyCode值。采用已有的键盘按键事件监听机制时,只能监听到特殊按键与普通按键的组合,而无法直接监听及记录到之前所按下未松开的按键,因此,不能记录普通按键与普通按键(例如a+s+d)、以及多个普通按键与特殊按键(例如a+s+ctrl)的组合数据,影响键盘数据获取的准确性。
[0004]因此,现有技术存在缺陷,需要改进。

技术实现思路

[0005]本专利技术的目的是克服现有技术的不足,提供一种获取键盘任意多按键组合数据的方法,解决现有技术中,只能监听到特殊按键与普通按键的组合,而无法监听普通按键与普通按键的组合,影响键盘数据获取的准确性的问题。
[0006]本专利技术的技术方案如下:一种获取键盘任意多按键组合数据的方法,包括以下步骤:定义一个用于记录当前已按下未松开的按键的keyCode值的数组变量ARRAY_CURRENT,同时定义一个用于记录已按下并松开的按键的keyCode值的数组变量ARRAY_RESULT;定义一个用于记录同时按下的按键数的变量Size;当键盘上的按键开始被按下时,记录所按下的按键对应的keyCode值,并将其添加至数组变量ARRAY_CURRENT内,同时计算数组变量ARRAY_CURRENT内当前所记录的keyCode值的个数值,并将该个数值与变量Size的值进行比较;若数组变量ARRAY_CURRENT内记录的keyCode值的个数值大于所述变量Size的值,则变量Size的值加1;当同一按键被长按时,查看该被长按的按键对应的keyCode值是否已被数组变量ARRAY_CURRENT记录,若被记录,则数组变量ARRAY_CURRENT、变量Size的值均不变;当键盘上有按键被松开时,记录所松开的按键的keyCode值,并在数组变量ARRAY_CURRENT内寻找该keyCode值并将其删除,数组变量ARRAY_CURRENT内的keyCode值的个数值减1,同时在数组变量ARRAY_RESULT内查找该keyCode值,若未查找到,则将其添加至数组变量ARRAY_RESULT内;当键盘的按键全部被松开时,判断数组变量ARRAY_RESULT内的keyCode值的个数值与变量Size的值是否相等,若相等,则数组变量ARRAY_RESULT内所记录的keyCode值为最终的按键组合数据。
[0007]进一步地,所述数组变量ARRAY_CURRENT、数组变量ARRAY_RESULT初始状态均为空数组,所述变量Size的初始值为0。
[0008]进一步地,若数组变量ARRAY_CURRENT内记录的keyCode值的个数值小于或等于所述变量Size的值,则变量Size的值不变。
[0009]进一步地,当同一按键被长按,查看该被长按的按键对应的keyCode值是否已被数组变量ARRAY_CURRENT记录时,若被长按的按键对应的keyCode值未被数组变量ARRAY_CURRENT记录,则将其记录至数组变量ARRAY_CURRENT内,并将数组变量ARRAY_CURRENT内的keyCode值的个数值与变量Size的值进行比较。
[0010]进一步地,当键盘的按键全部被松开,判断数组变量ARRAY_RESULT内的keyCode值的个数值与变量Size的值是否相等时,若不相等,则计算变量Size的当前数值与数组变量ARRAY_RESULT内记录的keyCode值的个数值的差值,并根据该差值将数组变量ARRAY_RESULT内先插入的keyCode值依次删除。
[0011]采用上述方案,本专利技术提供一种获取键盘任意多按键组合数据的方法,具有以下有益效果:可通过数组变量ARRAY_CURRENT记录长按的按键的keyCode值,数组变量ARRAY_RESULT记录按下已松开的按键的keyCode值,并通过数组变量ARRAY_CURRENT、数组变量ARRAY_RESULT、变量Size的配合,实现普通按键的长按时,按键组合数据的获取,而不是只获取单个普通按键的按键数据,实现任意种类的按键、按键数量的按键组合数据的获取,提高键盘数据获取的准确性;同时通过控制变量Size的变化,将其最终值与数组变量ARRAY_RESULT内最终的keyCode值的个数值进行对比,实现无效数据的排除,提高最终所获得的按键组合数据的准确性。
具体实施方式
[0012]以下具体实施例,对本专利技术进行详细说明。
[0013]本专利技术提供一种获取键盘任意多按键组合数据的方法,包括以下步骤:
[0014]定义一个用于记录当前已按下未松开的按键的keyCode值的数组变量ARRAY_CURRENT,同时定义一个用于记录已按下并松开的按键的keyCode值的数组变量ARRAY_RESULT;定义一个用于记录同时按下的按键数的变量Size;因此,初始状态时,所述数组变量ARRAY_CURRENT、数组变量ARRAY_RESULT均为空数组,所述变量Size的初始值为0;每一个按键对应的keyCode值均带有特定的keyCode属性。
[0015]当键盘上的按键开始被按下时,记录所按下的按键对应的keyCode值,并将其添加至数组变量ARRAY_CURRENT内,同时计算数组变量ARRAY_CURRENT内当前所记录的keyCode值的个数值,并将该个数值与变量Size的值进行比较;数组变量ARRAY_CURRENT内记录的为当前键盘所按下的按键的keyCode值,例如有两个按键被同时按下,则此时keyCode值的个数值为2。
[0016]若数组变量ARRAY_CURRENT内记录的keyCode值的个数值大于所述变量Size的值,则变量Size的值加1;当同一按键被长按时,查看该被长按的按键对应的keyCode值是否已被数组变量ARRAY_CURRENT记录,若被记录,则数组变量ARRAY_CURRENT、变量Size的值均不变;需要说明的是,当同一按键被长按时,按键事件会在除刚开始按下时之外,短时间内以极高频率多次触发并能多次获取到该按键对应的keyCode值,此后需查看该被长按的按键对应的keyCode值是否已被数组变量ARRAY_CURRENT所记录,若已被记录,则数组变量ARRAY_CURRENT不会重复记录该keyCode值,同时变量Size的值也不会发生变化,因此可以
排除按键长按导致重复记录的影响。
[0017]当键盘上有按键被松开时,记本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种获取键盘任意多按键组合数据的方法,其特征在于,包括以下步骤:定义一个用于记录当前已按下未松开的按键的keyCode值的数组变量ARRAY_CURRENT,同时定义一个用于记录已按下并松开的按键的keyCode值的数组变量ARRAY_RESULT;定义一个用于记录同时按下的按键数的变量Size;当键盘上的按键开始被按下时,记录所按下的按键对应的keyCode值,并将其添加至数组变量ARRAY_CURRENT内,同时计算数组变量ARRAY_CURRENT内当前所记录的keyCode值的个数值,并将该个数值与变量Size的值进行比较;若数组变量ARRAY_CURRENT内记录的keyCode值的个数值大于所述变量Size的值,则变量Size的值加1;当同一按键被长按时,查看该被长按的按键对应的keyCode值是否已被数组变量ARRAY_CURRENT记录,若被记录,则数组变量ARRAY_CURRENT、变量Size的值均不变;当键盘上有按键被松开时,记录所松开的按键的keyCode值,并在数组变量ARRAY_CURRENT内寻找该keyCode值并将其删除,数组变量ARRAY_CURRENT内的keyCode值的个数值减1,同时在数组变量ARRAY_RESULT内查找该keyCode值,若未查找到,则将其添加至数组变量ARRAY_RESULT内;当键盘的按键全部被松开时,判断数组变量ARRAY_RESULT内的keyCode值的个数值与变量Size的值是否相等,若...

【专利技术属性】
技术研发人员:王健邹琼周双全
申请(专利权)人:深圳市瑞云科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1