1 1.3 isaki /* $NetBSD: kbdmap.h,v 1.3 2024/01/07 07:58:34 isaki Exp $ */ 2 1.2 perry 3 1.1 oki #define NUL 0 4 1.1 oki #define SOH 1 5 1.1 oki #define STX 2 6 1.1 oki #define ETX 3 7 1.1 oki #define EOT 4 8 1.1 oki #define ENQ 5 9 1.1 oki #define ACK 6 10 1.1 oki #define BEL 7 11 1.1 oki #define BS 8 12 1.1 oki #define HT 9 13 1.1 oki #define LF 10 14 1.1 oki #define VT 11 15 1.1 oki #define FF 12 16 1.1 oki #define CR 13 17 1.1 oki #define SO 14 18 1.1 oki #define SI 15 19 1.1 oki #define DLE 16 20 1.1 oki #define DC1 17 21 1.1 oki #define DC2 18 22 1.1 oki #define DC3 19 23 1.1 oki #define DC4 20 24 1.1 oki #define NAK 21 25 1.1 oki #define SYN 22 26 1.1 oki #define ETB 23 27 1.1 oki #define CAN 24 28 1.1 oki #define EM 25 29 1.1 oki #define SUB 26 30 1.1 oki #define ESC 27 31 1.1 oki #define FS 28 32 1.1 oki #define GS 29 33 1.1 oki #define RS 30 34 1.1 oki #define US 31 35 1.1 oki #define DEL 127 36 1.1 oki #define IND 132 37 1.1 oki #define NEL 133 38 1.1 oki #define SSA 134 39 1.1 oki #define ESA 135 40 1.1 oki #define HTS 136 41 1.1 oki #define HTJ 137 42 1.1 oki #define VTS 138 43 1.1 oki #define PLD 139 44 1.1 oki #define PLU 140 45 1.1 oki #define RI 141 46 1.1 oki #define SS2 142 47 1.1 oki #define SS3 143 48 1.1 oki #define DCS 144 49 1.1 oki #define PU1 145 50 1.1 oki #define PU2 146 51 1.1 oki #define STS 147 52 1.1 oki #define CCH 148 53 1.1 oki #define MW 149 54 1.1 oki #define SPA 150 55 1.1 oki #define EPA 151 56 1.1 oki #define CSI 155 57 1.1 oki #define ST 156 58 1.1 oki #define OSC 157 59 1.1 oki #define PM 158 60 1.1 oki #define APC 159 61 1.1 oki 62 1.1 oki 63 1.1 oki /* a normal Amiga keyboard has 0x60 `normal' keys, plus modifier keys that 64 1.1 oki don't appear in the keymap */ 65 1.1 oki #define KBD_NUM_KEYS 0x6d 66 1.1 oki 67 1.1 oki /* size of string table */ 68 1.1 oki #define KBD_STRTAB_SIZE 255 69 1.1 oki 70 1.1 oki /* for dead keys, index into acctable */ 71 1.1 oki #define KBD_ACC_GRAVE 0 72 1.1 oki #define KBD_ACC_ACUTE 1 73 1.1 oki #define KBD_ACC_CIRC 2 74 1.1 oki #define KBD_ACC_TILDE 3 75 1.1 oki #define KBD_ACC_DIER 4 76 1.1 oki #define KBD_NUM_ACC 5 77 1.1 oki 78 1.1 oki 79 1.1 oki struct key { 80 1.1 oki unsigned char mode; /* see possible values below */ 81 1.1 oki unsigned char code; 82 1.1 oki }; 83 1.1 oki 84 1.1 oki #define KBD_MODE_STRING (1<<0) /* code is index into strings[] */ 85 1.1 oki #define KBD_MODE_DEAD (1<<1) /* acc-index in upper nibble, code = plain acc */ 86 1.1 oki #define KBD_MODE_CAPS (1<<2) /* key is capsable. Only used in non-shifted maps */ 87 1.1 oki #define KBD_MODE_KPAD (1<<3) /* key is on keypad */ 88 1.1 oki #define KBD_MODE_GRAVE (KBD_ACC_GRAVE << 4) 89 1.1 oki #define KBD_MODE_ACUTE (KBD_ACC_ACUTE << 4) 90 1.1 oki #define KBD_MODE_CIRC (KBD_ACC_CIRC << 4) 91 1.1 oki #define KBD_MODE_TILDE (KBD_ACC_TILDE << 4) 92 1.1 oki #define KBD_MODE_DIER (KBD_ACC_DIER << 4) 93 1.1 oki #define KBD_MODE_ACCENT(m) ((m) >> 4) /* get accent from mode */ 94 1.1 oki #define KBD_MODE_ACCMASK (0xf0) 95 1.1 oki 96 1.1 oki struct kbdmap { 97 1.3 isaki struct key keys[KBD_NUM_KEYS], 98 1.3 isaki shift_keys[KBD_NUM_KEYS], 99 1.3 isaki alt_keys[KBD_NUM_KEYS], 100 1.1 oki alt_shift_keys[KBD_NUM_KEYS]; 101 1.1 oki unsigned char strings[KBD_STRTAB_SIZE]; 102 1.1 oki }; 103 1.1 oki 104 1.1 oki 105 1.1 oki #ifdef KERNEL 106 1.1 oki /* XXX: ITE interface */ 107 1.1 oki extern struct kbdmap kbdmap, ascii_kbdmap; 108 1.1 oki extern unsigned char acctable[KBD_NUM_ACC][64]; 109 1.1 oki #endif 110