Saya ingin mengembangkan driver keyboard saya sendiri ke keypad saya sendiri. Saya harus menggunakan GPIO untuk mengidentifikasi Acara Utama dan menggunakan I2c untuk mendapatkan kode pindaian. Saya akan mengembangkan driver seperti ini.

#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
}

Saya perlu mengembangkan antarmuka dan harus menangani operasi berikut

  Di keypad saya, cetak sebagai "1abc" pada [KEY1].
  1. Saat menekan tombol, tampilkan Karakter 1 apa adanya -> "1"
  2. Kombinasi tombol khusus digunakan untuk memasukkan 3 karakter lainnya,
     mis.
          Operasi input tombol sebagai berikut;

          KEY1 (tekan langsung) akan menampilkan "1"
          F1 + KEY1 (tekan simultan) harus menampilkan "a"
          F2 + KEY1 (tekan simultan) akan menampilkan "b"
          F3 + KEY1 (tekan simultan) akan menampilkan "c"

Masalah saya adalah bagaimana haruskah saya mengembangkan antarmuka ini?

coolmadu
sumber