85 lines
3.8 KiB
C
85 lines
3.8 KiB
C
|
#ifndef __KERN_DRIVER_KBDREG_H__
|
||
|
#define __KERN_DRIVER_KBDREG_H__
|
||
|
|
||
|
// Special keycodes
|
||
|
#define KEY_HOME 0xE0
|
||
|
#define KEY_END 0xE1
|
||
|
#define KEY_UP 0xE2
|
||
|
#define KEY_DN 0xE3
|
||
|
#define KEY_LF 0xE4
|
||
|
#define KEY_RT 0xE5
|
||
|
#define KEY_PGUP 0xE6
|
||
|
#define KEY_PGDN 0xE7
|
||
|
#define KEY_INS 0xE8
|
||
|
#define KEY_DEL 0xE9
|
||
|
|
||
|
|
||
|
/* This is i8042reg.h + kbdreg.h from NetBSD. */
|
||
|
|
||
|
#define KBSTATP 0x64 // kbd controller status port(I)
|
||
|
#define KBS_DIB 0x01 // kbd data in buffer
|
||
|
#define KBS_IBF 0x02 // kbd input buffer low
|
||
|
#define KBS_WARM 0x04 // kbd input buffer low
|
||
|
#define BS_OCMD 0x08 // kbd output buffer has command
|
||
|
#define KBS_NOSEC 0x10 // kbd security lock not engaged
|
||
|
#define KBS_TERR 0x20 // kbd transmission error
|
||
|
#define KBS_RERR 0x40 // kbd receive error
|
||
|
#define KBS_PERR 0x80 // kbd parity error
|
||
|
|
||
|
#define KBCMDP 0x64 // kbd controller port(O)
|
||
|
#define KBC_RAMREAD 0x20 // read from RAM
|
||
|
#define KBC_RAMWRITE 0x60 // write to RAM
|
||
|
#define KBC_AUXDISABLE 0xa7 // disable auxiliary port
|
||
|
#define KBC_AUXENABLE 0xa8 // enable auxiliary port
|
||
|
#define KBC_AUXTEST 0xa9 // test auxiliary port
|
||
|
#define KBC_KBDECHO 0xd2 // echo to keyboard port
|
||
|
#define KBC_AUXECHO 0xd3 // echo to auxiliary port
|
||
|
#define KBC_AUXWRITE 0xd4 // write to auxiliary port
|
||
|
#define KBC_SELFTEST 0xaa // start self-test
|
||
|
#define KBC_KBDTEST 0xab // test keyboard port
|
||
|
#define KBC_KBDDISABLE 0xad // disable keyboard port
|
||
|
#define KBC_KBDENABLE 0xae // enable keyboard port
|
||
|
#define KBC_PULSE0 0xfe // pulse output bit 0
|
||
|
#define KBC_PULSE1 0xfd // pulse output bit 1
|
||
|
#define KBC_PULSE2 0xfb // pulse output bit 2
|
||
|
#define KBC_PULSE3 0xf7 // pulse output bit 3
|
||
|
|
||
|
#define KBDATAP 0x60 // kbd data port(I)
|
||
|
#define KBOUTP 0x60 // kbd data port(O)
|
||
|
|
||
|
#define K_RDCMDBYTE 0x20
|
||
|
#define K_LDCMDBYTE 0x60
|
||
|
|
||
|
#define KC8_TRANS 0x40 // convert to old scan codes
|
||
|
#define KC8_MDISABLE 0x20 // disable mouse
|
||
|
#define KC8_KDISABLE 0x10 // disable keyboard
|
||
|
#define KC8_IGNSEC 0x08 // ignore security lock
|
||
|
#define KC8_CPU 0x04 // exit from protected mode reset
|
||
|
#define KC8_MENABLE 0x02 // enable mouse interrupt
|
||
|
#define KC8_KENABLE 0x01 // enable keyboard interrupt
|
||
|
#define CMDBYTE (KC8_TRANS|KC8_CPU|KC8_MENABLE|KC8_KENABLE)
|
||
|
|
||
|
/* keyboard commands */
|
||
|
#define KBC_RESET 0xFF // reset the keyboard
|
||
|
#define KBC_RESEND 0xFE // request the keyboard resend the last byte
|
||
|
#define KBC_SETDEFAULT 0xF6 // resets keyboard to its power-on defaults
|
||
|
#define KBC_DISABLE 0xF5 // as per KBC_SETDEFAULT, but also disable key scanning
|
||
|
#define KBC_ENABLE 0xF4 // enable key scanning
|
||
|
#define KBC_TYPEMATIC 0xF3 // set typematic rate and delay
|
||
|
#define KBC_SETTABLE 0xF0 // set scancode translation table
|
||
|
#define KBC_MODEIND 0xED // set mode indicators(i.e. LEDs)
|
||
|
#define KBC_ECHO 0xEE // request an echo from the keyboard
|
||
|
|
||
|
/* keyboard responses */
|
||
|
#define KBR_EXTENDED 0xE0 // extended key sequence
|
||
|
#define KBR_RESEND 0xFE // needs resend of command
|
||
|
#define KBR_ACK 0xFA // received a valid command
|
||
|
#define KBR_OVERRUN 0x00 // flooded
|
||
|
#define KBR_FAILURE 0xFD // diagnosic failure
|
||
|
#define KBR_BREAK 0xF0 // break code prefix - sent on key release
|
||
|
#define KBR_RSTDONE 0xAA // reset complete
|
||
|
#define KBR_ECHO 0xEE // echo response
|
||
|
|
||
|
#endif /* !__KERN_DRIVER_KBDREG_H__ */
|
||
|
|