CN103092358B - 一种对键盘实现全键无冲突的系统及方法 - Google Patents

一种对键盘实现全键无冲突的系统及方法 Download PDF

Info

Publication number
CN103092358B
CN103092358B CN201310030152.1A CN201310030152A CN103092358B CN 103092358 B CN103092358 B CN 103092358B CN 201310030152 A CN201310030152 A CN 201310030152A CN 103092358 B CN103092358 B CN 103092358B
Authority
CN
China
Prior art keywords
keyboard
key
punch die
key information
die formula
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201310030152.1A
Other languages
English (en)
Other versions
CN103092358A (zh
Inventor
陈俊坚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ZHUHAI HENGYU NEW TECHNOLOGY Co Ltd
Original Assignee
ZHUHAI HENGYU NEW TECHNOLOGY Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ZHUHAI HENGYU NEW TECHNOLOGY Co Ltd filed Critical ZHUHAI HENGYU NEW TECHNOLOGY Co Ltd
Priority to CN201310030152.1A priority Critical patent/CN103092358B/zh
Publication of CN103092358A publication Critical patent/CN103092358A/zh
Application granted granted Critical
Publication of CN103092358B publication Critical patent/CN103092358B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开并提供了一种能满足所有主机BIOS芯片、无需重新插拔而使用方便的对键盘实现全键无冲突的系统及方法,该系统包括键盘模式检测装置、按键扫描装置、按键信息判断装置和键盘模式切换装置,键盘启动时,键盘工作在普通六键无冲模式,键盘启动后,所述键盘模式检测装置检测键盘的工作模式是六键无冲模式还是全键无冲模式,所述按键扫描装置扫描来自矩阵的按键信息,所述按键信息判断装置判断该按键信息是否来自于所述特定热键,若判断是来自所述热键,则将判断信息发送至所述键盘模式切换装置,所述键盘模式切换装置控制USB系统中的固件切换工作模式;若判断该按键信息不是来自于所述特定热键,则在当前模式下发送相应的按键信息到主机。

Description

一种对键盘实现全键无冲突的系统及方法
技术领域
本发明涉及一种对键盘实现全键无冲突的系统及方法。
背景技术
键盘在人们的日常生活中,特别是对于经常使用电脑的人来说,已经是再熟悉不过的了。随着电脑的发展,电脑软件的更新换代与不断升级,用电脑游戏娱乐已经成为人们使用电脑必不可少的项目,现在大多数的电脑游戏中,经常会出现游戏人物边走边打斗的情形,这样就要求游戏者在按住方向键的同事还需要按住打斗等其它键才行。现有技术中的电脑键盘的按键排布均采用矩阵式排布方式,在多个按键同时按下的情况下,容易发生冲突,这给使用者带来了很大的不便。对于一个游戏键盘来说,能够检测到多个键被按下,成为一个非常重要的功能,目前的游戏键盘均为USB键盘,由于兼容性问题,传统上的USB键盘必须遵循一个标准的USB报告格式向主机发送报告,除了几个修饰键(CTRL, ALT, SHIFT, WIN)以外,同时被按下的按键数量被限定为6个键(通常的六键无冲突实现方法:一般采用的报告的数据格式是8个字节。第一个字节表示修饰键。第二个字节是未使用的,固定是0x00。接下来的6个字节用来存储任意6个按键信息,不包括修饰键。),显然,对于游戏玩家来说,这是一个很大的缺陷。因此,也有一些厂家针对这一问题作出了改进以实现全键无冲突,目前实现全键无冲的惯常做法是虚拟多个键盘来实现,即在一个设备中,他们必须虚拟两个或更多的键盘,这样在主机上存在多个键盘,这对组合键的使用是会有影响的。重要的是,目前的主机的BIOS很多不支持全键无冲模式启动,一些键盘只有在某些特定的BIOS下才能实现全键无冲突模式启动,另外一些键盘虽然具有全键盘无冲突模式和6键无冲突模式,但是,使用者必须重新插拔键盘来使新的无冲突模式生效,但在使用过程中重新插拔键盘很不方便。
发明内容
本发明所要解决的技术问题是克服现有技术的不足,提供一种结构简单、成本低且使用方便的对键盘实现全键无冲突的系统及方法。
本发明一种对键盘实现全键无冲突的系统所采用的技术方案是:所述系统包括USB设备,所述USB设备以报告的形式与上位主机通讯连接,所述报告的数据格式包括至少14个字节(byte),每个所述字节包括8个位(bit),每个位对应1个按键。
进一步的,本系统通过设定至少一个与固件对应的特定热键对键盘进行模式的切换,该系统包括:
键盘模式检测装置,用于检测键盘是处于六键无冲模式或全键无冲模式下在进行工作;
按键扫描装置,用于扫描矩阵上的按键信息;
按键信息判断装置,用于判断扫描到的信息是否来自特定的热键;
键盘模式切换装置,用于接收来自所述按键信息判断装置判断的信息,并控制USB键盘中的固件切换工作模式;
键盘启动进行USB枚举时,键盘发送六键无冲模式的报告描述符到主机,与主机约定六键无冲的报告数据格式,启动完成后,所述按键扫描装置扫描来自矩阵的按键信息,所述按键信息判断装置判断该按键信息是否来自于所述特定热键,若判断是来自所述热键,则将判断信息发送至所述键盘模式切换装置,所述键盘模式切换装置控制USB键盘中的固件通过类似键盘启动的方式重启,重新进行USB枚举来切换工作模式(如果当前工作在六键无冲模式,则键盘发送全键无冲模式的报告描述符到主机,与主机约定为全键无冲的报告数据格式;如果当前工作在全键无冲模式,则键盘发送六键无冲模式的报告描述符到主机,与主机约定为六键无冲的报告数据格式);若判断该按键信息不是来自于所述特定热键,所述键盘模式检测装置检测键盘是处于六键无冲模式或全键无冲模式下在进行工作,如果是工作在六键无冲模式,则按六键无冲模式的报告数据格式发送报告到主机,如果是工作在全键无冲模式,则按全键无冲模式的报告数据格式发送报告到主机。
本发明一种对键盘实现全键无冲突的方法采用的技术方案是:所述系统包括USB设备,所述USB设备以报告的形式与上位主机通讯连接,所述报告的数据格式包括至少14个字节(byte),每个所述字节包括8个位(bit),每个位对应1个按键,通过设定的至少一个与固件对应的特定热键对键盘进行模式的切换,包括以下步骤:
(1)键盘模式检测装置检测键盘当前是处于六键无冲模式或全键无冲模式下;
(2)按键扫描装置扫描来自键盘上所有按键的按键信息;
    (3)按键信息判断装置判断扫描到的信息是否来自特定的热键,若是所述特定热键的按键信息,则转为步骤(4),若不是所述特定热键的按键信息,则在当前模式下发送相应的按键数据到主机;
    (4)键盘模式切换装置,用于接收来自所述按键信息判断装置判断的信息,并控制USB键盘中的固件切换工作模式。
本发明的有益效果是:本发明提供的对键盘实现全键无冲突的系统及方法,所述系统包括USB设备,所述USB设备以报告的形式与上位主机通讯连接,所述报告的数据格式包括至少14个字节(byte),每个所述字节包括8个位(bit),每个位对应1个按键。这样,所述报告按键数据大小是112位,每一位代表一个键码,结构简单、成本低且使用方便,可以轻易的实现键盘全键无冲突,同时,本发明还可以在键盘启动时使键盘工作在通常的六键无冲模式,而在启动完成之后,可以按下预设的特定热键,使键盘发生类似重新插拔的重启过程并切换成全键无冲模式,如此可满足所有类型的主机BIOS芯片来读取键盘,操作过程无需反复插拨而使用方便。
附图说明
图1是本发明的功能模块图;
图2是本发明对键盘实现全键无冲突的流程图。
具体实施方式
如图1所示,为本发明一种对键盘实现全键无冲突的系统的功能模块图,所述系统包括USB设备,所述USB设备以报告(USB 键盘是通过报告来传送数据的,报告是一个数据包,里面包含的是所要传送的按键数据)的形式与上位主机通讯连接,所述报告的数据格式(指报告的数据包的长度、每个位的含义等的相关规定)包括至少14个字节(byte),每个所述字节包括8个位(bit),每个位对应1个按键。这样,所述按键数据大小是112位,每一位代表一个键,所述系统通过设定至少一个与固件对应的特定热键对键盘进行模式的切换,该系统包括:键盘模式检测装置1,用于检测键盘是处于六键无冲模式或全键无冲模式下工作;按键扫描装置2,用于扫描矩阵上的按键信息;按键信息判断装置3,用于判断扫描到的信息是否来自特定的热键;键盘模式切换装置4,用于接收来自所述按键信息判断装置判断的信息,并控制USB键盘中的固件切换工作模式。键盘启动进行USB枚举时,键盘发送六键无冲模式的报告描述符(符合USB HID定义的、用来描述报告以及报告的数据格式的代码;是USB键盘发给USB主机的,通过它,USB主机可以知道后续收到的报告里面的数据的含义)到主机,与主机约定六键无冲的报告数据格式。启动完成后,所述按键扫描装置扫描来自矩阵的按键信息,所述按键信息判断装置判断该按键信息是否来自于所述特定热键,若判断是来自所述热键,则将判断信息发送至所述键盘模式切换装置,所述键盘模式切换装置控制USB键盘中的固件通过类似键盘重新插拔的重启,重新进行USB枚举来切换工作模式(如果当前工作在六键无冲模式,键盘发送全键无冲模式的报告描述符到主机,与主机约定为全键无冲的报告数据格式;如果当前工作在全键无冲模式,键盘发送六键无冲模式的报告描述符到主机,与主机约定为六键无冲的报告数据格式);若判断该按键信息不是来自于所述特定热键,则所述键盘模式检测装置检测键盘是处于六键无冲模式或全键无冲模式下在进行工作,如果是工作在六键无冲模式,则按六键无冲模式的数据格式发送报告到主机,如果是工作在全键无冲模式,则按全键无冲模式的数据格式发送报告到主机。所述全键无冲模式是指USB键盘以全速传输模式下,采用按位对应按键的方式发送14字节的报告,具体来说,该报告数据格式大小是112位(14个字节),每一位代表一个键,值为1意味着按键按下,为0意味着按键松开,这样即使所有的104个按键都按下,也可以将所有按键信息发送给主机。下面是位映射表:
在键盘芯片中,程序会设置1个按键信息缓冲区,并且按报告数据格式进行存放,缓冲区的大小是14个字节。当用户按下一个按键,程序会置1缓冲区中对应的位。当用户释放一个键,程序会清零对应的缓冲区中的位。当缓冲区内数据有任何变化时,则程序会将报告发给电脑。例如,当我们想要发送按键A(位12),我们可以发送以下两个按键数据给主机:
00 10 00 00 00 00 00 00 00 00 00 00 00 00 (A 键按下)
00 00 00 00 00 00 00 00 00 00 00 00 00 00 (A 键释放)
当我们想要发送的按键顺序为Ctrl-S,我们可以发送以下的四个数据报告
01 00 00 00 00 00 00 00 00 00 00 00 00 00 (Ctrl 键按下)
01 00 00 40 00 00 00 00 00 00 00 00 00 00 (S 键按下)
01 00 00 00 00 00 00 00 00 00 00 00 00 00 (S 键释放)
00 00 00 00 00 00 00 00 00 00 00 00 00 00 (Ctrl 键释放)
以下是我们全键无冲突USB键盘报告描述符:
const BYTE hid_report_descriptor1[] = {
   0x05, 0x01,     // USAGE_PAGE(Gerneric Desktop)
   0x09, 0x06,     // USAGE(Keyboard)
   0xA1, 0x01,     // COLLECTION(Application)
   0x05, 0x07,     //   USAGE_PAGE(Key Code)
   0x19, 0xE0,     //   USAGE_MINIMUM(Keyboard LeftControl)
   0x29, 0xE7,     //   USAGE_MAXIMUM(Keyboard RightGUI)
   0x15, 0x00,     //   LOGICAL_MINIMUM(0)
   0x25, 0x01,     //   LOGICAL_MAXIMUM(1)
   0x75, 0x01,     //   REPORT_SIZE(1)
   0x95, 0x08,     //   REPORT_COUNT(8)
   0x81, 0x02,     //   INPUT(Data,Var,Abs)
   0x19, 0x00,     //   USAGE_MINIMUM (???)
   0x29, 0x67,     //   USAGE_MAXIMUM (???)
   0x95, 0x68,     //   REPORT_COUNT (104)
   0x81, 0x02,     //   INPUT (Data,Var,Abs)
   0x05, 0x08,     //   USAGE_PAGE(LEDs)
   0x19, 0x01,     //   USAGE_MINIMUM(Num Lock)
   0x29, 0x05,     //   USAGE_MAXIMUM(Kana)
   0x15, 0x00,     //   LOGICAL_MINIMUM(0)
   0x25, 0x01,     //   LOGICAL_MAXIMUM(1)
   0x75, 0x01,     //   REPORT_SIZE(1)
   0x95, 0x05,     //   REPORT_COUNT(5)
   0x91, 0x02,     //   OUTPUT(Data,Var,Abs)
   0x75, 0x03,     //   REPORT_SIZE(3)
   0x95, 0x01,     //   REPORT_COUNT(1)
   0x91, 0x01,     //   OUTPUT(Constant)
   0xC0            // END_COLLECTION
};
如图2所示,本发明提供的实现全键无冲方法的工作流程;
步骤S0,键盘启动;
步骤S1,键盘进入所述键盘模式检测装置检测键盘的所述全无冲模式标志是否为零,否定的情况下进入后续步骤S2;确定的情况下则进入步骤S7(键盘启动时所述全无冲模式标志为0)
步骤S2,USB枚举,发送全键无冲突报告描述符(键盘在全键无冲突模式下工作,发送14字节的报告);
步骤S3,检查是否有按键按下,确定的情况下则进入步骤S4,当按键释放之后则进入步骤S15;
步骤S4,所述按键信息判断装置判断扫描到的信息是否来自特定的热键,否定的情况下进入后续步骤S5,确定的情况下则进入步骤S13;
步骤S5,键盘设置按键信息缓冲区中的相对应的位为1;
步骤S6,发送14字节的报告;返回步骤S3;
步骤S7,USB枚举,发送六键无冲报告描述符(键盘在六键无冲突模式下工作,发送8字节的报告);
步骤S8,检查是否有按键按下,有键按下则进入步骤S9,按键释放则进入步骤S18;
步骤S9,所述按键信息判断装置判断扫描到的信息是否来自特定的热键,否定的情况下进入后续步骤S10,确定的情况下则进入步骤S14;
步骤S10,检查按键的类型,常规键则进入步骤S16,修饰键则进入后续步骤S11;
步骤S11,将缓冲区的第一个字节的相应的位设置为1;
步骤S12,发送8字节的报告;
步骤S13,设置所述全无冲模式标志为0,将所述USB的固件进行类似于插拔的重启,并再次进入步骤S1;
步骤S14,设置所述全无冲模式标志为1,将所述USB的固件进行类似于插拔的重启,并再次进入步骤S1中;
步骤S15,根据步骤S3发来的信息,清除相应的位为0,并进入后续步骤S6;
步骤S16,根据步骤S10发来的信息,查看缓冲区是否已满,确定的情况下则进入步骤S8,否定的情况下则进入后续步骤S17;
步骤S17,在缓冲区中将对应按键的相应的位设置为1,进入步骤S12;
步骤S18,根据步骤S8发来的信息,检查按键的类型,按键为修饰键进入步骤S19,按键为常规键则进入步骤S20;
步骤S19,在描述符的第一个字节清除相应的位为1,并进入后续步骤S12进行操作;
步骤S20,在缓冲区中将对应按键的相应的位设置为0,并进入后续步骤S12进行操作。

Claims (2)

1.一种对键盘实现全键无冲突的系统,包括USB设备,所述USB设备以报告的形式与上位主机通讯连接,其特征在于:所述报告的数据格式包括至少14个字节(byte),每个所述字节包括8个位(bit),每个位对应1个按键;所述系统中通过设定至少一个与固件对应的特定热键对键盘进行模式的切换,该系统包括:
键盘模式检测装置,用于检测键盘当前是处于六键无冲模式或全键无冲模式下;
按键扫描装置,用于扫描矩阵上的按键信息;
按键信息判断装置,用于判断扫描到的信息是否来自特定的热键;
键盘模式切换装置,用于接收来自所述按键信息判断装置判断的信息,并控制USB系统中的固件切换工作模式;
键盘启动进行USB枚举时,所述键盘模式检测装置检测键盘是处于六键无冲模式或全键无冲模式下在进行工作,如果是工作在六键无冲模式,则按六键无冲模式的报告数据格式发送报告到主机,如果是工作在全键无冲模式,则按全键无冲模式的报告数据格式发送报告到主机,启动完成后,所述按键扫描装置扫描来自矩阵的按键信息,所述按键信息判断装置判断该按键信息是否来自于所述特定热键,若判断是来自所述热键,则将判断信息发送至所述键盘模式切换装置,所述键盘模式切换装置控制USB键盘中的固件通过类似键盘启动的方式重启,重新进行USB枚举来切换工作模式;若判断该按键信息不是来自于所述特定热键,则在当前模式下发送相应的按键信息到主机。
2.一种利用权利要求1所述系统对键盘实现全键无冲突的方法,其特征在于:所述系统包括USB设备,所述USB设备以报告的形式与上位主机通讯连接,所述报告的数据格式包括至少14个字节(byte),每个所述字节包括8个位(bit),每个位对应1个按键,通过设定的至少一个与固件对应的特定热键对键盘进行模式的切换,包括以下步骤:
(1)键盘模式检测装置检测键盘当前是处于六键无冲模式或全键无冲模式下;
(2)按键扫描装置扫描来自键盘上所有按键的按键信息;
(3)按键信息判断装置判断扫描到的信息是否来自特定的热键,若是所述特定热键的按键信息,则转为步骤(4),若不是所述特定热键的按键信息,则在当前模式下发送相应的按键信息到主机;
(4)键盘模式切换装置,用于接收来自所述按键信息判断装置判断的信息,并控制USB系统中的固件切换工作模式。
CN201310030152.1A 2013-01-28 2013-01-28 一种对键盘实现全键无冲突的系统及方法 Active CN103092358B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310030152.1A CN103092358B (zh) 2013-01-28 2013-01-28 一种对键盘实现全键无冲突的系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310030152.1A CN103092358B (zh) 2013-01-28 2013-01-28 一种对键盘实现全键无冲突的系统及方法

Publications (2)

Publication Number Publication Date
CN103092358A CN103092358A (zh) 2013-05-08
CN103092358B true CN103092358B (zh) 2015-09-23

Family

ID=48205029

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310030152.1A Active CN103092358B (zh) 2013-01-28 2013-01-28 一种对键盘实现全键无冲突的系统及方法

Country Status (1)

Country Link
CN (1) CN103092358B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015035609A1 (zh) * 2013-09-13 2015-03-19 深圳雷柏科技股份有限公司 一种键盘按键编码同时上传的方法和装置
CN105022633A (zh) * 2015-07-14 2015-11-04 深圳市金立通信设备有限公司 一种热键冲突的解决方法以及终端
CN109871133B (zh) * 2019-02-21 2022-08-09 深圳市志海和科技有限公司 一种键盘控制方法、装置、键盘、计算机可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101246436A (zh) * 2007-02-16 2008-08-20 北京三星通信技术研究有限公司 手写键盘输入冲突解决方法及使用该方法的输入装置
CN102053713A (zh) * 2009-11-06 2011-05-11 厦门华洋鑫电子科技有限公司 电脑键盘8键同击不冲突的实现方法
CN202189321U (zh) * 2011-06-30 2012-04-11 长城信息产业股份有限公司 一种无键位冲突键盘

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101246436A (zh) * 2007-02-16 2008-08-20 北京三星通信技术研究有限公司 手写键盘输入冲突解决方法及使用该方法的输入装置
CN102053713A (zh) * 2009-11-06 2011-05-11 厦门华洋鑫电子科技有限公司 电脑键盘8键同击不冲突的实现方法
CN202189321U (zh) * 2011-06-30 2012-04-11 长城信息产业股份有限公司 一种无键位冲突键盘

Also Published As

Publication number Publication date
CN103092358A (zh) 2013-05-08

Similar Documents

Publication Publication Date Title
CN101984392A (zh) 一种模拟硬按键的操作方法及触摸屏终端
CN102708001B (zh) Linux嵌入式设备及其用户模式与工程模式切换的方法
CN103092358B (zh) 一种对键盘实现全键无冲突的系统及方法
CN104731741A (zh) 热插拔的实现方法和系统
CN101377761A (zh) 热插拔设备移除装置和移除方法
CN202150089U (zh) 一种盲文点字转换装置
CN102375545A (zh) 具有模式切换功能的键盘
CN101359308A (zh) 键盘损坏自修复方法
CN102999092A (zh) 具有触控板的电子装置
CN214202352U (zh) 基于龙芯平台的终端
CN202018635U (zh) 一种kvm中实现ps/2信号切换的装置
CN213122978U (zh) 一种可快速升级与功能扩展的双主板结构及电子设备
CN212586852U (zh) 一种模拟鼠标移动的装置
CN207249662U (zh) 自适应usb同步器
CN202166965U (zh) 用于笔记型计算机的双用嵌入式蓝牙键盘
CN201326068Y (zh) 针织横机感应式操作头
CN102109904B (zh) 一种自动切换的双面键盘及其自动切换方法
CN203204635U (zh) 数码随机分布式密码输入器
CN202710685U (zh) 一种电容屏综合测试电路
CN107346180A (zh) 一种基于单片机技术的ps2计算机键盘接口设计
CN205384577U (zh) 一种计算机外接多功能拼接键盘
CN201886461U (zh) 可检测不同规格的主机板的测试卡
CN106886291A (zh) 一种计算机外接多功能拼接键盘
CN202230410U (zh) 具有触控板的电子装置
CN2674529Y (zh) 一种指纹识别键盘

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant