一种提高键盘输入正确性的方法及键盘过滤驱动与流程

文档序号:12361994阅读:297来源:国知局
一种提高键盘输入正确性的方法及键盘过滤驱动与流程

本发明涉及电子设备输入领域,尤其涉及一种提高键盘输入正确性的方法及键盘过滤驱动。



背景技术:

Windows的驱动架构是分层处理的,其中针对PS2键盘设备的驱动包括键盘过滤驱动、Windows系统自带的系统键盘驱动(系统键盘驱动包括系统键盘底层驱动和系统键盘类驱动)。PS2键盘将PS2键盘输入数据发送到8042控制器,系统键盘驱动从控制器中取出键盘输入数据并进行处理得到预设结构的键盘输入信息,并将预设结构的键盘输入信息传输给键盘过滤驱动。PS2键盘输入数据可能有一个字节或两个字节,而接收PS2键盘输入数据的控制器每次只能接收一个字节的数据;键盘过滤驱动为防止8042控制器中PS2键盘输入的键盘输入数据被盗取,可能与PS2键盘同时访问8042控制器,向控制器发送模拟键盘输入数据。

现有技术中,键盘输入方法存在以下弊端:如果PS2键盘将PS2键盘输入数据发送到8042控制器之后,在系统键盘驱动将控制器中的PS2键盘输入数据取走之前,键盘过滤驱动向8042控制器发送模拟键盘输入数据,模拟键盘输入数据会将PS2键盘输入数据覆盖,导致PS2键盘输入数据失效;当PS2键盘向控制器发送的PS2键盘输入数据包括两个字节时,PS2键盘向控制器发送完第一个字节后,如果键盘过滤驱动向8042控制器发送模拟键盘输入数据,则两个字节的PS2键盘输入数据的第一个字节和第二个字节会被模拟键盘输入数据拆分,键盘过滤驱动将获取的与第一个字节对应的键盘输入信息和与第二个字节对应的键盘输入信息分开传输给上层应用,最终导致上层应用接收的PS2键盘输入数据不正确。鉴于此,业界亟需一种能够提高PS2键盘输入数据正确性的键盘输入方法。



技术实现要素:

本发明为解决上述现有技术中存在的技术问题提供一种提高输入正确性的方法和键盘过滤驱动。

本发明提供一种提高输入正确性的方法,包括以下步骤:

步骤S1:键盘过滤驱动从系统中获取键盘输入数据;

步骤S2:所述键盘过滤驱动从所述键盘输入数据中获取当前键盘输入信息;

当所述当前键盘输入信息不为干扰信息,所述键盘过滤驱动自身保存的矫正标识不是默认标识时,执行步骤S3;

当所述当前键盘输入信息为干扰信息,所述键盘过滤驱动自身保存的矫正标识不是默认标识时,执行步骤S4;

当所述当前键盘输入信息为干扰信息,所述键盘过滤驱动自身保存的矫正标识为默认标识时,执行步骤S5;

在所述键盘过滤驱动初始化时所述键盘过滤驱动将所述矫正标识设置为默认标识;

步骤S3:所述键盘过滤驱动矫正当前键盘输入信息中的第一按键标识,将矫正标识更新为默认标识,将矫正后的当前键盘输入信息保存到键盘输入数据中对应位置;

步骤S4:所述键盘过滤驱动将当前键盘输入信息从键盘输入数据中移除;

步骤S5:所述键盘过滤驱动根据所述当前键盘输入信息中的第一按键标识更新自身保存的矫正标识,并将当前键盘输入信息从键盘输入数据中移除;

所述键盘过滤驱动处理完所述键盘输入数据中所有的键盘输入信息之后,将键盘输入数据返回所述系统。

本发明提供的一种键盘过滤驱动,包括:

第一获取模块,用于从系统中获取键盘输入数据;

第二获取模块,用于从所述键盘输入数据中获取当前键盘输入信息;

保存模块,用于保存矫正标识;

矫正模块,用于当所述第二获取模块获取的所述当前键盘输入信息不为干扰信息,所述保存模块保存的矫正标识不是默认标识时,矫正当前键盘输入信息中的第一按键标识;

第一更新模块,用于当所述矫正模块矫正当前键盘输入信息中的第一按键标识之后,将所述保存模块保存的矫正标识更新为默认标识;

存储模块,用于将所述矫正模块矫正后的当前键盘输入信息保存到键盘输入数据中对应位置;

第一移除模块,用于当所述第二获取模块获取的所述当前键盘输入信息为干扰信息,所述保存模块保存的矫正标识不是默认标识时,将当前键盘输入信息从键盘输入数据中移除;

第二更新模块,用于当所述第二获取模块获取的所述当前键盘输入信息为干扰信息,所述保存模块保存的矫正标识为默认标识时,根据所述当前键盘输入信息中的第一按键标识更新所述保存模块保存的矫正标识;

第二移除模块,用于当所述第二更新模块根据所述当前键盘输入信息中的第一按键标识更新所述保存模块保存的矫正标识之后,将当前键盘输入信息从键盘输入数据中移除;

设置模块,用于在所述键盘过滤驱动初始化时,将所述保存模块保存的矫正标识设置为默认标识;

返回模块,用于当所述键盘过滤驱动处理完所述第一获取模块获取的所述键盘输入数据中所有的键盘输入信息之后,将键盘输入数据返回所述系统。

本发明与现有技术相比的有益效果是:键盘过滤驱动从系统中获取键盘输入数据,从键盘输入数据中获取当前键盘输入信息之后,键盘过滤驱动根据获取的当前键盘输入信息和自身保存的矫正标识对当前键盘输入信息进处理,从而提高键盘输入的正确性。

附图说明

图1所示为本发明实施例1中一种提高键盘输入正确性的方法流程图;

图2所示为本发明实施例2中一种提高键盘输入正确性的方法流程图;

图3所示为本发明实施例3中一种提高键盘输入正确性的方法流程图;

图4所示为本发明实施例4中一种键盘过滤驱动的模块组成框图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

实施例1

本实施例提供一种提高键盘输入正确性的方法,如图1所示,包括:

步骤S1:键盘过滤驱动从系统中获取键盘输入数据;

步骤S2:键盘过滤驱动从键盘输入数据中获取当前键盘输入信息;

当键盘过滤驱动自身保存的矫正标识不是默认标识,当前键盘输入信息不为干扰信息时,执行步骤S3;

当键盘过滤驱动自身保存的矫正标识不是默认标识,当前键盘输入信息为干扰信息时,执行步骤S4;

当键盘过滤驱动自身保存的矫正标识为默认标识,当前键盘输入信息为干扰信息时,执行步骤S5;

在键盘过滤驱动初始化时键盘过滤驱动将矫正标识设置为默认标识;

步骤S3:键盘过滤驱动矫正当前键盘输入信息中的第一按键标识,将矫正标识更新为默认标识,将矫正后的当前键盘输入信息保存到键盘输入数据中对应位置;

步骤S4:键盘过滤驱动将当前键盘输入信息从键盘输入数据中移除;

步骤S5:键盘过滤驱动根据当前键盘输入信息中的第一按键标识更新自身保存的矫正标识,并将当前键盘输入信息从键盘输入数据中移除;

键盘过滤驱动处理完键盘输入数据中所有的键盘输入信息之后,将键盘输入数据返回系统。

本实施例中,上述方法中,还包括:

步骤N1:键盘过滤驱动向控制器发送禁止键盘输入指令;

步骤N2:键盘过滤驱动向控制器发送模拟键盘输入数据,通过控制器将模拟键盘输入数据传输给系统,通过系统将模拟键盘输入数据进行处理得到键盘输入信息,并将键盘输入信息保存到键盘输入数据中;

步骤N2中,键盘过滤驱动向控制器发送模拟键盘输入数据之后,还包括:键盘过滤驱动向控制器发送允许键盘输入指令。

可选地,在上述步骤N1之前还包括:键盘过滤驱动等待控制器空闲。

可选地,上述步骤N2中键盘过滤驱动向控制器发送模拟键盘输入数据之后,还包括:键盘过滤驱动生成并保存信息记录;

键盘过滤驱动获取的当前键盘输入信息为干扰信息时,具有与当前键盘输入信息对应的信息记录。

可选地,在本实施例中,上述步骤S1中,还包括:键盘过滤驱动计算键盘输入数据中键盘输入信息的个数;

相应地,上述步骤S2之前,还包括:

步骤m1:键盘过滤驱动判断循环次数是否小于键盘输入信息的个数,是则执行步骤S2,否则将键盘输入数据返回系统;

键盘过滤驱动每次处理完从键盘输入数据中获取的当前键盘输入信息之后,还包括:

步骤m2:键盘过滤驱动将循环次数加一,返回步骤m1;

在键盘过滤驱动初始化时,键盘过滤驱动将循环次数设置为初始值。

具体地,循环次数的初始值为0。

上述键盘过滤驱动每次处理完从键盘输入数据中获取的当前键盘输入信息之后,即为上述步骤S3-步骤S5之后,还包括步骤m2。

可选地,在本实施例的上述方法中,矫正标识为键盘过滤驱动自身保存的第二按键标识;相应地,默认标识为默认按键标识;

键盘过滤驱动矫正当前键盘输入信息中的第一按键标识,将矫正标识更新为默认标识,具体为:键盘过滤驱动根据自身保存的第二按键标识矫正当前键盘输入信息中的第一按键标识,并将第二按键标识更新为默认按键标识。

具体地,上述键盘过滤驱动根据自身保存的第二按键标识矫正当前键盘输入信息中的第一按键标识,具体为:键盘过滤驱动将第二按键标识的值与第一按键标识的值相加,使用运算结果更新第一按键标识;

相应地,上述方法中,键盘过滤驱动根据当前键盘输入信息中的第一按键标识更新自身保存的矫正标识,具体为:键盘过滤驱动将当前键盘输入信息中第一按键标识的值减去对应的按键状态值,使用运算结果更新第二按键标识。

具体地,上述键盘过滤驱动根据自身保存的第二按键标识矫正当前键盘输入信息中的第一按键标识,具体为:键盘过滤驱动将第二按键标识的值与第一按键标识的值进行位或运算,使用运算结果更新第一按键标识;

相应地,上述方法中,键盘过滤驱动根据当前键盘输入信息中的第一按键标识更新自身保存的矫正标识,具体为:键盘过滤驱动将与当前键盘输入信息对应的按键状态值取反,将取反结果与当前键盘输入信息中第一按键标识的值进行位与运算,使用运算结果更新第二按键标识。

具体地,上述键盘过滤驱动根据自身保存的第二按键标识矫正当前键盘输入信息中的第一按键标识,具体为:当第一按键标识的值为键盘过滤驱动自身保存的第一预设值或第二预设值时,键盘过滤驱动使用自身保存的第二按键标识更新当前键盘输入信息中的第一按键标识;

相应地,上述方法中,键盘过滤驱动根据当前键盘输入信息中的第一按键标识更新自身保存的矫正标识,具体为:当第一按键标识不为键盘过滤驱动自身保存的第一预设值或第二预设值时,或者当第一按键标识的值与对应的信息记录中的第三按键标识的值不相等时,或者当第一按键标识的值与当前键盘输入信息对应的按键状态值不相等时,键盘过滤驱动使用第一按键标识更新自身保存的第二按键标识。

例如,第一预设值为0,第二预设值为1。

或者,上述键盘过滤驱动根据自身保存的第二按键标识矫正当前键盘输入信息中的第一按键标识,具体为:当第一按键标识的值与当前键盘输入信息对应的按键状态值相等时,键盘过滤驱动使用自身保存的第二按键标识更新当前键盘输入信息中的第一按键标识;

相应地,上述方法中,键盘过滤驱动根据当前键盘输入信息中的第一按键标识更新自身保存的矫正标识,具体为:当第一按键标识的值与当前键盘输入信息对应的按键状态值不相等时,或者当第一按键标识的值与对应的信息记录中的第三按键标识的值不相等时,或者当所述第一按键标识的值不为所述键盘过滤驱动自身保存的第一预设值或第二预设值时,键盘过滤驱动使用第一按键标识更新自身保存的第二按键标识。

可选地,在本实施例的上述方法中,上述键盘过滤驱动矫正当前键盘输入信息中的第一按键标识,将矫正标识更新为默认标识,具体为:当第一按键标识的值为键盘过滤驱动自身保存的第一预设值或第二预设值时,或者当第一按键标识的值与当前键盘输入信息对应的按键状态值相等时,键盘过滤驱动根据自身保存的第三预设值矫正当前键盘输入信息中的第一按键标识,并将矫正标识更新为默认标识;

