linux - 我自己的 linux Chorded 键盘驱动程序和我的嵌入式应用程序的接口(interface)

标签 linux linux-kernel linux-device-driver embedded-linux

我想为自己的键盘开发自己的键盘驱动程序。我必须使用 GPIO 来识别关键事件并使用 I2c 来获取扫描码。 我打算开发这样的键盘驱动程序。

#include <linux/gpio.h> 
#include <linux/interrupt.h>

#define GPIO 1 //gpio PIN
...
if(gpio_request(GPIO, "Description")){
    Exception
}

gpio_direction_input(GPIO);
...
int irq = 0;
if((irq = gpio_to_irq(GPIO)) < 0 ){
    Exception
}
…

int init_module(){
    int result = request_irq(GPIO, handler_func, IRQF_TRIGGER_LOW,"Description", "Device id");
    if(result){
        Exception
    }
}

void handler_func(...){
    //get scan code via i2c
}

我需要开发一个接口(interface),需要处理以下操作

在我的键盘中,在 [KEY1] 上打印为“1abc”。
1. 当按下 键时,显示第一个字符 -> "1"
2.特殊组合键用于输入其他3个字符
例如:
按键输入操作如下;

KEY1(直接按下)应显示“1”
F1 + KEY1(同时按下)应显示“a”
F2 + KEY1(同时按下)应显示“b”
F3 + KEY1(同时按下)应显示“c”

我的问题是我应该如何开发这个接口(interface)?

最佳答案

您最好遵循 Analog Devices 的键盘和 GPIO Linux 驱动程序。我将为您提供一些 GPIO 驱动程序的链接。

此驱动程序包含这些功能

  • 可配置的键盘大小矩阵(行、列)。
  • 支持切换事件。
  • 自动按键重复。
  • 锁定/解锁关键功能。

ADP5588 Keyboard - GPIO Linux Driver

ADP5589 Keyboard - GPIO Linux Driver

关于linux - 我自己的 linux Chorded 键盘驱动程序和我的嵌入式应用程序的接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20186330/

相关文章:

Linux .profile 覆盖其他 bash 命令

linux - 在同一行打印输出

linux - 使用 automake 设置每个文件的标志

shell - 可以运行两个 anaconda 实例同时安装两个东西吗?

linux - 如何查看内核中特定模块的变更日志

linux - 为什么 sk_buff 没有 spin_lock 或 mutex

linux - mmap 返回带有 shm_open 文件对象的 ENOMEM

python - 如何使用 Python 和 Linux 捕获 HID 输入?

linux - 如何在Linux内核中只创建一个模块?

linux - 为什么 i2cdetect 总是在我的嵌入式 Linux 中的 RTC 上给出 UU