1

Я хочу разработать свой собственный драйвер клавиатуры для своей клавиатуры. Я должен использовать 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 (одновременное нажатие) должно отображать "с"

Моя проблема в том, как мне разработать этот интерфейс?

0