相应地,上述方法中,键盘过滤驱动根据当前键盘输入信息中的第一按键标识更新自身保存的矫正标识,具体为:当第一按键标识的值与对应的信息记录中的第三按键标识的值不相等,或者当第一按键标识的值与当前键盘输入信息对应的按键状态值不相等时,或者当第一按键标识的值不为键盘过滤驱动自身保存的第一预设值或第二预设值时,键盘过滤驱动将自身保存的矫正标识更新为预设的非默认标识。

具体地,上述键盘过滤驱动根据自身保存的第三预设值矫正当前键盘输入信息中的第一按键标识,具体为:键盘过滤驱动将第一按键标识的值与自身保存的第三预设值进行位或运算,使用运算结果更新第一按键标识。

具体地,上述键盘过滤驱动根据自身保存的第三预设值矫正当前键盘输入信息中的第一按键标识,具体为:键盘过滤驱动将第一按键标识的值与自身保存的第三预设值进行加运算,使用运算结果更新第一按键标识。

可选地,本实施例上述方法中,步骤S3-步骤S4,具体为:

步骤a1:键盘过滤驱动判断自身保存的矫正标识是否为默认标识;

当键盘过滤驱动判断自身保存的矫正标识不为默认标识时,执行步骤a2;

步骤a2:键盘过滤驱动矫正当前键盘输入信息中的第一按键标识,将矫正标识更新为默认标识;

步骤a3:键盘过滤驱动判断矫正后的当前键盘输入信息是否为干扰信息,是则执行步骤a4,否则执行a5;

步骤a4:键盘过滤驱动根据矫正后的当前键盘输入信息中的第一按键标识更新自身保存的矫正标识,并将矫正后的当前键盘输入信息从键盘输入数据中移除;

步骤a5:键盘过滤驱动将矫正后的当前键盘输入信息保存到键盘输入数据中对应位置。

可选地,上述方法中,矫正标识为键盘过滤驱动自身保存的第二按键标识,默认标识为默认按键标识;

上述步骤a2中,键盘过滤驱动矫正当前键盘输入信息中的第一按键标识,将矫正标识更新为默认标识,具体为:键盘过滤驱动根据自身保存的第二按键标识矫正当前键盘输入信息中的第一按键标识,并将第二按键标识更新为默认按键标识。

具体地,上述键盘过滤驱动根据自身保存的第二按键标识矫正当前键盘输入信息中的第一按键标识,具体为:键盘过滤驱动将第二按键标识的值与第一按键标识的值相加,使用运算结果更新第一按键标识;

相应地,上述步骤a4中,键盘过滤驱动根据矫正后的当前键盘输入信息中的第一按键标识更新自身保存的矫正标识,具体为:键盘过滤驱动将矫正后的当前键盘输入信息中第一按键标识的值减去对应的按键状态值,使用运算结果更新第二按键标识;

上述步骤S5中,键盘过滤驱动根据当前键盘输入信息中的第一按键标识更新自身保存的矫正标识,具体为:键盘过滤驱动将当前键盘输入信息中第一按键标识的值减去对应的按键状态值,使用运算结果更新自身保存的第二按键标识。

具体地,上述键盘过滤驱动根据自身保存的第二按键标识矫正当前键盘输入信息中的第一按键标识,具体为:键盘过滤驱动将第二按键标识的值与第一按键标识的值进行位或运算,使用运算结果更新第一按键标识;

相应地,上述步骤a4中,键盘过滤驱动根据矫正后的当前键盘输入信息中的第一按键标识更新自身保存的矫正标识,具体为:键盘过滤驱动将矫正后的当前键盘输入信息对应的按键状态值取反,将取反结果与矫正后的当前键盘输入信息中第一按键标识的值进行位与运算,使用运算结果更新自身保存的第二按键标识;

上述步骤S5中,键盘过滤驱动根据当前键盘输入信息中的第一按键标识更新自身保存的矫正标识,具体为:键盘过滤驱动将当前键盘输入信息对应的按键状态值取反,将取反结果与当前键盘输入信息中第一按键标识的值进行位与运算,使用运算结果更新自身保存的第二按键标识。

具体地,上述键盘过滤驱动根据自身保存的第二按键标识矫正当前键盘输入信息中的第一按键标识,具体为:当第一按键标识的值为键盘过滤驱动自身保存的第一预设值或第二预设值,或者当第一按键标识的值与当前键盘输入信息对应的按键状态值相等时,键盘过滤驱动使用自身保存的第二按键标识更新当前键盘输入信息中的第一按键标识;

相应地,上述步骤a4中,键盘过滤驱动根据矫正后的当前键盘输入信息中的第一按键标识更新自身保存的矫正标识,具体为:键盘过滤驱动使用第一按键标识更新自身保存的第二按键标识;

上述步骤S5中,键盘过滤驱动根据当前键盘输入信息中的第一按键标识更新自身保存的矫正标识,具体为:当第一按键标识不为键盘过滤驱动自身保存的第一预设值或第二预设值时,或者当第一按键标识的值与当前键盘输入信息对应的按键状态值不相等时,或者当第一按键标识的值与对应的信息记录中的第三按键标识的值不相等时,键盘过滤驱动使用第一按键标识更新自身保存的第二按键标识。

可选地,上述步骤a2中,键盘过滤驱动矫正当前键盘输入信息中的第一按键标识,将矫正标识更新为默认标识,具体为:当第一按键标识的值为键盘过滤驱动自身保存的第一预设值或第二预设值时,或者当第一按键标识的值与当前键盘输入信息对应的按键状态值相等时,键盘过滤驱动根据自身保存的第三预设值矫正当前键盘输入信息中的第一按键标识,并将矫正标识更新为默认标识;

相应地,上述步骤a4中,键盘过滤驱动根据矫正后的当前键盘输入信息中的第一按键标识更新自身保存的矫正标识,具体为:键盘过滤驱动将自身保存的矫正标识更新为预设的非默认标识;

上述步骤S5中,键盘过滤驱动根据当前键盘输入信息中的第一按键标识更新自身保存的矫正标识,具体为:当第一按键标识的值与对应的信息记录中的第三按键标识的值不相等时,或者当第一按键标识的值与当前键盘输入信息对应的按键状态值不相等时,或者当第一按键标识不为键盘过滤驱动自身保存的第一预设值或第二预设值时,键盘过滤驱动将自身保存的矫正标识更新为预设的非默认标识。

具体地,上述键盘过滤驱动根据自身保存的第三预设值矫正当前键盘输入信息中的第一按键标识,具体为:键盘过滤驱动将第一按键标识的值与自身保存的第三预设值进行位或运算,使用运算结果更新第一按键标识。

具体地,上述键盘过滤驱动根据自身保存的第三预设值矫正当前键盘输入信息中的第一按键标识,具体为:键盘过滤驱动将第一按键标识的值与自身保存的第三预设值进行加运算,使用运算结果更新第一按键标识。

在本实施例中,上述步骤S2之后,还包括:

当键盘过滤驱动自身保存的矫正标识为默认标识,当前键盘输入信息不为干扰信息时,执行步骤S6;

步骤S6:键盘过滤驱动将当前键盘输入信息保存到键盘输入数据中对应位置。

本发明与现有技术相比的有益效果是:键盘过滤驱动从系统中获取键盘输入数据,从键盘输入数据中获取当前键盘输入信息之后,键盘过滤驱动根据获取的当前键盘输入信息和自身保存的矫正标识对当前键盘输入信息进处理,提高了键盘输入的正确性;键盘过滤驱动向控制器发送模拟键盘输入数据之前,等待控制器空闲,如此可以防止模拟键盘输入数据将控制器中的数据覆盖,保证控制器中在键盘过滤驱动向控制器发送模拟键盘输入数据之前的数据有效。

实施例2

本实施例提供一种提高键盘输入正确性的方法,如图2所示,包括以下步骤:

步骤S21:键盘过滤驱动从系统中获取键盘输入数据,从键盘输入数据中获取当前键盘输入信息;

本实施例中,当PS2键盘向控制器发送PS2键盘输入数据之后,系统从控制器中取出PS2键盘输入数据,并对取出的PS2键盘输入数据进行处理生成键盘输入信息,并将键盘输入信息保存到键盘输入数据中。当键盘过滤驱动向控制器发送模拟键盘输入数据之后,系统从控制器中取出模拟键盘输入数据,并对取出的模拟键盘输入数据进行处理生成键盘输入信息,并将键盘输入信息保存到键盘输入数据中。

具体地,键盘过滤驱动从键盘输入数据中获取的当前键盘输入信息具体为KEYBOARD_NIPUT_DATA结构数据。

例如,KEYBOARD_NIPUT_DATA结构数据如下:

USHORT UnitId;//键盘设备对应的位置数字

USHORT MakeCode;//按键扫描码,即按键值

USHORT Flags;//第一按键标识

其中,PS2键盘对应的Unitld值为0;PS2键盘上包括非扩展按键和扩展按键,当非扩展按键被按下时系统处理后得到的键盘输入信息中Flags=0,非扩展按键弹起时系统处理后得到的键盘输入信息中Flags=1;扩展按键按下时系统处理后得到的键盘输入信息中Flags=2,扩展按键弹起时系统处理后得到的键盘输入信息中Flags=3。

本实施例中,在当前键盘输入信息中的按键标识Flags里面还记录了当前键盘输入信息对应的按键状态值。

具体地,当前键盘输入信息对应的按键状态值为第一按键标识中第一位数字的值。例如,当前键盘输入信息中第一按键标识的值为Flags=0(0的二进制数为00,第一位数字的值为0)或Flags=2(2的二进制数为10,第一位数字的值为0)时,对应的按键状态值为0;当前键盘输入信息中第一按键标识的值为Flags=1(1的二进制数为01,第一位数字的值为1)或Flags=3(3的二进制数为11,第一位数字的值为1)时,对应的按键状态值为1。

例如,当PS2键盘上的字母a被按下时,经过系统处理后得到键盘输入信息,系统将键盘输入信息保存到键盘输入数据中,键盘过滤驱动从系统中获取键盘输入数据,从键盘输入数据中获取的对应的当前键盘输入信息如下:

UnitId=0;

MakeCode=0x1e;

Flags=0;

当PS2键盘上的字母a被弹起时,经过系统处理后得到键盘输入信息,系统将键盘输入信息保存到键盘输入数据中,键盘过滤驱动从系统中获取键盘输入数据,从键盘输入数据中获取的对应的当前键盘输入信息如下:

UnitId=0;

MakeCode=0x1e;

Flags=1;

其中,PS2键盘上字母a的按键扫描码的值为:MakeCode=0x1e。

步骤S22:键盘过滤驱动判断当前键盘输入信息是否为干扰信息,是则执行步骤S25,否则执行步骤S23;

具体地,键盘过滤驱动判断当前键盘输入信息是否为干扰信息,具体为:键盘过滤驱动判断是否具有与当前键盘输入信息对应的信息记录,是则为干扰信息,否则不为干扰信息。

步骤S23:键盘过滤驱动判断自身保存的第二按键标识是否为默认按键标识,是则将当前键盘输入信息保存到键盘输入数据中对应位置;否则执行步骤S24。

例如,默认按键标识的值为0,键盘过滤驱动判断自身保存的第二按键标识是否为默认按键标识,具体为键盘过滤驱动判断自身保存的第二按键标识的值是否为0。

步骤S24:键盘过滤驱动根据自身保存的第二按键标识矫正当前键盘输入信息中的第一按键标识,将自身保存的第二按键标识更新为默认按键标识,将矫正后的当前键盘输入信息保存到键盘输入数据中对应位置。

步骤S25:键盘过滤驱动判断自身保存的第二按键标识是否为默认按键标识,是则执行步骤S26,否则将当前键盘输入信息从键盘输入数据中移除。

例如,默认按键标识的值为0,键盘过滤驱动判断自身保存的第二按键标识是否为默认按键标识,具体为键盘过滤驱动判断自身保存的第二按键标识的值是否为0。

步骤S26:键盘过滤驱动根据当前键盘输入信息中的第一按键标识更新自身保存的第二按键标识,并将当前键盘输入信息从键盘输入数据中移除。

可选地,上述步骤S24中,键盘过滤驱动根据自身保存的第二按键标识矫正当前键盘输入信息中的第一按键标识,具体为:键盘过滤驱动将自身保存的第二按键标识的值与第一按键标识的值相加,使用运算结果更新第一按键标识;

例如,键盘过滤驱动自身保存的第二按键标识的值为2,从键盘输入数据中获取的当前键盘输入信息为:

UnitId=0;

MakeCode=0x1e;

Flags=0;

即第一按键标识的值为0,当前键盘输入信息对应的按键状态值为0,键盘过滤驱动将第二按键标识的值2与第一按键标识的值0相加,使用运算结果2更新当前键盘输入信息中的第一按键标识,更新后第一按键标识的值为2,矫正后的当前键盘输入信息如下:

UnitId=0;

MakeCode=0x1e;

Flags=2;

即矫正后的当前键盘输入信息中第一按键标识的值为2,对应的按键状态值为0;

相应地,步骤S26中,键盘过滤驱动根据当前键盘输入信息中的第一按键标识更新自身保存的第二按键标识,具体为:键盘过滤驱动将第一按键标识的值减去当前键盘输入信息对应的按键状态值,使用运算结果更新自身保存的第二按键标识;

例如,键盘过滤驱动自身保存的第二按键标识为默认按键标识,默认按键标识的值0,键盘过滤驱动获取的当前键盘输入信息为:

UnitId=0;

MakeCode=0x35;

Flags=3;

当前键盘输入信息中第一按键标识的值为3,当前键盘输入信息对应的按键状态值为1,键盘过滤驱动将第一按键标识的值3减去第对应的按键状态值1,使用运算结果2更新自身保存的第二按键标识,即更新后第二按键标识的值为2。

可选地,上述步骤S24中,键盘过滤驱动根据自身保存的第二按键标识矫正当前键盘输入信息中的第一按键标识,具体为:键盘过滤驱动将第二按键标识的值与第一按键标识的值进行位或运算,使用运算结果更新第一按键标识;

例如,键盘过滤驱动自身保存的第二按键标识的值为2,获取的当前键盘输入信息为:

UnitId=0;

MakeCode=0x1e;

Flags=0;

即第一按键标识的值为0,当前键盘输入信息对应的按键状态值为0;键盘过滤驱动将第二按键标识的值2与第一按键标识的值0进行位或运算(2的二进制数为00000010,0的二进制数为00000000,00000010与00000000进行位或运算后得到00000010),使用运算结果2更新第一按键标识,矫正后的当前键盘输入信息如下:

UnitId=0;

MakeCode=0x1e;

Flags=2;

即矫正后的当前键盘输入信息中第一按键标识的值为2(对应的二进制数为00000010);

相应地,上述步骤S26中,键盘过滤驱动根据当前键盘输入信息中的第一按键标识更新自身保存的第二按键标识,具体为:键盘过滤驱动将当前键盘输入信息对应的按键状态值取反,将取反结果与当前键盘输入信息中第一按键标识的值进行位与运算,使用运算结果更新第二按键标识。

例如,键盘过滤驱动自身保存的第二按键标识的值为默认按键标识,默认按键标识的值为0,键盘过滤驱动获取的当前键盘输入信息如下:

UnitId=0;

MakeCode=0x1e;

Flags=2;

当前键盘输入信息中的第一按键标识的值为2,当前键盘输入信息对应的按键状态值为0,键盘过滤驱动将当前键盘输入信息对应的按键状态值00000000取反,将取反结果11111111与当前键盘输入信息中第一按键标识的值00000010进行位与运算,使用运算结果00000010更新第二按键标识,更新后第二按键标识的值为2(2的二进制为00000010)。

可选地,上述步骤S23之后、步骤S24之前,还包括:

步骤h1:键盘过滤驱动判断当前键盘输入信息中的第一按键标识是否为自身保存的第一预设值或第二预设值,是则执行步骤S24,否则将当前键盘输入信息保存到键盘输入数据中对应位置;

相应地,上述步骤S24中键盘过滤驱动根据自身保存的第二按键标识矫正当前键盘输入信息中的第一按键标识,具体为:当第一按键标识为第一预设值或第二预设值时,键盘过滤驱动使用自身保存的第二按键标识更新当前键盘输入信息中的第一按键标识;

例如,第一预设值为0,第二预设值为1,键盘过滤驱动自身保存的第二按键标识的值为2,键盘过滤驱动从系统中获取的当前键盘输入信息为:

UnitId=0;

MakeCode=0x1e;

Flags=0;

即当前键盘输入信息中的第一按键标识的值为0,键盘过滤驱动使用自身保存的第二按键标识更新第一按键标识,更新后第一按键标识的值为2,矫正后的当前键盘输入信息如下:

UnitId=0;

MakeCode=0x1e;

Flags=2;

相应地,上述步骤S25之后、步骤S26之前还包括:

步骤h2:键盘过滤驱动判断当前键盘输入信息中的第一按键标识的值是否为自身保存的第一预设值或第二预设值,是则将当前键盘输入信息从键盘输入数据中移除,否则执行步骤S26。

上述步骤S26中,键盘过滤驱动根据当前键盘输入信息中的第一按键标识更新自身保存的第二按键标识,具体为:当第一按键标识的值不为第一预设值或第二预设值时,键盘过滤驱动使用第一按键标识更新自身保存的第二按键标识;

例如,第一预设值为0,第二预设值为1,键盘过滤驱动自身保存的第二按键标识的值为0,键盘过滤驱动获取的当前键盘输入信息为:

UnitId=0;

MakeCode=0x1e;

Flags=2;

即第一按键标识的值为2,键盘过滤驱动使用第一按键标识的值2更新第二按键标识,更新后第二按键标识的值为2。

可选地,本实施例中,上述步骤h1还可以为:

步骤c1:键盘过滤驱动判断当前键盘输入信息中的第一按键标识是否与当前键盘输入信息对应的按键状态值相等,是则执行步骤S24,否则将当前键盘输入信息保存到键盘输入数据中对应位置。

相应地,上述步骤S24中键盘过滤驱动根据自身保存的第二按键标识矫正当前键盘输入信息中的第一按键标识,具体为:当第一按键标识与当前键盘输入信息对应的按键状态值相等时,键盘过滤驱动使用自身保存的第二按键标识更新当前键盘输入信息中的第一按键标识。

可选地,上述步骤h2还可以为:

步骤c2:键盘过滤驱动判断当前键盘输入信息中的第一按键标识的值是否与当前键盘输入信息对应的按键状态值相等,是则将当前键盘输入信息从键盘输入数据中移除,否则执行步骤S26。

具体地,键盘过滤驱动判断当前键盘输入信息中的第一按键标识的值是否与当前键盘输入信息对应的按键状态值相等,具体为:键盘过滤驱动判断第一按键标识的值是否与第一按键标识第一位数字的值相等。

相应地,上述步骤S26中,键盘过滤驱动根据当前键盘输入信息中的第一按键标识更新自身保存的第二按键标识,具体为:当前键盘输入信息中的第一按键标识的值与当前键盘输入信息对应的按键状态值不相等时,键盘过滤驱动使用第一按键标识更新自身保存的第二按键标识。

可选地,上述步骤h2还可以为:

步骤c3:键盘过滤驱动判断当前键盘输入信息中的第一按键标识的值是否与对应的信息记录中的第三按键标识的值相等,是则将当前键盘输入信息从键盘输入数据中移除,否则执行步骤S26。

相应地,上述步骤S26中,键盘过滤驱动根据当前键盘输入信息中的第一按键标识更新自身保存的第二按键标识,具体为:当前键盘输入信息中的第一按键标识的值与对应的信息记录中的第三按键标识的值不相等时,键盘过滤驱动使用第一按键标识更新自身保存的第二按键标识。

可选地,本实施例的上述方法中,还包括:

步骤N1:键盘过滤驱动向控制器发送禁止键盘输入指令;

本实施例中,当键盘过滤驱动向控制器发送禁止键盘输入指令之后,PS2键盘不能够向控制器中发送PS2键盘输入数据。

具体地,键盘过滤驱动通过端口函数WRITE_PORT_UCHAR向控制器发送禁止键盘输入指令。

例如,端口函数为:WRITE_PORT_UCHAR(0x64,0xAD);其中,WRITE_PORT_UCHAR为端口函数名称,参数0x64为控制器命令端口地址,参数0xAD为禁止键盘输入指令。

步骤N2:键盘过滤驱动向控制器发送模拟键盘输入数据,通过控制器将模拟键盘输入数据传输给系统,通过系统将模拟键盘输入数据进行处理得到键盘输入信息,并将键盘输入信息保存到键盘输入数据中;

步骤N2中,键盘过滤驱动向控制器发送模拟键盘输入数据之后,还包括:键盘过滤驱动向控制器发送允许键盘输入指令。

具体地,键盘过滤驱动向控制器发送允许键盘输入指令,具体为:键盘过滤驱动通过端口函数WRITE_PORT_UCHAR向控制器发送允许键盘输入指令;

例如,端口函数如下:WRITE_PORT_UCHAR(0x64,0xae);其中,WRITE_PORT_UCHAR为端口函数名称,参数0x64为控制器命令端口地址,参数0xae为允许键盘输入指令。

可选地,上述步骤N1之前还包括:键盘过滤驱动等待控制器空闲。

具体地:键盘过滤驱动通过运行端口函数WaitForKeyboardWriteCTL等待控制器命令端口0x64空闲。如果控制器命令端口0x64空闲,则键盘过滤驱动停止运行端口函数WaitForKeyboardWriteCTL,执行步骤N1;否则继续运行端口函数WaitForKeyboardWriteCTL。

具体地,键盘过滤驱动通过运行端口函数WaitForKeyboardWriteCTL等待控制器命令端口0x64空闲,具体包括:

步骤L1:键盘过滤驱动通过运行端口函数读控制器端口的状态;

例如,键盘过滤驱动通过运行端口函数WaitForKeyboardWriteCTL读取控制器端口的状态为READ_PORT_UCHAR(0x64),0x64为控制器端口地址;

步骤L2:键盘过滤驱动根据控制器端口的状态判断控制器端口是否空闲,如果是则执行步骤N1;否则返回步骤L1;

其中,键盘过滤驱动根据控制器端口的状态判断控制器端口是否空闲,具体为:键盘过滤驱动根据控制器端口的状态判断控制器中最低两位的数据是否被取走,如果是则空闲,否则不空闲;

例如,键盘过滤驱动判断READ_PORT_UCHAR(0x64)&0x3是否为0,如果是,则控制器中最低两位已经被取走,控制器空闲;否则控制器中最低两位没有被取走,控制器没有空闲。

本实施例中,键盘过滤驱动向控制器发送模拟键盘输入数据之前等待控制器空闲,是为了避免覆盖控制器中的PS2键盘输入数据。

进一步地,键盘过滤驱动向控制器发送模拟键盘输入数据之后,还包括:键盘过滤驱动开启干扰信息事件;

相应地,上述步骤S22之前,还包括:键盘过滤驱动判断是否开启干扰信息事件,是则执行步骤S22,否则执行步骤S23;

步骤S25中,当键盘过滤驱动判断自身保存的按键标识不是默认按键标识时,还包括:键盘过滤驱动关闭干扰信息事件;

步骤S26中还包括:关闭干扰信息事件。

可选地,上述步骤N2中键盘过滤驱动向控制器发送模拟键盘输入数据之后,还包括:键盘过滤驱动生成并保存信息记录;

具体地,信息记录中包括按键扫描码和第三按键标识。

上述步骤S21中,键盘过滤驱动获取的当前键盘输入信息为干扰信息时,具有与当前键盘输入信息对应的信息记录。

相应地,上述步骤S22中键盘过滤驱动判断键盘输入信息是否为干扰信息,具体为:键盘过滤驱动判断是否保存有与当前键盘输入信息对应的信息记录,是则为干扰信息,否则不是干扰信息;

具体地,键盘过滤驱动判断是否保存有与当前键盘输入信息对应的信息记录,具体为:键盘过滤驱动判断当前键盘输入信息中的按键扫描码的值是否与对应的信息记录中的按键扫描码的值相等,是则具有与当前键盘输入信息对应的信息记录,否则没有与当前键盘输入信息对应的信息记录。

可选地,上述步骤S26中,还包括:键盘过滤驱动清除与当前键盘输入信息对应的信息记录;

上述步骤S25中,当键盘过滤驱动判断自身保存的第二按键标识不是默认按键标识时,还包括:键盘过滤驱动清除与当前键盘输入信息对应的信息记录。

可选地,在上述步骤S21中,键盘过滤驱动从系统中获取键盘输入数据之后、从键盘输入数据中获取当前键盘输入信息之前,还包括:键盘过滤驱动计算键盘输入数据中键盘输入信息的个数;

相应地,键盘过滤驱动从键盘输入数据中获取当前键盘输入信息之前,还包括:

步骤m1:键盘过滤驱动判断循环次数是否小于键盘输入信息的个数,是则从键盘输入数据中获取当前键盘输入信息,否则将键盘输入数据返回系统;

键盘过滤驱动每次处理完从键盘输入数据中获取的当前键盘输入信息之后,还包括:

步骤m2:键盘过滤驱动将循环次数加一,返回步骤m1;

