精华内容
下载资源
问答
  • 使用RawInput可以查看外设输入事件的具体信息,以区分键盘信息为例: 1.注册RawInput设备 注册主要RegisterRawInputDevices函数 使用方法如下: 使用RawInput可以区分外设输入事件的具体信息,以区分键盘信息...

    使用RawInput可以查看外设输入事件的具体信息,以区分键盘信息为例:

    1.注册RawInput设备

    注册主要是RegisterRawInputDevices函数

    使用方法如下:

    使用RawInput可以区分外设输入事件的具体信息,以区分键盘信息为例:

    BOOL MainWindow::RegisitKeyBord(HWND hwnd)
    {
        if ( NULL == hwnd )
        {
            return FALSE;
        }
    
        RAWINPUTDEVICE rid;  //设备信息
        rid.usUsagePage = 0x01;
        rid.usUsage = 0x06; //键盘   rid.usUsagePage = 0x01; rid.usUsage = 0x02; 为鼠标
        rid.dwFlags = RIDEV_INPUTSINK;
        rid.hwndTarget = hwnd;
    
        if ( !RegisterRawInputDevices( &rid, 1, sizeof(RAWINPUTDEVICE) ))
        {
            return FALSE;
        }
    
        return TRUE;
    }
    

    将窗口句柄和RawInput注册在一起,如果不指定窗口和Flag则只有焦点在窗体时有效

    具体参考Windows文档:

    https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-registerrawinputdevices

    https://docs.microsoft.com/en-us/windows/win32/api/winuser/ns-winuser-rawinputdevice

    2.重写nativeEvent函数

    由于Qt对Windows下消息循环进行封装,所以我们重写nativeEvent方法以获取消息循环, 注册成功之后,消息循环会开始接收WM_INPUT消息, 我们从中获取输入信息

    bool MainWindow::nativeEvent(const QByteArray &eventType, void *message, long *result)
    {
    
        MSG *pMSG = ( MSG *)message;
    
        switch (pMSG->message)
        {
        case WM_INPUT:
        {
            UINT dwSize;
    
            GetRawInputData((HRAWINPUT)pMSG->lParam, RID_INPUT, NULL, &dwSize, sizeof(RAWINPUTHEADER)); //先获取数据大小dwSize
    
            LPBYTE lpb = new BYTE[dwSize]; //根据大小 创建
    
            if (GetRawInputData((HRAWINPUT)pMSG->lParam, RID_INPUT, lpb, &dwSize, sizeof(RAWINPUTHEADER)) != dwSize) //获取消息信息
            {
                break;
            }
    
            RAWINPUT *raw = (RAWINPUT*)lpb;
    
            if ( raw->header.dwType == RIM_TYPEKEYBOARD && raw->data.keyboard.Flags == RI_KEY_MAKE ) //注释掉的部分 用来判断 按键是否是按下
            {
                // 消息处理函数
                qDebug() << "Key = " << raw->data.keyboard.VKey;
                qDebug() << "MakeCode = " << raw->data.keyboard.MakeCode;
                qDebug() << "Flags = " << raw->data.keyboard.Flags;
                qDebug() << "Message = " << raw->data.keyboard.Message;
                qDebug() << "ExtraInformation = " << raw->data.keyboard.ExtraInformation;
    
    
                qDebug() << "ID = " <<raw->header.hDevice;
            }
    
            delete[] lpb;
    
            return 0;
        }
        }
    
        return QMainWindow::nativeEvent(  eventType, message, result);
    }
    

    参考:

    https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getrawinputdata

    至此, 可以打印出获取到的键盘输入信息,每按下一个键就有信息输出

    展开全文
  • 有时候使用Input方法获取键盘键位,会不知道对应的是哪个 今天在这里给大家列举出来 值 对应 Backspace 退格 Delete Delete Tab TabTab Clear Clear Return 回车 Pause 暂停 Escape ESC Space 空格...

    一般使用的input类是用来获取鼠标和键盘的
    获取鼠标
    括号里写0、1、2,分别代表鼠标左键,鼠标右键,鼠标滑轮。
    Input.GetMouseButtonDown();//获取鼠标按下
    Input.GetMouseButtonUp();//获取鼠标抬起
    获取键盘
    Input.GetKey("键位名"或 例如KeyCode.A);//获取键位
    Input.GetKeyDown();//获取键位按下
    Input.GetKeyUp();//获取键位抬起

    有时候使用Input方法获取键盘键位,会不知道对应的是哪个
    今天在这里给大家列举出来

    值 对应键
    Backspace 退格键
    Delete Delete键
    Tab TabTab键
    Clear Clear键
    Return 回车键
    Pause 暂停键
    Escape ESC键
    Space 空格键
    Keypad0 小键盘0
    Keypad1 小键盘1
    Keypad2 小键盘2
    Keypad3 小键盘3
    Keypad4 小键盘4
    Keypad5 小键盘5
    Keypad6 小键盘6
    Keypad7 小键盘7
    Keypad8 小键盘8
    Keypad9 小键盘9
    KeypadPeriod 小键盘“.”
    KeypadDivide 小键盘“/”
    KeypadMultiply小键盘“*”
    KeypadMinus 小键盘“-”
    KeypadPlus 小键盘“+”
    KeypadEnter 小键盘“Enter”
    KeypadEquals 小键盘“=”
    UpArrow 方向键上
    DownArrow 方向键下
    RightArrow 方向键右
    LeftArrow 方向键左
    Insert Insert键
    Home Home键
    EndEnd键
    PageUp PageUp键
    PageDown PageDown键
    F1功能键F1
    F2功能键F2
    F3功能键F3
    F4功能键F4
    F5功能键F5
    F6功能键F6
    F7功能键F7
    F8 功能键F8
    F9 功能键F9
    F10 功能键F10
    F11 功能键F11
    F12 功能键F12
    F13 功能键F13
    F14 功能键F14
    F15 功能键F15
    Alpha0 按键0
    Alpha1 按键1
    Alpha2 按键2
    Alpha3 按键3
    Alpha4 按键4
    Alpha5 按键5
    Alpha6 按键6
    Alpha7 按键7
    Alpha8 按键7
    Alpha9 按键9
    Exclaim ‘!’键
    DoubleQuote双引号键
    Hash Hash键
    Dollar ‘$’键
    AmpersandAmpersand键
    Quote 单引号键
    LeftParen 左括号键
    RightParen右括号键
    Asterisk ‘ * ’键
    Plus ‘ +’键
    Comma ‘ , ’键
    Minus ‘ - ’键
    Period ‘ . ’键
    Slash ‘ / ’键
    Colon ‘ : ’键
    Semicolon‘ ; ’键
    Less ‘< ‘键
    Equals ‘ = ‘键
    Greater ‘ >‘键
    Question ‘ ? ’键
    At ‘@’键
    LeftBracket‘ [ ‘键
    Backslash ‘ \ ’键
    RightBracket‘ ] ’键
    Caret ‘ ^ ’键
    Underscore‘ _ ’键
    BackQuote‘ ` ’键
    A ‘a’键
    B ‘b’键
    C ‘c’键
    D ‘d’键
    E ‘e’键
    F ‘f’键
    G ‘g’键
    H ‘h’键
    I ‘i’键
    J ‘j’键
    K ‘k’键
    L ‘l’键
    M ‘m’键
    N ‘n’键
    O ‘o’键
    P ‘p’键
    Q ‘q’键
    R ‘r’键
    S ‘s’键
    T ‘t’键
    U ‘u’键
    V ‘v’键
    W ‘w’键
    X ‘x’键
    Y ‘y’键
    Z ‘z’键
    Numlock Numlock键
    Capslock 大小写锁定键
    ScrollLockScroll Lock键
    RightShift 右上档键
    LeftShift 左上档键
    RightControl右Ctrl键
    LeftControl左Ctrl键
    RightAlt 右Alt键
    LeftAlt 左Alt键
    LeftApple 左Apple键
    LeftWindows左Windows键
    RightApple右Apple键
    RightWindows右Windows键
    AltGr Alt Gr键
    Help Help键
    Print Print键
    SysReq Sys Req键
    Break Break键
    Mouse0 鼠标左键
    Mouse1 鼠标右键
    Mouse2 鼠标中键
    Mouse3 鼠标第3个按键
    Mouse4 鼠标第4个按键
    Mouse5 鼠标第5个按键
    Mouse6 鼠标第6个按键
    JoystickButton0手柄按键0
    JoystickButton1手柄按键1
    JoystickButton2手柄按键2
    JoystickButton3手柄按键3
    JoystickButton4手柄按键4
    JoystickButton5手柄按键5
    JoystickButton6手柄按键6
    JoystickButton7手柄按键7
    JoystickButton8手柄按键8
    JoystickButton9手柄按键9
    JoystickButton10手柄按键10
    JoystickButton11手柄按键11
    JoystickButton12手柄按键12
    JoystickButton13手柄按键13
    JoystickButton14手柄按键14
    JoystickButton15手柄按键15
    JoystickButton16手柄按键16
    JoystickButton17手柄按键17
    JoystickButton18手柄按键18
    JoystickButton19手柄按键19
    Joystick1Button0第一个手柄按键0
    Joystick1Button1第一个手柄按键1
    Joystick1Button2第一个手柄按键2
    Joystick1Button3第一个手柄按键3
    Joystick1Button4第一个手柄按键4
    Joystick1Button5第一个手柄按键5
    Joystick1Button6第一个手柄按键6
    Joystick1Button7第一个手柄按键7
    Joystick1Button8第一个手柄按键8
    Joystick1Button9第一个手柄按键9
    Joystick1Button10第一个手柄按键10
    Joystick1Button11第一个手柄按键11
    Joystick1Button12第一个手柄按键12
    Joystick1Button13第一个手柄按键13
    Joystick1Button14第一个手柄按键14
    Joystick1Button15第一个手柄按键15
    Joystick1Button16第一个手柄按键16
    Joystick1Button17第一个手柄按键17
    Joystick1Button18第一个手柄按键18
    Joystick1Button19第一个手柄按键19
    Joystick2Button0第二个手柄按键0
    Joystick2Button1第二个手柄按键1
    Joystick2Button2第二个手柄按键2
    Joystick2Button3第二个手柄按键3
    Joystick2Button4第二个手柄按键4
    Joystick2Button5第二个手柄按键5
    Joystick2Button6第二个手柄按键6
    Joystick2Button7第二个手柄按键7
    Joystick2Button8第二个手柄按键8
    Joystick2Button9第二个手柄按键9
    Joystick2Button10第二个手柄按键10
    Joystick2Button11第二个手柄按键11
    Joystick2Button12第二个手柄按键12
    Joystick2Button13第二个手柄按键13
    Joystick2Button14第二个手柄按键14
    Joystick2Button15第二个手柄按键15
    Joystick2Button16第二个手柄按键16
    Joystick2Button17第二个手柄按键17
    Joystick2Button18第二个手柄按键18
    Joystick2Button19第二个手柄按键19
    Joystick3Button0第三个手柄按键0
    Joystick3Button1第三个手柄按键1
    Joystick3Button2第三个手柄按键2
    Joystick3Button3第三个手柄按键3
    Joystick3Button4第三个手柄按键4
    Joystick3Button5第三个手柄按键5
    Joystick3Button6第三个手柄按键6
    Joystick3Button7第三个手柄按键7
    Joystick3Button8第三个手柄按键8
    Joystick3Button9第三个手柄按键9
    Joystick3Button10第三个手柄按键10
    Joystick3Button11第三个手柄按键11
    Joystick3Button12第三个手柄按键12
    Joystick3Button13第三个手柄按键13
    Joystick3Button14第三个手柄按键14
    Joystick3Button15第三个手柄按键15
    Joystick3Button16第三个手柄按键16
    Joystick3Button17第三个手柄按键17
    Joystick3Button18第三个手柄按键18
    Joystick3Button19第三个手柄按键19

    这里有各种键位欢迎大家观看!

    展开全文
  • 要实现的效果:类似桌面打开记事本,按下键盘后有输入,按住按键不放的话就连续输入。 环境:嵌入式Linux系统,键盘有...QT里面继承keyPressEvent()即可判断按下的是哪个键。 要注意的有一些,说说心得: 1

    要实现的效果:类似桌面打开记事本,按下键盘后有输入,按住按键不放的话就连续输入。

    环境:嵌入式Linux系统,键盘有GPIO扫描实现,模拟成标准键盘,界面用QT4的LineEdit显示。

     

    键盘的驱动我就不多说了,参考input/keyboard的omap方面代码即可;QT里面继承keyPressEvent()即可判断按下的是哪个键。

    要注意的有一些,说说心得:

    1、键盘要注意防抖动

    2、如果确认有键盘就input_report_key(&va->kb_dev,key_got,1);然后重复扫描,这一步很重要,重复扫描的时间要小于33ms。为什么?看下input.c就知道了,input.c的input_repeat_key会隔rep[REP_PERIOD]调用一次,但是如果我们在驱动里释放了按键,则input_repeat_key不会再调用(此函数前面有判断)。

    因此扫描的时间一定要少于rep[REP_PERIOD],不这样做的话,就会出现你本来想按一次按键,结果多了几个尾巴。

    例如,你确认按键后200ms再开始扫描是否还按下,则input_repeat_key已经调用好几次了,所以多了几个尾巴,这样就不是只按下一次键盘了。

    3、千万不要因手按键盘的重复时间的固定思路迷惑了程序的编写。只要驱动指定了EV_REP,则驱动上层会自动启动上述的timer,本驱动只要判断按键是否抬起然后input_report_key(x,x,0);即可!

     

    不对之处欢迎指正!

    转自:blog.csdn.net/lanmanck

    展开全文
  • /dev/input/event0 键盘输入

    千次阅读 2015-05-14 10:07:32
    在linux中读取键盘输入也是通过...如/dev/input/event0就对应的键盘输入,可是键盘一般是有编码的,读取的按键并不只对应一个码,而是对应一串,需要读入后,进行解析来决定当前按下的是哪个按键。 下面是简单的测试:

    在linux中读取键盘输入也是通过设备文件进行的,

    如/dev/input/event0就对应的键盘输入,可是键盘一般是有编码的,读取的按键并不只对应一个码,而是对应一串,需要读入后,进行解析来决定当前按下的是哪个按键。

    下面是简单的测试:


    展开全文
  • chkb ... 该ID应该足以告诉您哪个键盘是您的键盘。 如果没有,则可以对sudo cat /dev/input/by-id/file进行sudo cat /dev/input/by-id/file并查看您在键盘上打字时是否可以看到数据。 为避免使用sudo
  • input之按键输入

    2018-04-14 12:12:00
    通过直接操作驱动来监控键盘,只要程序一旦在后台启动,无论在任何页面...)打印操作,并按下键盘哪个出现的不是回写(乱码状态),就是键盘挂载点,我的event1;鼠标event2;  方法二:在命令行中输入 cat ...
  • android键盘输入读取

    2019-09-22 08:53:52
    android键盘输入读取  监控android键盘输入方式有...第一种方法缺陷是当有多个键盘设备时候无法区分是哪个键盘输入的,第二种方法是需要有该文件的读写权限。 调试方法 进入adb模式 adb shell 输入以下指令监控键盘...
  • Linux键盘输入读取

    2020-12-14 22:42:13
    那么哪个是键盘?继续使用指令 cat /proc/bus/input/devices 查看各个设备的描述,通过关键字 keyboard 可以定位到 event1 2. 读取按键 按照linux “一切皆文件” 的特点,读取按键只需三步,open、read和解析,...
  • C# 模拟键盘操作

    2018-08-02 17:24:42
    这是因为驱动程序不知道键盘是哪个设备ID,因此它必须等待接收击以从击中推断出设备ID。 总之,在发送击之前,请始终按键盘一次。点按任意。然后你可以发送击。这不适用于接收击,因为通过接收击,您...
  • vue中键盘事件的处理

    万次阅读 2017-10-04 21:37:06
    2、keyup键盘抬起 不错说明:如果要确定用户按下是哪个键盘需要使用keyCode===?来确认键盘 二、在vue中键盘事件一般的使用 1、在模板中定义事件名称,并传递$event作为参数<input type="text" placeholder="请输入书名...
  • /dev目录下的设备文件,/sys目录下的属性文件(2)input子系统用的/dev目录下的设备文件,具体一般都在 /dev/input/eventn(3)用cat命令来确认某个设备文件名对应哪个具体设备。实测的键盘是event1,而鼠标even...
  • 实现的主要功能:判断按下了哪个按键,可以实现部分内容输入文本框不...判断键盘按下的是哪个键 <script> window.onload = function () { /** * 键盘事件不能绑定div,一般绑定给容易获取焦点的对象 eg:input
  • 实例 显示按了哪个键: $(“input”).keydown(function(event){ $(“div”).html(“Key: ” + event.which); }); 亲自试一试 定义和用法 which 属性指示按了哪个键或按钮。 语法 event.which参数 描述 event 必需。...
  • Unity3D入门 第贰章 :响应键盘事件

    千次阅读 2013-06-02 17:35:43
    这章内容认识一下Input类,监测键盘是否被摁下。 这个很帅的Input干神马的呢? 它其实输入系统的接口。使用这个类能够知道哪个键被按下了,以及访问移动设备的多点触摸或者加速感应的数据。 接下来,我们...
  • input子系统

    2019-01-30 23:07:13
    同样的输入子系统也需要输入驱动的框架,好来辨认应用程序要打开的是哪个输入驱动 比如: 鼠标、键盘、游戏手柄等等这些都属于输入设备;这些输入设备的驱动都是通过输入子系统来实现的(当然,这些设备也依赖于usb子...
  • 移动 ...移动哪个值赋值,就向哪个轴移动,而旋转哪个轴进行旋转就赋值给哪个轴 float h= Input.GetAxis("Horizontal")*Time.deltaTime*speed; float v=Input.GetAxis("Vertical")*Tim...
  • 删除C:\Users\Admin\AppData\Roaming\Unity路径可以解决 没有来得及排查具体是哪个文件导致的 卸载重装没有用 删除projectsetting的InputManager也没有用
  • 有一些需求,html 页面上的input 框只允许输入...这个时候,就要获取键盘每次按键时候的 keyCode, 来判断按的哪个键(数字键还是字符键,还是组合键), 然后加入我们的需求对应的处理逻辑。 -----------------...
  • 键值

    2021-03-26 15:25:04
    一般使用的input类是用来获取鼠标和键盘的 获取鼠标 括号里写0、1、2,分别代表鼠标左键,鼠标右键,鼠标滑轮。 Input.GetMouseButtonDown();...有时候使用Input方法获取键盘键位,会不知道对应的是哪个
  • 移动符号 创建一个名为input_handlers.py的文件,这段代码实现了一些简单的键盘输入功能。 import tcod as libtcod ...以下的条件语句都判断摁下了哪个键,依次上、下、左、右、回车加Alt、Esc #...
  • 任天堂Wii等设备可以通过键码知道用户按下了哪个键 复合事件 复合事件DOM3级事件新添加的一类事件,用于处理IME的输入序列。IME(Input Method Editor,输入法编辑器)可以让用户输入在物理键盘上找不到的字符,...
  • 首先我们要明白一般情况下,内核提供的鼠标和触摸屏的设备文件往往存放在 /dev/input 文件夹中,设备文件名往往even开头的,...1、使用cat命令逐一查看哪个是鼠标和键盘设备:[root@x210ii /dev/input]#ls event0 ev
  • 首先想到的就是keyup, keydown, keypress, input事件,看看哪个事件可以在用户输入拼音的时候就捕获。在网上搜了一下,最终解决方案: 捕获keyup事件 参考: 使用中文输入法时对键盘事件
  • 在某些情况下我们可能需要自己来模拟键盘、鼠标设备输入,而对于通过sendevent方式模拟触摸屏事件遇到一个比较大的问题:当设备非常多的情况下,你无法逐个确认哪个触摸屏对应的设备,经过在多台不同品牌手机上...
  • javaIO操作(上)

    2018-09-09 14:17:07
    IO原理 • 程序运行在内存和CPU所...们管这样的操作叫IO流,I是input(输入),Ooutput(输出)。 • IO流需要三步操作 • 第一步:定位,我们程序要知道操作的东西在哪个地方 • 第二步:建立管道 • 第三步:操作管道 ...
  • 2 扫描矩阵键盘(由于液晶的RS信号和矩阵键盘的一个引脚冲突 因此4*4键盘的第一列不用 按下会对液晶的显示产生影响) 如果按下第一个 则显示 "ready to dail" 此时将从 VCC连接到P10---P14 如果哪个引脚有高电平则...

空空如也

空空如也

1 2
收藏数 40
精华内容 16
关键字:

键盘input是哪个键