Я хочу разработать свой собственный драйвер клавиатуры для своей клавиатуры. Я должен использовать 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
}
Мне нужно разработать интерфейс и обрабатывать следующие операции
На моей клавиатуре напечатайте как "1abc" на [KEY1].
1. Когда нажмете клавишу, отобразите первые символы как есть -> "1"
2. Специальные комбинации клавиш используются для ввода других 3 символов
Например:
ключевые операции ввода выполняются следующим образом;
KEY1 (прямое нажатие) должно отображать "1"
F1 + KEY1 (одновременное нажатие) должно отображать "а"
F2 + KEY1 (одновременное нажатие) должно отображать "b"
F3 + KEY1 (одновременное нажатие) должно отображать "с"
Моя проблема в том, как мне разработать этот интерфейс?