BXE: min->MIN, plus an spatch
[akaros.git] / kern / arch / x86 / kbdreg.h
1 #ifndef ROS_KBDREG_H
2 #define ROS_KBDREG_H
3
4 // Special keycodes
5 #define KEY_HOME        0xE0
6 #define KEY_END         0xE1
7 #define KEY_UP          0xE2
8 #define KEY_DN          0xE3
9 #define KEY_LF          0xE4
10 #define KEY_RT          0xE5
11 #define KEY_PGUP        0xE6
12 #define KEY_PGDN        0xE7
13 #define KEY_INS         0xE8
14 #define KEY_DEL         0xE9
15
16
17 /* This is i8042reg.h + kbdreg.h from NetBSD. */
18
19 #define KBSTATP         0x64    /* kbd controller status port(I) */
20 #define  KBS_DIB        0x01    /* kbd data in buffer */
21 #define  KBS_IBF        0x02    /* kbd input buffer low */
22 #define  KBS_WARM       0x04    /* kbd input buffer low */
23 #define  KBS_OCMD       0x08    /* kbd output buffer has command */
24 #define  KBS_NOSEC      0x10    /* kbd security lock not engaged */
25 #define  KBS_TERR       0x20    /* kbd transmission error */
26 #define  KBS_RERR       0x40    /* kbd receive error */
27 #define  KBS_PERR       0x80    /* kbd parity error */
28
29 #define KBCMDP          0x64    /* kbd controller port(O) */
30 #define  KBC_RAMREAD    0x20    /* read from RAM */
31 #define  KBC_RAMWRITE   0x60    /* write to RAM */
32 #define  KBC_AUXDISABLE 0xa7    /* disable auxiliary port */
33 #define  KBC_AUXENABLE  0xa8    /* enable auxiliary port */
34 #define  KBC_AUXTEST    0xa9    /* test auxiliary port */
35 #define  KBC_KBDECHO    0xd2    /* echo to keyboard port */
36 #define  KBC_AUXECHO    0xd3    /* echo to auxiliary port */
37 #define  KBC_AUXWRITE   0xd4    /* write to auxiliary port */
38 #define  KBC_SELFTEST   0xaa    /* start self-test */
39 #define  KBC_KBDTEST    0xab    /* test keyboard port */
40 #define  KBC_KBDDISABLE 0xad    /* disable keyboard port */
41 #define  KBC_KBDENABLE  0xae    /* enable keyboard port */
42 #define  KBC_PULSE0     0xfe    /* pulse output bit 0 */
43 #define  KBC_PULSE1     0xfd    /* pulse output bit 1 */
44 #define  KBC_PULSE2     0xfb    /* pulse output bit 2 */
45 #define  KBC_PULSE3     0xf7    /* pulse output bit 3 */
46
47 #define KBDATAP         0x60    /* kbd data port(I) */
48 #define KBOUTP          0x60    /* kbd data port(O) */
49
50 #define K_RDCMDBYTE     0x20
51 #define K_LDCMDBYTE     0x60
52
53 #define KC8_TRANS       0x40    /* convert to old scan codes */
54 #define KC8_MDISABLE    0x20    /* disable mouse */
55 #define KC8_KDISABLE    0x10    /* disable keyboard */
56 #define KC8_IGNSEC      0x08    /* ignore security lock */
57 #define KC8_CPU         0x04    /* exit from protected mode reset */
58 #define KC8_MENABLE     0x02    /* enable mouse interrupt */
59 #define KC8_KENABLE     0x01    /* enable keyboard interrupt */
60 #define CMDBYTE         (KC8_TRANS|KC8_CPU|KC8_MENABLE|KC8_KENABLE)
61
62 /* keyboard commands */
63 #define KBC_RESET       0xFF    /* reset the keyboard */
64 #define KBC_RESEND      0xFE    /* request the keyboard resend the last byte */
65 #define KBC_SETDEFAULT  0xF6    /* resets keyboard to its power-on defaults */
66 #define KBC_DISABLE     0xF5    /* as per KBC_SETDEFAULT, but also disable key scanning */
67 #define KBC_ENABLE      0xF4    /* enable key scanning */
68 #define KBC_TYPEMATIC   0xF3    /* set typematic rate and delay */
69 #define KBC_SETTABLE    0xF0    /* set scancode translation table */
70 #define KBC_MODEIND     0xED    /* set mode indicators(i.e. LEDs) */
71 #define KBC_ECHO        0xEE    /* request an echo from the keyboard */
72
73 /* keyboard responses */
74 #define KBR_EXTENDED    0xE0    /* extended key sequence */
75 #define KBR_RESEND      0xFE    /* needs resend of command */
76 #define KBR_ACK         0xFA    /* received a valid command */
77 #define KBR_OVERRUN     0x00    /* flooded */
78 #define KBR_FAILURE     0xFD    /* diagnosic failure */
79 #define KBR_BREAK       0xF0    /* break code prefix - sent on key release */
80 #define KBR_RSTDONE     0xAA    /* reset complete */
81 #define KBR_ECHO        0xEE    /* echo response */
82
83 #endif /* !ROS_KBDREG_H */