在键盘过滤驱动初始化时,键盘过滤驱动将循环次数设置为初始值。例如,初始值为0。

本实施例中,上述键盘过滤驱动每次处理完从键盘输入数据中获取的当前键盘输入信息之后执行步骤m2,具体为:在步骤S26之后执行步骤m2,步骤S24之后执行步骤m2、键盘过滤驱动将当前键盘输入信息从键盘输入数据中移除之后执行步骤m2,键盘过滤驱动将当前键盘输入信息保存到键盘输入数据中对应位置之后执行步骤m2。

具体地,上述键盘过滤驱动计算键盘输入数据中键盘输入信息的个数,具体为:键盘过滤驱动使用键盘输入数据的数据长度除以键盘输入数据中单个键盘输入信息的数据长度得到的正整数。

本实施例中,键盘过滤驱动从系统中获取的键盘输入数据,具体是上层应用发送给系统的。相应地,键盘过滤驱动将键盘输入数据返回系统之后,系统将键盘输入信息中的数据返回对应的上层应用。

可选地,本实施例中,上述键盘过滤驱动判断当前键盘输入信息是否为干扰信息与键盘过滤驱动判断自身保存的第二按键标识是否为默认按键标识的顺序可以调换,即步骤S21-步骤S26顺序可以为步骤M1-步骤M6,具体步骤M1-步骤M6如下:

步骤M1:键盘过滤驱动从系统中获取键盘输入数据,从键盘输入数据中获取当前键盘输入信息;

步骤M2:键盘过滤驱动判断自身保存的第二按键标识是否为默认按键标识,是则执行步骤M3;否则执行步骤M5;

步骤M3:键盘过滤驱动判断当前键盘输入信息是否为干扰信息,是则执行步骤M4,否则将当前键盘输入信息保存到键盘输入数据中对应位置;

具体地,步骤M3与上述步骤S22相同,在此不再赘述。

步骤M4:键盘过滤驱动根据当前键盘输入信息中的第一按键标识更新自身保存的第二按键标识,并将当前键盘输入信息从键盘输入数据中移除。

具体地,步骤M4与上述步骤S26相同,在此不再赘述。

步骤M5:键盘过滤驱动判断当前键盘输入信息是否为干扰信息,是则将当前键盘输入信息从键盘输入数据中移除,否则执行步骤M6;

具体地,步骤M5与上述步骤S22相同,在此不再赘述。

步骤M6:键盘过滤驱动根据自身保存的第二按键标识矫正当前键盘输入信息中的第一按键标识,将自身保存的第二按键标识更新为默认按键标识,将矫正后的当前键盘输入信息保存到键盘输入数据中对应位置;

具体地,步骤M6与上述步骤S24相同,在此不再赘述。

可选地,本实施例中,上述步骤S22-步骤S26还可以为步骤a1-步骤a7:

步骤a1:键盘过滤驱动判断自身保存的第二按键标识是否为默认按键标识,是则执行步骤a6,否则执行步骤a2;

具体地,步骤a1中键盘过滤驱动判断自身保存的第二按键标识是否为默认按键标识与上述步骤S25和步骤S23相同,在此不再赘述。

步骤a2:键盘过滤驱动根据自身保存的第二按键标识矫正当前键盘输入信息中的第一按键标识,将第二按键标识更新为默认按键标识;

步骤a3:键盘过滤驱动判断矫正后的当前键盘输入信息是否为干扰信息,是则执行步骤a4,否则执行a5;

步骤a3中,键盘过滤驱动判断矫正后的当前键盘输入信息是否为干扰信息,与步骤S22中键盘过滤驱动判断当前键盘输入信息是否为干扰信息相同,在此不再赘述。

步骤a4:键盘过滤驱动根据矫正后的当前键盘输入信息中的第一按键标识更新自身保存的第二按键标识,并将矫正后的当前键盘输入信息从键盘输入数据中移除;

步骤a5:键盘过滤驱动将矫正后的当前键盘输入信息保存到键盘输入数据中对应位置;

步骤a6:键盘过滤驱动判断当前键盘输入信息是否为干扰信息,是则执行步骤a7,否则执行a8;

步骤a6中键盘过滤驱动判断当前键盘输入信息是否为干扰信息,与步骤S22中键盘过滤驱动判断当前键盘输入信息是否为干扰信息相同,在此不再赘述。

步骤a7:键盘过滤驱动根据当前键盘输入信息中的第一按键标识更新自身保存的第二按键标识,并将当前键盘输入信息从键盘输入数据中移除;

步骤a8:键盘过滤驱动将当前键盘输入信息保存到键盘输入数据中对应位置。

可选地,上述步骤a2中,键盘过滤驱动根据自身保存的第二按键标识矫正当前键盘输入信息中的第一按键标识,具体为:键盘过滤驱动将第二按键标识的值与第一按键标识的值相加,使用运算结果更新第一按键标识;

例如,键盘过滤驱动自身保存的第二按键标识的值为2,从系统中获取的键盘输入信息为:

UnitId=0;

MakeCode=0x1e;

Flags=0;

即第一按键标识的值为0,对应的按键状态值为0,键盘过滤驱动将第二按键标识的值2与第一按键标识的值0相加,使用运算结果更新当前键盘输入信息中的第一按键标识,更新后第一按键标识的值为2,矫正后的键盘输入信息如下:

UnitId=0;

MakeCode=0x1e;

Flags=2;

即矫正后的当前键盘输入信息中第一按键标识的值为2,对应的按键状态值为0。

相应地,上述步骤a4中,键盘过滤驱动根据矫正后的当前键盘输入信息中的第一按键标识更新自身保存的第二按键标识,具体为:键盘过滤驱动将矫正后的当前键盘输入信息中第一按键标识的值减去对应的按键状态值,使用运算结果更新自身保存的第二按键标识。

例如,键盘过滤驱动将矫正后的当前键盘输入信息中第一按键标识的值2减去对应的按键状态值0,使用运算结果2更新自身保存的第二按键标识,更新后,键盘过滤驱动自身保存的第二按键标识的值为2。

上述步骤a7中,键盘过滤驱动根据当前键盘输入信息中的第一按键标识更新自身保存的第二按键标识,具体为:键盘过滤驱动将当前键盘输入信息中第一按键标识的值减去对应的按键状态值,使用运算结果更新第二按键标识。

例如,键盘过滤驱动自身保存的第二按键标识为默认按键标识,默认按键标识的值0,键盘过滤驱动获取的当前键盘输入信息为:

UnitId=0;

MakeCode=0x35;

Flags=3;

当前键盘输入信息中第一按键标识的值为3,对应的按键状态值为1,键盘过滤驱动将第一按键标识的值3减去第对应的按键状态值1,使用运算结果2更新自身保存的第二按键标识,即更新后第二按键标识的值为2。

可选地,步骤a2中,键盘过滤驱动根据自身保存的第二按键标识矫正当前键盘输入信息中的第一按键标识,具体为:键盘过滤驱动将第二按键标识的值与第一按键标识的值进行位或运算,使用运算结果更新第一按键标识;

例如,键盘过滤驱动自身保存的第二按键标识的值为2,从系统中获取的键盘输入信息为:

UnitId=0;

MakeCode=0x1e;

Flags=0;

即第一按键标识的值为0,键盘输入信息对应的按键状态值为0;键盘过滤驱动将第二按键标识的值2与第一按键标识的值0进行位或运算(2的二进制数为00000011,0的二进制数为00000000,00000010与00000000进行位或运算后得到00000010),使用运算结果2更新第一按键标识,矫正后的键盘输入信息如下:

UnitId=0;

MakeCode=0x1e;

Flags=2;

即矫正后的键盘输入信息中第一按键标识的值为2(对应的二进制数为00000010);

相应地,步骤a4中,键盘过滤驱动根据矫正后的当前键盘输入信息中的第一按键标识更新自身保存的第二按键标识,具体为:键盘过滤驱动将矫正后的当前键盘输入信息对应的按键状态值取反,将取反结果与矫正后的当前键盘输入信息中第一按键标识的值进行位与运算,使用运算结果更新第二按键标识;

例如,矫正后的当前键盘输入信息中的第一按键标识的值为2,矫正后的当前键盘输入信息对应的按键状态值为0,键盘过滤驱动将矫正后的当前键盘输入信息对应的按键状态值00000000取反,将取反结果11111111与矫正后的当前键盘输入信息中第一按键标识的值00000010进行位与运算,使用运算结果00000010更新第二按键标识,更新后第二按键标识的值为2(2的二进制为00000010)。

步骤a7中,键盘过滤驱动根据当前键盘输入信息中的第一按键标识更新自身保存的第二按键标识,具体为:键盘过滤驱动将当前键盘输入信息对应的按键状态值取反,将取反结果与当前键盘输入信息中第一按键标识的值进行位与运算,使用运算结果更新第二按键标识。

例如,键盘过滤驱动获取的当前键盘输入信息如下:

UnitId=0;

MakeCode=0x1e;

Flags=2;

当前键盘输入信息中的第一按键标识的值为2,则与当前键盘输入信息对应的按键状态值为0,键盘过滤驱动将当前键盘输入信息对应的按键状态值00000000取反,将取反结果11111111与当前键盘输入信息中第一按键标识的值00000010进行位与运算,使用运算结果00000010更新第二按键标识,更新后第二按键标识的值为2(2的二进制为00000010)。

可选地,步骤a2之前,还包括:

步骤W1:键盘过滤驱动判断当前键盘输入信息中第一按键标识的值是否为自身保存的第一预设值或第二预设值,是则执行步骤a2。

步骤a2中,键盘过滤驱动根据自身保存的第二按键标识矫正当前键盘输入信息中的第一按键标识,具体为:当第一按键标识的值为第一预设值或第二预设值时,键盘过滤驱动使用自身保存的第二按键标识更新当前键盘输入信息中的第一按键标识;

例如,第一预设值为0,第二预设值为1,键盘过滤驱动自身保存的第二按键标识的值为2,键盘过滤驱动从系统中获取的当前键盘输入信息为:

UnitId=0;

MakeCode=0x1e;

Flags=0;

即当前键盘输入信息中的第一按键标识的值为0,键盘过滤驱动使用自身保存的第二按键标识更新第一按键标识,更新后第一按键标识的值为2,矫正后的当前键盘输入信息如下:

UnitId=0;

MakeCode=0x1e;

Flags=2;

相应地,步骤a4中,键盘过滤驱动根据矫正后的当前键盘输入信息中的第一按键标识更新自身保存的第二按键标识,具体为:键盘过滤驱动使用矫正后的第一按键标识更新自身保存的第二按键标识;

例如,键盘过滤驱动使用矫正后的第一按键标识的值2更新自身保存的第二按键标识的值,更新后,第二按键标识的值为2。

相应地,步骤a7之前,还包括:

步骤W2:键盘过滤驱动判断当前键盘输入信息中第一按键标识的值是否为自身保存的第一预设值或第二预设值,是则将当前键盘输入信息从键盘输入数据中移除,否则执行步骤a7。

步骤a7中,键盘过滤驱动根据当前键盘输入信息中的第一按键标识更新自身保存的第二按键标识,具体为:当第一按键标识不为第一预设值或第二预设值时,键盘过滤驱动使用第一按键标识更新自身保存的第二按键标识。

例如,第一预设值为0,第二预设值为1,键盘过滤驱动自身保存的第二按键标识的值为0,从系统中获取的键盘输入信息为:

UnitId=0;

MakeCode=0x1e;

Flags=2;

即第一按键标识的值为2,键盘过滤驱动使用第一按键标识的值2更新第二按键标识,更新后第二按键标识的值为2。

可选地,上述步骤W1中,键盘过滤驱动判断当前键盘输入信息中第一按键标识的值不为自身保存的第一预设值或第二预设值时,将当前键盘输入信息保存到键盘输入数据中对应位置。

可选地,上述步骤W1中,键盘过滤驱动判断当前键盘输入信息中第一按键标识的值不为自身保存的第一预设值或第二预设值时,在键盘过滤驱动将当前键盘输入信息保存到键盘输入数据中对应位置之前,还包括:键盘过滤驱动判断当前键盘输入信息是否为干扰信息,是则将当前键盘输入信息从键盘输入数据中移除;否则将当前键盘输入信息保存到键盘输入数据中对应位置。

可选地,上述步骤W1还可以为:

步骤R1:键盘过滤驱动判断当前键盘输入信息中第一按键标识的值是否与当前键盘输入信息对应的按键状态值相等,是则执行步骤a2,否则将键盘输入信息保存到键盘输入数据中对应位置。

