linux - 如何判断两个按键是否同时按下?

标签 linux linux-kernel linux-device-driver

我现在正在编写一个键盘驱动程序模块。我想同时按shift键和其他键将小写更改为大写。我需要解析扫描码吗?请提供一些提示,我非常感谢示例代码。

最佳答案

实际上,键盘的每个键有两个不同的关联 - 按下(键)时的事件和释放(键)时的不同事件。您只需要使用这些事件即可。

对于您的问题,您必须执行以下操作(以 0 表示按下,1 表示释放):

/*eventA for shift key*/
if (eventA == 0)
{
    Flag = PRESSED;
}
else
{
    Flag = RELEASED;
}

...

/*eventX for any character key*/
if (eventX == 0 )
{
    if (Flag == PRESSED)
        toupper(...)


    //print the character

}

关于linux - 如何判断两个按键是否同时按下?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54599980/

相关文章:

linux - 在Linux中如何实现镜像复制?

linux - 安装 Linux 内核产生 "gzip: stdout: No space left on device"错误

linux - 进程会在抢占式内核中失去唤醒机会吗?

linux - uinput 文档

linux - 我应该如何混合 RCU 阅读器和更新程序代码?

linux-kernel - 从 FIQ 处理程序调用 Linux C 代码时出现问题

linux - Windows/Linux 中没有额外硬件的虚拟 COM

c - 2个程序从端口获取相同的udp数据包

linux - 无法在自定义 Linux 环境中安装 gcc

linux-kernel - cdev_add() 实际上是做什么的?在向内核注册设备方面