Re:Jak posilat data PS/2 klavesnici?

tropikhajma na seznam.cz tropikhajma na seznam.cz
Pátek Prosinec 1 15:15:12 CET 2006


> Je v linuxu nejaka moznost, jak poslat data do ps/2 klavesnice?
> Tj. bez nutnosti vlastniho zasahu do jadra?

já jsem to kdysi pro testování udělal vytvořením vlastního jadernýho modulu, pro úsporu místa vynechávám tu hromadu #include

jedinej problém je, že strašně záleží na tom, jak je to implementovaný na motherboardu, některý chipy pouštěj do klávesnice jenom něco


#define KEYBOARD_IRQ 1
#define KBD_STATUS_REG 0x64
#define KBD_CNTL_REG 0x64
#define KBD_DATA_REG 0x60

#define kbd_read_input() inb(KBD_DATA_REG)
#define kbd_read_status() inb(KBD_STATUS_REG)
#define kbd_write_output(val) outb(val, KBD_DATA_REG)
#define kbd_write_command(val) outb(val, KBD_CNTL_REG)

MODULE_DESCRIPTION("My kernel module");
MODULE_AUTHOR("tropikhajma (tropikhajma na seznam.cz)");
MODULE_LICENSE("$LICENSE$");

static int aaa_init_module(void)
{
        printk( KERN_DEBUG "Module aaa init\n" );

        unsigned char status = inb(KBD_DATA_REG);
        printk( KERN_INFO  "%c",status);
        printk( KERN_INFO  "\n");

        unsigned char bajt = 0;
        while (bajt < 25){
        outb(24, KBD_DATA_REG);
        msleep(1000);
        ++bajt;
        }
        return 0;
}

static void aaa_exit_module(void)
{
        printk( KERN_DEBUG "Module aaa exit\n" );
}

module_init(aaa_init_module);
module_exit(aaa_exit_module);


Další informace o konferenci Linux