相应地,上述步骤a2中,键盘过滤驱动根据自身保存的第二按键标识矫正当前键盘输入信息中的第一按键标识,具体为:当第一按键标识的值与当前键盘输入信息对应的按键状态值相等时,键盘过滤驱动使用自身保存的第二按键标识更新当前键盘输入信息中的第一按键标识。

可选地,上述步骤W2还可以为:

步骤R2:键盘过滤驱动判断当前键盘输入信息中第一按键标识的值是否与当前键盘输入信息对应的按键状态值相等,是则将当前键盘输入信息从键盘输入数据中移除,否则执行步骤a7。

具体地,键盘过滤驱动判断当前键盘输入信息中第一按键标识的值是否与当前键盘输入信息对应的按键状态值相等,具体为:键盘过滤驱动判断当前键盘输入信息中第一按键标识的值是否与当前键盘输入信息中第一按键标识第一位数字的值相等,是则将当前键盘输入信息从键盘输入数据中移除,否则执行步骤a7;

相应地,上述步骤a7中,键盘过滤驱动根据当前键盘输入信息中的第一按键标识更新自身保存的第二按键标识,具体为:当第一按键标识的值与当前键盘输入信息对应的按键状态值不相等时,键盘过滤驱动使用第一按键标识更新自身保存的第二按键标识。

可选地,上述步骤W2还可以为:

步骤R3:键盘过滤驱动判断当前键盘输入信息中第一按键标识的值是否与对应的信息记录中的第三按键标识的值相等,是则将当前键盘输入信息从键盘输入数据中移除,否则执行步骤a7。

相应地,上述步骤a7中,键盘过滤驱动根据当前键盘输入信息中的第一按键标识更新自身保存的第二按键标识,具体为:当第一按键标识的值与对应的信息记录中的第三按键标识的值不相等时,键盘过滤驱动使用第一按键标识更新自身保存的第二按键标识。

在本发明实施例中,系统中包括系统键盘底层驱动、系统键盘类驱动;PS2键盘向控制器发送的PS2键盘输入数据可能为1个字节,也可能是两个字节,键盘过滤驱动向控制器发送的模拟键盘输入数据通常为一个字节。控制器每次只能接收一个字节的数据,当PS2键盘输入数据包括两个字节时,PS2键盘向控制器发送的第一个字节包括额外按键标识,向控制器发送的第二个字节包括按键扫描码。

本实施例中,当PS2键盘上的按键被按下时,PS2键盘向控制器发送相应的PS2键盘输入数据,系统从控制其中获取PS2键盘输入数据以及对PS2键盘输入数据的处理方法如下:

当PS2键盘的非扩展按键被按下时,PS2键盘向控制器发送的PS2键盘输入数据为1个字节,键盘过滤驱动从系统中取出对应的键盘输入信息之前,控制器和系统对PS2键盘输入数据的处理方法包括以下步骤:

步骤A1:PS2键盘向控制器发送PS2键盘输入数据;

步骤A2:系统键盘底层驱动从控制器中取出PS2键盘输入数据,对PS2键盘输入数据进行处理得到键盘输入信息;

例如,当PS2键盘按下字母a时,系统键盘底层驱动对PS2键盘输入数据进行处理得到的键盘输入信息如下:

UnitId=0;

MakeCode=0x1e;

Flags=0;

步骤A3:系统键盘底层驱动通过回调函数将键盘输入信息发送给系统键盘类驱动;

步骤A4:系统键盘类驱动将键盘输入信息复制到IRP中的键盘输入数据中。

系统键盘类驱动中的IRP来自上层应用。

具体地,本发明中,上述键盘过滤驱动从系统中获取键盘输入数据,具体为:键盘过滤驱动从系统键类盘驱动中的IRP中获取键盘输入数据。

当PS2键盘扩展按键被按下时,PS2键盘向控制器发送的PS2键盘输入数据为两个字节,键盘过滤驱动从系统中取出键盘输入数据之前,控制器和系统对PS2键盘输入数据的处理方法包括以下步骤:

步骤B1:PS2键盘向控制器发送PS2键盘输入数据的第一个字节;

步骤B2:系统键盘底层驱动从控制器中取出PS2键盘输入数据第一个字节,并进行保存。

步骤B3:PS2键盘向控制器发送PS2键盘输入数据的第二个字节;

步骤B4:系统键盘底层驱动从控制器中取出数据,并进行处理,生成键盘输入信息。

在步骤B2之后、步骤B3之前,键盘过滤驱动没有向控制器发送模拟键盘输入数据时,则PS2键盘输入数据的第一个字节和第二个字节不会被拆分,步骤B4系统键盘底层驱动从控制器中取出的数据为PS2键盘输入数据的第二个字节,系统键盘底层驱动会对保存PS2键盘输入数据的第一个字节和接收的第二个字节进行处理得到键盘输入信息。

例如,当PS2键盘按下字母小键盘“/”时,系统键盘底层驱动对PS2键盘输入数据的第二个字节和保存的第一个字节进行处理,得到的键盘输入信息如下:

UnitId=0;

MakeCode=0x35;

Flags=2;

在步骤B2之后、步骤B3之前,键盘过滤驱动向控制器发送模拟键盘输入数据时,则PS2键盘输入数据的第一个字节和第二个字节被拆分,步骤B4中系统键盘底层驱动从控制器中取出的数据为模拟键盘输入数据,系统键盘底层驱动会对保存的第一个字节和接收的模拟键盘输入数据进行处理,得到键盘输入信息,键盘过滤驱动向控制器发送模拟键盘输入数据之后,键盘过滤驱动会生成并保存信息记录,信息记录中包括第三按键标识和按键扫描码。

例如,模拟键盘输入数据中按键扫描码的值为0x1e,系统键盘底层驱动对模拟键盘输入数据和保存的第一个字节进行处理,得到的键盘输入信息如下:

UnitId=0;

MakeCode=0x1e;

Flags=2;

键盘过滤驱动向控制器发送模拟键盘输入数据之后,生成并保存信息记录,信息记录中按键扫描码的值为0x1e,第三按键标识的值为0,键盘过滤驱动获取到对应的当前键盘输入信息时,会根据接收的第一按键标识Flags=2更新自身保存的矫正标识(矫正标识具体可以为第二按键标识)。

当系统键盘底层驱动从控制器中取到PS2键盘输入数据的第二个字节时,对第二个字节进行处理,当键盘过滤驱动获取到对应的当前键盘输入信息时,根据自身保存的矫正标识(矫正标识具体可以为第二按键标识)对当前键盘输入信息进行矫正。

例如,系统键盘底层驱动对PS2键盘输入数据的第二个字节进行处理,得到的键盘输入信息如下:

UnitId=0;

MakeCode=0x35;

Flags=0;

键盘过滤驱动获取对应的当前键盘输入信息之后,会根据自身保存的矫正标识对当前键盘输入信息中的第一按键标识Flags=0进行矫正。

步骤B5:系统键盘底层驱动通过回调函数将键盘输入信息发送给系统键盘类驱动;

步骤B6:系统键盘类驱动将键盘输入信息复制到IRP中的键盘输入数据。

本实施例中,系统键盘类驱动的IRP来自上层应用。

具体地,上述键盘过滤驱动从系统中获取键盘输入数据,具体为:键盘过滤驱动从系统键类盘驱动的IRP中获取键盘输入数据。

本发明中,键盘过滤驱动会不定时的向控制器发送模拟键盘输入信息,当键盘过滤驱动向控制器发送模拟键盘输入数据时,在键盘过滤驱动从系统键盘驱动中取出对应的键盘输入信息之前,还包括以下步骤:

步骤D1:键盘过滤驱动等待控制器空闲;

具体地,步骤D1与本实施例中上述键盘过滤驱动等待控制器空闲的方法相同,在此不再赘述。

步骤D2:键盘过滤驱动向控制器发送禁止键盘输入指令。

具体参考上述步骤N1,在此不再赘述。

步骤D3:键盘过滤驱动等待控制器空闲;

与步骤D1相同,在此不再赘述。

步骤D4:当控制器空闲时,键盘过滤驱动向控制器发送写数据指令;

具体地,键盘过滤驱动调用端口函数WRITE_PORT_UCHAR向控制器的命令端口0x64发送写数据指令。

例如,端口函数为:WRITE_PORT_UCHAR(0x64,0xd2)。

其中,WRITE_PORT_UCHAR为端口函数名称,参数0x64为控制器命令端口地址,参数0xd2为写数据指令。

步骤D5:键盘过滤驱动等待控制器的输入缓存器空闲。

具体地,键盘过滤驱动通过运行第一端口函数判断控制器端口是否空闲,是则输入缓存器空闲,否则输入缓存器不空闲:

例如,第一端口函数为READ_PORT_UCHAR(0x64),其中,参数0x64为控制器端口地址;

具体地,键盘过滤驱动通过运行第一端口函数判断控制器端口是否空闲,具体为:键盘过滤驱动通过运行第一端口函数判断控制器中第二位的数据是否被取走,如果取走则空闲,否则不空闲。

例如,键盘过滤驱动判断READ_PORT_UCHAR(0x64)&0x2是否为0,如果是,则控制器中第二位数据已经被取走,控制器空闲;否则控制器中第二位数据没有被取走,控制器没有空闲,继续判断控制器端口是否空闲。

步骤D6:键盘过滤驱动向控制器发送模拟键盘输入数据,开启干扰信息事件,生成并保存信息记录;

步骤D7:系统键盘底层驱动从控制器中取出模拟键盘输入数据,对模拟键盘输入数据进行处理得到键盘输入信息。

当系统键盘底层驱动中没有保存额外按键标识时,对模拟键盘输入数据处理后得到的键盘输入信息中第一按键标识的值为0或1;

例如,得到的键盘输入信息为:

UnitId=0;

MakeCode=0x82;

Flags=1;

当系统键盘底层驱动中保存额外按键标识时,对模拟键盘输入数据和额外按键标识进行处理后得到的键盘输入信息中第一按键标的不为0或1;

例如,得到的键盘输入信息为:

UnitId=0;

MakeCode=0x82;

Flags=3;

步骤D8:系统键盘底层驱动通过回调函数将键盘输入信息发送给系统键盘类驱动。

步骤D9:系统键盘类驱动将键盘输入信息复制到IRP请求的键盘输入数据中。

本实施例中,系统键盘类驱动中的IRP来自上层应用。

具体地,本发明中,上述键盘过滤驱动从系统中获取键盘输入信息,具体为:键盘过滤驱动从系统键类盘驱动的IRP中获取键盘输入数据。

本发明与现有技术相比的有益效果是:当PS2键盘输入数据包括两个字节时,在PS2键盘向控制器发送完第一个字节后,如果键盘过滤驱动向控制器发送模拟键盘输入数据,键盘过滤驱动获取对应的键盘输入信息,根据获取的当前键盘输入信息对自身保存的第二按键标识进行更新,当键盘过滤驱动获取到与PS2键盘输入数据第二个字节对应的键盘输入信息时,使用保存的第二按键标识对获取的当前键盘输入信息进行矫正,从而有效避免PS2键盘输入数据的第二个字节和第一个字节被模拟键盘输入数据拆分,保证上层应用接收的PS2键盘输入数据的正确性;控制器接收到PS2键盘输入数据后,在系统键盘驱动将控制器中的PS2键盘输入数据取走之前,键盘过滤驱动会等待控制器空闲之后再向控制器发送模拟键盘输入数据,如此可以防止模拟键盘输入数据将控制器中的PS2键盘输入数据覆盖,保证PS2键盘输入数据有效。

实施例3

本实施例提供一种提高键盘输入正确性的方法,如图3所示,包括:

步骤S31:键盘过滤驱动从系统中获取键盘输入数据,从键盘输入数据中获取当前键盘输入信息。

本实施例步骤S31与实施例2中步骤S21相同,在此不再赘述。

步骤S32:键盘过驱动判断当前键盘输入信息是否为干扰信息,是则执行步骤S36;否则执行步骤S33。

具体地,键盘过滤驱动判断当前键盘输入信息是否为干扰信息,具体为:键盘过滤驱动判断是否具有与当前键盘输入信息对应的信息记录,是则为干扰信息,否则不为干扰信息。

步骤S33:键盘过滤驱动判断自身保存的矫正标识是否为默认标识,是则将当前键盘输入信息保存到键盘输入数据中对应位置;否则执行步骤S34。

例如,默认标识的值为0,键盘过滤驱动判断自身保存的矫正标识是否为默认标识,具体为键盘过滤驱动判断自身保存的矫正标识的值是否为0。

步骤S34:键盘过滤驱动判断当前键盘输入信息中第一按键标识的值是否为自身保存的第一预设值或第二预设值,是则执行步骤S35,否则将当前键盘输入信息保存到键盘输入数据中对应位置;

优选地,本实施例中,第一预设值为0,第二预设值为1。

可选地,步骤S34还可以为:键盘过滤驱动判断当前键盘输入信息中第一按键标识的值是否与当前键盘输入信息对应的按键状态值相等,是则执行步骤S35,否则将当前键盘输入信息保存到键盘输入数据中对应位置。

具体地,键盘过滤驱动判断当前键盘输入信息中第一按键标识的值是否与当前键盘输入信息对应的按键状态值相等,具体为:键盘过滤驱动判断第一按键标识的值是否与第一按键标识中第一位数字的值相等,是则执行步骤S35,否则将当前键盘输入信息保存到键盘输入数据中对应位置。

步骤S35:键盘过滤驱动根据自身保存的第三预设值矫正当前键盘输入信息中的第一按键标识,并将矫正标识更新为默认标识。

优选地,第三预设值为2。

步骤S36:键盘过滤驱动判断自身保存的矫正标识是否为默认标识,是则执行步骤S37;否则将当前键盘输入信息从键盘输入数据中移除。

例如,默认标识为0。

步骤S37:键盘过滤驱动判断当前键盘输入信息中第一按键标识的值是否与对应的信息记录中的第三按键标识的值相等,是则将当前键盘输入信息从键盘输入数据中移除,否则执行步骤S38。

可选地,步骤S37还可以为:键盘过滤驱动判断当前键盘输入信息中第一按键标识的值是否与当前键盘输入信息对应的按键状态值相等,是则将当前键盘输入信息从键盘输入数据中移除,否则执行步骤S38。

具体地,键盘过滤驱动判断当前键盘输入信息中第一按键标识的值是否与第一按键标识中第一位数字的值相等,是则将当前键盘输入信息从键盘输入数据中移除,否则执行步骤S38。

可选地,步骤S37还可以为:键盘过滤驱动判断当前键盘输入信息中第一按键标识的值是否与自身保存的第一预设值或第二预设值相等,是则将当前键盘输入信息从键盘输入数据中移除,否则执行步骤S38。

例如,第一预设值为0,第二预设值为1。

步骤S38:键盘过滤驱动将自身保存的矫正标识更新为预设的非默认标识,将当前键盘输入信息从键盘输入数据中移除。

例如,预设的非默认标识为1。

可选地,上述步骤S35中,键盘过滤驱动根据自身保存的第三预设值矫正当前键盘输入信息中的第一按键标识,具体为:键盘过滤驱动将第一按键标识的值与自身保存的第三预设值进行位或运算,使用运算结果更新第一按键标识。

例如,键盘过滤驱动自身保存的第三预设值为2,从系统键盘驱动中获取的当前键盘输入信息为:

UnitId=0;

MakeCode=0x1e;

Flags=0;

即第一按键标识的值为0,键盘输入信息对应的按键状态值为0;

键盘过滤驱动将第三预设值2与第一按键标识的值0进行位或运算(2的二进制数为00000011,0的二进制数为00000000,00000010与00000000进行位或运算后得到00000010),使用运算结果2更新第一按键标识,矫正后的当前键盘输入信息如下:

UnitId=0;

MakeCode=0x1e;

Flags=2;

即矫正后的当前键盘输入信息中第一按键标识的值为2(对应的二进制数为00000010)。

可选地,上述步骤S35中,键盘过滤驱动根据自身保存的第三预设值矫正当前键盘输入信息中的第一按键标识,具体为:键盘过滤驱动将第一按键标识的值与自身保存的第三预设值进行加运算,使用运算结果更新第一按键标识。

例如,第三预设值为2,键盘过滤驱动获取的键盘输入信息如下:

UnitId=0;

MakeCode=0x1e;

Flags=0;

即第一按键标识的值为0,键盘过滤驱动将第一按键标识的值0与自身保存的第三预设值2进行加运算,使用运算结果2更新第一按键标识,更新后第一按键标识的值为2。矫正后的键盘输入信息如下:

UnitId=0;

MakeCode=0x1e;

Flags=2;

即矫正后当前键盘输入信息中的第一按键标识的值为2。

可选地,本实施例的上述方法中,还包括:

步骤N1:键盘过滤驱动向控制器发送禁止键盘输入指令;

本实施例中,步骤N1与实施例2中步骤N1相同,在此不再赘述。

步骤N2:键盘过滤驱动向控制器发送模拟键盘输入数据,通过控制器将模拟键盘输入数据传输给系统,通过系统将模拟键盘输入数据进行处理得到键盘输入信息,并将键盘输入信息保存到键盘输入数据中;

步骤N2中,键盘过滤驱动向控制器发送模拟键盘输入数据之后,还包括:键盘过滤驱动向控制器发送允许键盘输入指令。

具体地,键盘过滤驱动通过端口函数WRITE_PORT_UCHAR向控制器发送允许键盘输入指令;

例如,端口函数如下:WRITE_PORT_UCHAR(0x64,0xae);其中,WRITE_PORT_UCHAR为端口函数名称,参数0x64为控制器命令端口地址,参数0xae为允许键盘输入指令。

可选地,步骤N2中键盘过滤驱动向控制器发送模拟键盘输入数据之后,还包括:键盘过滤驱动生成并保存信息记录;

具体地,信息记录中包括按键扫描码和第三按键标识。

上述步骤S31中,键盘过滤驱动获取的当前键盘输入信息为干扰信息时,具有与当前键盘输入信息对应的信息记录。

相应地,上述步骤S32中键盘过滤驱动判断键盘输入信息是否为干扰信息,具体为:键盘过滤驱动判断是否保存有与当前键盘输入信息对应的信息记录,是则为干扰信息,否则不是干扰信息;

具体地,键盘过滤驱动判断是否保存有与当前键盘输入信息对应的信息记录,具体为:键盘过滤驱动判断当前键盘输入信息中的按键扫描码的值是否与对应的信息记录中的按键扫描码的值相等,是则具有与当前键盘输入信息对应的信息记录,否则没有与当前键盘输入信息对应的信息记录。

上述步骤S38中,还包括:键盘过滤驱动清除与当前键盘输入信息对应的信息记录;

上述步骤S36中,当键盘过滤驱动判断自身保存的矫正标识是默认标识时,还包括:键盘过滤驱动清除与当前键盘输入信息对应的信息记录;

上述步骤S37中,键盘过滤驱动判断当前键盘输入信息中第一按键标识的值与对应的信息记录中的第三按键标识的值不相等时,还包括:键盘过滤驱动清除与当前键盘输入信息对应的信息记录。

进一步地,步骤N1之前还包括:键盘过滤驱动等待控制器空闲。

本实施例中键盘过滤驱动等待控制器空闲,与实施例2中键盘过滤驱动等待控制器空闲的方法相同,在此不再赘述。

本实施例中,键盘过滤驱动向控制器发送模拟键盘输入数据之前等待控制器空闲,是为了避免覆盖控制器中的PS2键盘输入数据。

进一步地,键盘过滤驱动向控制器发送模拟键盘输入数据之后,还包括:键盘过滤驱动开启干扰信息事件;

相应地,上述步骤S32之前,还包括:键盘过滤驱动判断是否开启干扰信息事件,是则执行步骤S32,否则执行步骤S33;

上述步骤S36中,当键盘过滤驱动判断自身保存的矫正标识不是默认标识时,还包括:键盘过滤驱动关闭干扰信息事件;

上述步骤S37中,键盘过滤驱动判断当前键盘输入信息中第一按键标识的值与对应的信息记录中的第三按键标识的值相等时,还包括:键盘过滤驱动关闭干扰信息事件;

上述步骤S38中还包括:关闭干扰信息事件。

可选地,本实施例中,上述步骤S32-步骤S38还可以为步骤a1-步骤a7:

步骤a1:键盘过滤驱动判断自身保存的矫正标识是否为默认标识,是则执行步骤a7,否则执行步骤a2;

例如,默认标识的值为0。

具体地,步骤a1中键盘过滤驱动判断自身保存的矫正标识是否为默认标识与上述步骤S33和步骤S36相同。

步骤a2:键盘过滤驱动判断当前键盘输入信息中第一按键标识的值是否为第一预设值或第二预设值,是则执行步骤a3,否则将当前键盘输入信息保存到键盘输入数据中对应位置;

优选地,本实施例中,第一预设值为0,第二预设值为1。

可选地,步骤a2还可以为:键盘过滤驱动判断当前键盘输入信息中第一按键标识的值是否与当前键盘输入信息对应的按键状态值相等,是则执行步骤a3,否则将当前键盘输入信息保存到键盘输入数据中对应位置。

具体地,键盘过滤驱动判断第一按键标识的值是否与第一按键标识中第一位数字的值相等,是则执行步骤a3;否则将当前键盘输入信息保存到键盘输入数据中对应位置。

可选地,在步骤a2中的否分支中,在键盘过滤驱动将当前键盘输入信息保存到键盘输入数据中对应位置之前,还包括:键盘过滤驱动判断当前键盘输入信息是否为干扰信息,是则将当前键盘输入信息从键盘输入数据中移除;

相应地,键盘过滤驱动将当前键盘输入信息保存到键盘输入数据中对应位置,具体为:当键盘过滤驱动判断当前键盘输入信息不为干扰信息时,键盘过滤驱动将当前键盘输入信息保存到键盘输入数据中对应位置。

步骤a3:键盘过滤驱动根据自身保存的第三预设值矫正当前键盘输入信息中的第一按键标识,并将矫正标识更新为默认标识。

步骤a4:键盘过滤驱动判断矫正后的当前键盘输入信息是否为干扰信息,是则执行步骤a5,否则执行a6;

步骤a4中,键盘过滤驱动判断矫正后的当前键盘输入信息是否为干扰信息,具体与步骤S32中键盘过滤驱动判断当前键盘输入信息是否为干扰信息相同,在此不再赘述。

步骤a5:键盘过滤驱动将自身保存的矫正标识更新为预设的非默认标识,并将矫正后的当前键盘输入信息从键盘输入数据中移除;

例如,预设的非默认标识的值为1。

步骤a6:键盘过滤驱动将矫正后的当前键盘输入信息保存到键盘输入数据中对应位置;

步骤a7:键盘过滤驱动判断当前键盘输入信息是否为干扰信息,是则执行步骤a8,否则将当前键盘输入信息保存到键盘输入数据对应的位置;

步骤a7中键盘过滤驱动判断当前键盘输入信息是否为干扰信息,与上述步骤S32中键盘过滤驱动判断当前键盘输入信息是否为干扰信息相同,在此不再赘述。

步骤a8:键盘过滤驱动判断当前键盘输入信息中的第一按键标识的值是否与对应的信息记录中的第三按键标识的值相等,是则将当前键盘输入信息从键盘输入数据中移除;否则执行步骤a9。

可选地,步骤a8还可以为:键盘过滤驱动判断当前键盘输入信息中第一按键标识的值是否与当前键盘输入信息对应的按键状态值相等,是则将当前键盘输入信息从键盘输入数据中移除;否则执行步骤a9。

具体地,键盘过滤驱动判断第一按键标识的值是否与第一按键标识中第一位数字的值相等,是则将当前键盘输入信息从键盘输入数据中移除;否则执行步骤a9。

可选地,步骤a8还可以为:键盘过滤驱动判断当前键盘输入信息中第一按键标识的值是否为自身保存的第一预设值或第二预设值,是则将当前键盘输入信息从键盘输入数据中移除;否则执行步骤a9。

例如,第一预设值为0,第二预设值为1。

步骤a9:键盘过滤驱动将自身保存的矫正标识更新为预设的非默认标识,并将当前键盘输入信息从键盘输入数据中移除。

优选地,预设的非默认标识的值为1。

可选地,上述步骤a3中,键盘过滤驱动根据自身保存的第三预设值矫正当前键盘输入信息中的第一按键标识,具体为:键盘过滤驱动将第一按键标识的值与自身保存的第三预设值进行位或运算,使用运算结果更新第一按键标识。

例如,键盘过滤驱动自身保存的第三预设值为2,从系统键盘驱动中获取的当前键盘输入信息为:

UnitId=0;

MakeCode=0x1e;

Flags=0;

即第一按键标识的值为0,键盘输入信息对应的按键状态值为0;

键盘过滤驱动将第三预设值2与第一按键标识的值0进行位或运算(2的二进制数为00000011,0的二进制数为00000000,00000010与00000000进行位或运算后得到00000010),使用运算结果2更新第一按键标识,矫正后的当前键盘输入信息如下:

UnitId=0;

MakeCode=0x1e;

Flags=2;

即矫正后的当前键盘输入信息中第一按键标识的值为2(对应的二进制数为00000010)。

可选地,上述步骤a3中,键盘过滤驱动根据自身保存的第三预设值矫正当前键盘输入信息中的第一按键标识,具体为:键盘过滤驱动将第一按键标识的值与自身保存的第三预设值进行加运算,使用运算结果更新第一按键标识。

例如,第三预设值为2,键盘过滤驱动获取的当前键盘输入信息如下:

UnitId=0;

MakeCode=0x1e;

Flags=0;

即第一按键标识的值为0,键盘过滤驱动将第一按键标识的值0与自身保存的第三预设值2进行加运算,使用运算结果2更新第一按键标识,更新后第一按键标识的值为2。矫正后的键盘输入信息如下:

UnitId=0;

MakeCode=0x1e;

Flags=2;

即矫正后当前键盘输入信息中的第一按键标识的值为2。

可选地,在上述步骤S31中,键盘过滤驱动从系统中获取键盘输入数据之后、从键盘输入数据中获取当前键盘输入信息之前,还包括:键盘过滤驱动计算键盘输入数据中键盘输入信息的个数;

相应地,键盘过滤驱动从键盘输入数据中获取当前键盘输入信息之前,还包括:

步骤m1:键盘过滤驱动判断循环次数是否小于键盘输入信息的个数,是则从键盘输入数据中获取当前键盘输入信息,否则将键盘输入数据返回系统;

键盘过滤驱动每次处理完从键盘输入数据中获取的当前键盘输入信息之后,还包括:

步骤m2:键盘过滤驱动将循环次数加一,返回步骤m1;

在键盘过滤驱动初始化时,键盘过滤驱动将循环次数设置为初始值。例如,初始值为0。

本实施例中,上述键盘过滤驱动每次处理完从键盘输入数据中获取的当前键盘输入信息之后执行步骤m2,具体为:在步骤S38之后执行步骤m2,步骤S35之后执行步骤m2,键盘过滤驱动将当前键盘输入信息从键盘输入数据中移除之后执行步骤m2,键盘过滤驱动将当前键盘输入信息保存到键盘输入数据中对应位置之后执行步骤m2。

具体地,上述键盘过滤驱动计算键盘输入数据中键盘输入信息的个数,具体为:键盘过滤驱动使用键盘输入数据的数据长度除以键盘输入数据中单个键盘输入信息的数据长度得到的正整数。

本实施例中,键盘过滤驱动从系统中获取的键盘输入数据,具体是上层应用发送给系统的。相应地,键盘过滤驱动将键盘输入数据返回系统之后,系统将键盘输入信息中的数据返回对应的上层应用。

本实施例中,当PS2键盘上的按键被按下时,PS2键盘向控制器发送相应的PS2键盘输入数据,系统从控制器中获取PS2键盘输入数据以及对PS2键盘输入数据的处理方法参考实施例2中步骤A1-步骤A4和步骤B1-步骤B6,在此不再赘述。

本发明中,键盘过滤驱动会不定时的向控制器发送模拟键盘输入信息,当键盘过滤驱动向控制器发送模拟键盘输入数据时,在键盘过滤驱动从系统键盘驱动中取出对应的键盘输入信息之前,键盘过滤驱动向控制器发送模拟键盘输入数据以及系统对模拟键盘输入数据的处理方法参考实施例2中步骤D1-步骤D9,在此不再赘述。

本发明与现有技术相比的有益效果是:本发明中,当PS2键盘输入数据包括两个字节时,在PS2键盘向控制器发送完第一个字节后,如果键盘过滤驱动向控制器发送模拟键盘输入数据,键盘过滤驱动获取到对应的当前键盘输入信息后,将自身保存的矫正标识更新为预设的非默认标识,当键盘过滤驱动获取到与PS2键盘输入数据第二个字节对应的键盘输入信息时,判断自身保存的矫正标识不是默认标识时,根据自身保存的第三预设值矫正当前键盘输入信息中的第一按键标识,从而有效避免PS2键盘输入数据的第二个字节和第一个字节被模拟键盘输入数据拆分,保证上层应用接收的PS2键盘输入数据的正确性;控制器接收到PS2键盘输入数据后,在系统键盘驱动将控制器中的PS2键盘输入数据取走之前,键盘过滤驱动会等待控制器空闲之后再向控制器发送模拟键盘输入数据,如此可以防止模拟键盘输入数据将控制器中的PS2键盘输入数据覆盖,保证PS2键盘输入数据有效。

实施例4

本实施例提供一种键盘过滤驱动,如图4所示为键盘过滤驱动的模块组成框图,具体包括:

第一获取模块101,用于从系统中获取键盘输入数据;

第二获取模块102,用于从键盘输入数据中获取当前键盘输入信息;

保存模块103,用于保存矫正标识;

矫正模块104,用于当第二获取模块102获取的当前键盘输入信息不为干扰信息,保存模块103保存的矫正标识不是默认标识时,矫正当前键盘输入信息中的第一按键标识;

第一更新模块105,用于当矫正模块104矫正当前键盘输入信息中的第一按键标识之后,将保存模块103保存的矫正标识更新为默认标识;

存储模块106,用于将矫正模块104矫正后的当前键盘输入信息保存到键盘输入数据中对应位置;

第一移除模块107,用于当第二获取模块102获取的当前键盘输入信息为干扰信息,保存模块103保存的矫正标识不是默认标识时,将当前键盘输入信息从键盘输入数据中移除;

第二更新模块108,用于当第二获取模块102获取的当前键盘输入信息为干扰信息,保存模块103保存的矫正标识为默认标识时,根据当前键盘输入信息中的第一按键标识更新保存模块103保存的矫正标识;

第二移除模块109,用于当第二更新模块108根据当前键盘输入信息中的第一按键标识更新保存模块103保存的矫正标识之后,将当前键盘输入信息从键盘输入数据中移除;

设置模块110,用于在键盘过滤驱动初始化时,将保存模块103保存的矫正标识设置为默认标识;

返回模块111,用于当键盘过滤驱动处理完第一获取模块101获取的键盘输入数据中所有的键盘输入信息之后,将键盘输入数据返回系统。

可选地,上述键盘过滤驱动,还包括第一发送模块、第二发送模块和第三发送模块,

第一发送模块,用于向控制器发送禁止键盘输入指令;

第二发送模块,用于当第一发送模块向控制器发送禁止键盘输入指令之后,向控制器发送模拟键盘输入数据,通过控制器将模拟键盘输入数据传输给系统,通过系统将模拟键盘输入数据进行处理得到键盘输入信息,并将键盘输入信息保存到键盘输入数据中;

第三发送模块,用于当第二发送模块向控制器发送模拟键盘输入数据之后,向控制器发送允许键盘输入指令。

可选地,上述键盘过滤驱动在包括第一发送模块、第二发送模块和第三发送模块的基础上,还包括等待模块,

等待模块,用于在第一发送模块向控制器发送禁止键盘输入指令之前,等待控制器空闲。

可选地,上述键盘过滤驱动在包括第一发送模块、第二发送模块和第三发送模块的基础上,还包括生成模块,

生成模块,用于当第二发送模块向控制器发送模拟键盘输入数据之后,生成信息记录;

相应地,上述保存模块103,还用于保存生成模块生成的信息记录;

第二获取模块102获取的当前键盘输入信息为干扰信息时,具有与当前键盘输入信息对应的信息记录。

可选地,上述键盘过滤驱动,还包括计算模块、计数模块和第一判断模块;

保存模块103,还用于保存循环次数;

设置模块110,还用于在键盘过滤驱动初始化时,将保存模块103保存的循环次数设置为初始值;

计算模块,用于计算第一获取模块101获取的键盘输入数据中键盘输入信息的个数;

第一判断模块,用于在第二获取模块102从键盘输入信息中获取当前键盘输入信息之前,判断保存模块103保存的循环次数是否小于计算模块计算得到的键盘输入信息的个数;

相应地,上述返回模块111,具体用于当第一判断模块判断保存模块103保存的循环次数不小于键盘输入信息的个数时,将键盘输入数据返回系统;

第二获取模块102,具体用于当第一判断模块判断保存模块103保存的循环次数小于键盘输入信息的个数时,从键盘输入数据中获取当前键盘输入信息;

计数模块,用于键盘过滤驱动每次处理完从键盘输入数据中获取的当前键盘输入信息之后,将保存模块103保存的循环次数加一;

第一判断模块,还用于在计数模块将保存模块103保存的循环次数加一之后,判断保存模块103保存的循环次数是否小于键盘输入信息的个数。

在本实施例中,上述键盘过滤驱动中保存模块103保存的矫正标识为第二按键标识,默认标识为默认按键标识;

矫正模块104,具体用于当第二获取模块102获取的当前键盘输入信息不为干扰信息,保存模块103保存的第二按键标识不是默认按键标识时,根据保存模块103保存的第二按键标识矫正当前键盘输入信息中的第一按键标识;

第一更新模块105,具体用于当矫正模块104根据保存模块103保存的第二按键标识矫正当前键盘输入信息中的第一按键标识之后,将保存模块103保存的第二按键标识更新为默认按键标识。

具体地,上述矫正模块104包括运算子模块和更新子模块,

运算子模块,用于当第二获取模块102获取的当前键盘输入信息不为干扰信息,保存模块103保存的第二按键标识不是默认按键标识时,将保存模块103保存的第二按键标识的值与第一按键标识的值相加;

更新子模块,用于使用运算子模块的运算结果更新第一按键标识;

相应地,上述第二更新模块108,具体用于当第二获取模块102获取的当前键盘输入信息为干扰信息,保存模块103保存的第二按键标识为默认按键标识时,将当前键盘输入信息中第一按键标识的值减去对应的按键状态值,使用运算结果更新保存模块103保存的第二按键标识。

具体地,上述矫正模块104包括运算子模块和更新子模块,

运算子模块,用于当第二获取模块102获取的当前键盘输入信息不为干扰信息,保存模块103保存的第二按键标识不是默认按键标识时,将第二按键标识的值与第一按键标识的值进行位或运算;

更新子模块,用于使用运算子模块的运算结果更新第一按键标识;

相应地,上述第二更新模块108,具体用于当第二获取模块102获取的当前键盘输入信息为干扰信息,保存模块103保存的第二按键标识为默认按键标识时,将与当前键盘输入信息对应的按键状态值取反,将取反结果与当前键盘输入信息中第一按键标识的值进行位与运算,使用运算结果更新保存模块103保存的第二按键标识。

具体地,上述保存模块103,还用于保存第一预设值和第二预设值;用于当第二获取模块102获取的当前键盘输入信息为干扰信息时,保存与当前键盘输入信息对应的信息记录;

相应地,上述矫正模块104,具体用于当第二获取模块102获取的当前键盘输入信息不为干扰信息、保存模块103保存的第二按键标识不是默认按键标识,并且当第一按键标识的值为保存模块103保存的第一预设值或第二预设值时,使用保存模块103保存的第二按键标识更新当前键盘输入信息中的第一按键标识;

上述第二更新模块108,具体用于当第二获取模块102获取的当前键盘输入信息为干扰信息、保存模块103保存的第二按键标识为默认按键标识,并且当第一按键标识的值不为保存模块103保存的第一预设值或第二预设值时,或者当第二获取模块102获取的当前键盘输入信息为干扰信息、保存模块103保存的第二按键标识为默认按键标识,并且当第一按键标识的值与对应的信息记录中的第三按键标识的值不相等时;或者当所述第二获取模块获取的所述当前键盘输入信息为干扰信息、所述保存模块保存的第二按键标识为默认按键标识,并且当第一按键标识的值与当前键盘输入信息对应的按键状态值不相等时,使用第一按键标识更新保存模块103保存的第二按键标识;

或者,可选地,

上述矫正模块104,具体用于当第二获取模块102获取的当前键盘输入信息不为干扰信息、保存模块103保存的第二按键标识不是默认按键标识,并且当第一按键标识的值与当前键盘输入信息对应的按键状态值相等时,使用保存模块103保存的第二按键标识更新当前键盘输入信息中的第一按键标识;

相应地,上述第二更新模块108,具体用于当第二获取模块102获取的当前键盘输入信息为干扰信息、保存模块103保存的第二按键标识为默认按键标识,并且当第一按键标识的值与当前键盘输入信息对应的按键状态值不相等时;或者当第二获取模块102获取的当前键盘输入信息为干扰信息、保存模块103保存的第二按键标识为默认按键标识,并且当第一按键标识的值与对应的信息记录中的第三按键标识的值不相等时;或者当所述第二获取模块获取的所述当前键盘输入信息为干扰信息、所述保存模块保存的第二按键标识为默认按键标识,并且当所述第一按键标识的值不为所述保存模块保存的第一预设值或第二预设值时时,使用第一按键标识更新保存模块103保存的第二按键标识。

在本实施例中,上述键盘过滤驱动中的保存模块103,还用于保存第三预设值、第一预设值和第二预设值;用于当第二获取模块102获取的当前键盘输入信息为干扰信息时,保存与当前键盘输入信息对应的信息记录;

相应地,上述矫正模块104,具体用于当第二获取模块102获取的当前键盘输入信息不为干扰信息、保存模块103保存的矫正标识不是默认标识,并且当第一按键标识的值为保存模块103保存的第一预设值或第二预设值时,根据保存模块103保存的第三预设值矫正当前键盘输入信息中的第一按键标识;

或者,矫正模块104,具体用于当第二获取模块102获取的当前键盘输入信息不为干扰信息、保存模块103保存的矫正标识不是默认标识,并且当第一按键标识的值与当前键盘输入信息对应的按键状态值相等时,根据保存模块103保存的第三预设值矫正当前键盘输入信息中的第一按键标识;

第一更新模块105,具体用于当矫正模块104根据保存模块103保存的第三预设值矫正当前键盘输入信息中的第一按键标识之后,将保存模块103保存的矫正标识更新为默认标识;

第二更新模块108,具体用于当第二获取模块102获取的当前键盘输入信息为干扰信息、保存模块103保存的矫正标识为默认标识,并且当第一按键标识的值与保存模块103保存的信息记录中的第三按键标识的值不相等时,将保存模块103保存的矫正标识更新为预设的非默认标识;

或者,第二更新模块108,具体用于当第二获取模块102获取的当前键盘输入信息为干扰信息、保存模块103保存的矫正标识为默认标识,并且当第一按键标识的值与当前键盘输入信息对应的按键状态值不相等时,将保存模块103保存的矫正标识更新为预设的非默认标识;

或者,第二更新模块108,具体用于当第二获取模块102获取的当前键盘输入信息为干扰信息、保存模块103保存的矫正标识为默认标识,并且当第一按键标识的值不为保存模块103保存的第一预设值或第二预设值时,将保存模块103保存的矫正标识更新为预设的非默认标识。

具体地,上述矫正模块104包括运算子模块和更新子模块,

运算子模块,用于当第二获取模块102获取的当前键盘输入信息不为干扰信息、保存模块103保存的矫正标识不是默认标识,并且当第一按键标识的值为第一预设值或第二预设值时,将第一按键标识的值与保存模块103保存的第三预设值进行位或运算;

或者,运算子模块,用于当第二获取模块获取的当前键盘输入信息不为干扰信息、保存模块保存的矫正标识不是默认标识,并且当第一按键标识的值与当前键盘输入信息对应的按键状态值相等时,将第一按键标识的值与保存模块保存的第三预设值进行位或运算;

更新子模块,用于使用运算子模块的运算结果更新第一按键标识。

具体地,上述矫正模块104包括运算子模块和更新子模块,

运算子模块,用于当第二获取模块102获取的当前键盘输入信息不为干扰信息、保存模块103保存的矫正标识不是默认标识,并且当第一按键标识的值为第一预设值或第二预设值时,将第一按键标识的值与保存模块103保存的第三预设值进行加运算;

或者,运算子模块,用于当第二获取模块获取的当前键盘输入信息不为干扰信息、保存模块保存的矫正标识不是默认标识,并且当第一按键标识的值与当前键盘输入信息对应的按键状态值相等时,将第一按键标识的值与保存模块保存的第三预设值进行加运算;

更新子模块,用于使用运算子模块的运算结果更新第一按键标识。

本实施例中,上述键盘过滤驱动,还包括第二判断模块、第三判断模块和第三更新模块;

第二判断模块,用于当第二获取模块102从键盘输入数据中获取当前键盘输入信息之后,判断保存模块103保存的矫正标识是否为默认标识;

相应地,矫正模块104,具体用于当第二判断模块判断保存模块103保存的矫正标识不是默认标识时,矫正当前键盘输入信息中的第一按键标识;

第一更新模块105,具体用于当第二判断模块判断保存模块103保存的矫正标识不是默认标识,矫正模块104矫正当前键盘输入信息中的第一按键标识之后,将保存模块103保存的矫正标识更新为默认标识;

第三判断模块,用于判断矫正模块104矫正后的当前键盘输入信息是否为干扰信息;

第三更新模块,用于当第三判断模块判断矫正模块104矫正后的当前键盘输入信息是干扰信息时,根据矫正模块104矫正后的当前键盘输入信息中的第一按键标识更新保存模块103保存的矫正标识;

第二移除模块109,还用于当第三更新模块根据矫正模块104矫正后的当前键盘输入信息中的第一按键标识更新保存模块103保存的矫正标识之后,将矫正模块104矫正后的当前键盘输入信息从键盘输入数据中移除;

存储模块106,具体用于当第三判断模块判断矫正模块104矫正后的当前键盘输入信息不是干扰信息时,将矫正模块104矫正后的当前键盘输入信息保存到键盘输入数据中对应位置。

可选地,上述保存模块103保存的矫正标识为第二按键标识,默认标识为默认按键标识;

相应地,上述矫正模块104,具体用于当第二判断模块判断保存模块103保存的第二按键标识不是默认按键标识时,根据保存模块103保存的第二按键标识矫正当前键盘输入信息中的第一按键标识;

第一更新模块105,具体用于当矫正模块104根据保存模块103保存的第二按键标识矫正当前键盘输入信息中的第一按键标识之后,将保存模块103保存的第二按键标识更新为默认按键标识。

具体地,上述矫正模块104包括运算子模块和更新子模块;

运算子模块,用于当第二判断模块判断保存模块103保存的第二按键标识不是默认按键标识时,将保存模块103保存的第二按键标识的值与第一按键标识的值相加;

更新子模块,用于使用运算子模块的运算结果更新第一按键标识;

上述第三更新模块,具体用于当第三判断模块判断矫正模块104矫正后的当前键盘输入信息是干扰信息时,将矫正模块104矫正后的当前键盘输入信息中第一按键标识的值减去对应的按键状态值,使用运算结果更新保存模块103保存的第二按键标识;

第二更新模块108,具体用于当第二获取模块102获取的当前键盘输入信息为干扰信息,保存模块103保存的第二按键标识为默认按键标识时,将当前键盘输入信息中第一按键标识的值减去对应的按键状态值,使用运算结果更新保存模块103保存的第二按键标识。

具体地,上述矫正模块104包括运算子模块和更新子模块;

运算子模块,用于当第二判断模块判断保存模块103保存的第二按键标识不是默认按键标识时,将保存模块103保存的第二按键标识的值与第一按键标识的值进行位或运算;

更新子模块,用于使用运算子模块的运算结果更新第一按键标识;

相应地,上述第三更新模块,具体用于当第三判断模块判断矫正模块104矫正后的当前键盘输入信息是干扰信息时,将矫正后的当前键盘输入信息对应的按键状态值取反,将取反结果与矫正后的当前键盘输入信息中第一按键标识的值进行位与运算,使用运算结果更新保存模块103保存的第二按键标识;

第二更新模块108,具体用于当第二获取模块102获取的当前键盘输入信息为干扰信息,保存模块103保存的第二按键标识为默认按键标识时,将当前键盘输入信息对应的按键状态值取反,将取反结果与当前键盘输入信息中第一按键标识的值进行位与运算,使用运算结果更新保存模块103保存的第二按键标识。

具体地,上述保存模块103,还用于保存第一预设值和第二预设值;用于当第二获取模块102获取的当前键盘输入信息为干扰信息时,保存与当前键盘输入信息对应的信息记录;

相应地,上述矫正模块104,具体用于当第二判断模块判断保存模块103保存的第二按键标识不是默认按键标识,并且第一按键标识的值为第一预设值或第二预设值时,使用保存模块103保存的第二按键标识更新当前键盘输入信息中的第一按键标识;

或者,上述矫正模块104,具体用于当第二判断模块判断保存模块103保存的第二按键标识不是默认按键标识,并且当第一按键标识的值与当前键盘输入信息对应的按键状态值相等时,使用保存模块103保存的第二按键标识更新当前键盘输入信息中的第一按键标识;

相应地,上述第三更新模块,具体用于当第三判断模块判断矫正模块104矫正后的当前键盘输入信息是干扰信息时,使用矫正模块104矫正后的第一按键标识更新保存模块103保存的第二按键标识;

第二更新模块108,具体用于当第二获取模块102获取的当前键盘输入信息为干扰信息,保存模块103保存的第二按键标识为默认按键标识,并且当第一按键标识不为第一预设值或第二预设值时,使用第一按键标识更新保存模块103保存的第二按键标识;

或者,第二更新模块108,具体用于当第二获取模块102获取的当前键盘输入信息为干扰信息,保存模块103保存的第二按键标识为默认按键标识,并且当第一按键标识的值与当前键盘输入信息对应的按键状态值不相等时,使用第一按键标识更新保存模块103保存的第二按键标识;

或者,第二更新模块108,具体用于当第二获取模块102获取的当前键盘输入信息为干扰信息,保存模块103保存的第二按键标识为默认按键标识,并且当第一按键标识的值与对应的信息记录中的第三按键标识的值不相等时,使用第一按键标识更新保存模块103保存的第二按键标识。

可选地,上述保存模块103,还用于保存第三预设值、第一预设值和第二预设值;用于当第二获取模块102获取的当前键盘输入信息为干扰信息时,保存与当前键盘输入信息对应的信息记录;

相应地,上述矫正模块104,具体用于当第二判断模块判断保存模块103保存的矫正标识不是默认标识,并且当第一按键标识的值为第一预设值或第二预设值时,根据保存模块103保存的第三预设值矫正当前键盘输入信息中的第一按键标识;

或者,矫正模块104,具体用于当第二判断模块判断保存模块103保存的矫正标识不是默认标识,并且当第一按键标识的值与当前键盘输入信息对应的按键状态值相等时,根据保存模块103保存的第三预设值矫正当前键盘输入信息中的第一按键标识;

第一更新模块105,具体用于当矫正模块104根据保存模块103保存的第三预设值矫正当前键盘输入信息中的第一按键标识之后,将保存模块103保存的矫正标识更新为默认标识;

第三更新模块,具体用于当第三判断模块判断矫正模块104矫正后的当前键盘输入信息是干扰信息时,将矫正标识更新为预设的非默认标识;

第二更新模块108,具体用于当第二获取模块102获取的当前键盘输入信息为干扰信息,保存模块103保存的第二按键标识为默认按键标识,并且当第一按键标识的值与对应的信息记录中的第三按键标识的值不相等时,将保存模块103保存的矫正标识更新为预设的非默认标识;

或者,第二更新模块108,具体用于当第二获取模块102获取的当前键盘输入信息为干扰信息,保存模块103保存的第二按键标识为默认按键标识,并且当第一按键标识的值与当前键盘输入信息对应的按键状态值不相等时,将保存模块103保存的矫正标识更新为预设的非默认标识;

或者,第二更新模块108,具体用于当第二获取模块102获取的当前键盘输入信息为干扰信息,保存模块103保存的第二按键标识为默认按键标识,并且当第一按键标识不为第一预设值或第二预设值时,将保存模块103保存的矫正标识更新为预设的非默认标识。

具体地,上述矫正模块104包括运算子模块和更新子模块;

运算子模块,用于当第二判断模块判断保存模块103保存的矫正标识不是默认标识时,并且当第一按键标识的值为第一预设值或第二预设值时,将第一按键标识的值与保存模块103保存的第三预设值进行位或运算;

或者,运算子模块,用于当第二判断模块判断保存模块保存的矫正标识不是默认标识,并且当第一按键标识的值与当前键盘输入信息对应的按键状态值相等时,将第一按键标识的值与保存模块保存的第三预设值进行位或运算;

更新子模块,用于使用运算子模块的运算结果更新第一按键标识。

具体地,上述矫正模块104包括运算子模块和更新子模块;

运算子模块,用于当第二判断模块判断保存模块103保存的矫正标识不是默认标识时,并且当第一按键标识的值为第一预设值或第二预设值时,将第一按键标识的值与保存模块103保存的第三预设值进行加运算;

或者,运算子模块,用于当第二判断模块判断保存模块保存的矫正标识不是默认标识,并且当第一按键标识的值与当前键盘输入信息对应的按键状态值相等时,将第一按键标识的值与保存模块保存的第三预设值进行加运算;

更新子模块,用于使用运算子模块的运算结果更新第一按键标。

可选地,上述键盘过滤驱动中的存储模块106,还用于当第二获取模块102获取的当前键盘输入信息不为干扰信息,并且保存模块103保存的矫正标识为默认标识时,将第二获取模块102获取的当前键盘输入信息保存到键盘输入数据中对应位置。

以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1