Home | History | Annotate | Line # | Download | only in dev
      1  1.6    isaki /*	$NetBSD: kbdmap.c.ascii,v 1.6 2024/01/07 07:58:33 isaki Exp $	*/
      2  1.1      oki /* from: arch/amiga/dev/kbdmap.c */
      3  1.1      oki /* modified for X680x0 by Masaru Oki */
      4  1.1      oki 
      5  1.1      oki #include "kbdmap.h"
      6  1.1      oki 
      7  1.3    isaki /* define a default keymap. This can be changed by keyboard ioctl's
      8  1.1      oki    (later at least..) */
      9  1.1      oki 
     10  1.1      oki /* mode shortcuts: */
     11  1.1      oki #define	S KBD_MODE_STRING
     12  1.1      oki #define DG (KBD_MODE_DEAD | KBD_MODE_GRAVE)
     13  1.1      oki #define DA (KBD_MODE_DEAD | KBD_MODE_ACUTE)
     14  1.1      oki #define DC (KBD_MODE_DEAD | KBD_MODE_CIRC)
     15  1.1      oki #define DT (KBD_MODE_DEAD | KBD_MODE_TILDE)
     16  1.1      oki #define DD (KBD_MODE_DEAD | KBD_MODE_DIER)
     17  1.1      oki #define C KBD_MODE_CAPS
     18  1.1      oki #define K KBD_MODE_KPAD
     19  1.1      oki 
     20  1.1      oki struct kbdmap kbdmap;
     21  1.5  tsutsui const struct kbdmap ascii_kbdmap = {
     22  1.1      oki 	/* normal map */
     23  1.1      oki 	{
     24  1.1      oki 	   0, 0,	/* 0x00 */
     25  1.1      oki 	   0, ESC,
     26  1.1      oki 	   0, '1',
     27  1.1      oki 	   0, '2',
     28  1.1      oki 	   0, '3',
     29  1.1      oki 	   0, '4',
     30  1.1      oki 	   0, '5',
     31  1.1      oki 	   0, '6',
     32  1.1      oki 	   0, '7',	/* 0x08 */
     33  1.1      oki 	   0, '8',
     34  1.1      oki 	   0, '9',
     35  1.1      oki 	   0, '0',
     36  1.1      oki 	   0, '-',
     37  1.1      oki 	   0, '=',
     38  1.1      oki 	   0, '\\',
     39  1.1      oki 	   0, DEL,	/* really BS, DEL & BS swapped */
     40  1.1      oki 	   0, '\t',	/* 0x10 */
     41  1.1      oki 	   C, 'q',
     42  1.1      oki 	   C, 'w',
     43  1.1      oki 	   C, 'e',
     44  1.1      oki 	   C, 'r',
     45  1.1      oki 	   C, 't',
     46  1.1      oki 	   C, 'y',
     47  1.1      oki 	   C, 'u',
     48  1.1      oki 	   C, 'i',	/* 0x18 */
     49  1.1      oki 	   C, 'o',
     50  1.1      oki 	   C, 'p',
     51  1.1      oki 	   0, '[',
     52  1.1      oki 	   0, ']',
     53  1.1      oki 	   0, '\r',	/* return */
     54  1.1      oki 	   C, 'a',
     55  1.1      oki 	   C, 's',
     56  1.1      oki 	   C, 'd',	/* 0x20 */
     57  1.1      oki 	   C, 'f',
     58  1.1      oki 	   C, 'g',
     59  1.1      oki 	   C, 'h',
     60  1.1      oki 	   C, 'j',
     61  1.1      oki 	   C, 'k',
     62  1.1      oki 	   C, 'l',
     63  1.1      oki 	   0, ';',
     64  1.1      oki 	   0, '\'',	/* 0x28 */
     65  1.1      oki 	   0, '`',
     66  1.1      oki 	   C, 'z',
     67  1.1      oki 	   C, 'x',
     68  1.1      oki 	   C, 'c',
     69  1.1      oki 	   C, 'v',
     70  1.1      oki 	   C, 'b',
     71  1.1      oki 	   C, 'n',
     72  1.1      oki 	   C, 'm',	/* 0x30 */
     73  1.1      oki 	   0, ',',
     74  1.1      oki 	   0, '.',
     75  1.1      oki 	   0, '/',
     76  1.1      oki 	   0, '_',
     77  1.1      oki 	   0, ' ',
     78  1.1      oki 	   0, 0,	/* HOME */
     79  1.1      oki 	   0, '\b',	/* really DEL, BS & DEL swapped */
     80  1.1      oki 	   0, 0,	/* 0x38 ROLLUP */
     81  1.1      oki 	   0, 0,	/* ROLLDOWN */
     82  1.1      oki 	   0, 0,	/* UNDO */
     83  1.1      oki 	   S, 0x0C,	/* CRSR LEFT */
     84  1.1      oki 	   S, 0x00,	/* now it gets hairy.. CRSR UP */
     85  1.1      oki 	   S, 0x08,	/* CRSR RIGHT */
     86  1.1      oki 	   S, 0x04,	/* CRSR DOWN */
     87  1.1      oki 	   K, 0,	/* CLR */
     88  1.1      oki 	   K, '/',	/* 0x40 */
     89  1.1      oki 	   K, '*',
     90  1.1      oki 	   K, '-',
     91  1.1      oki 	   K, '7',
     92  1.1      oki 	   K, '8',
     93  1.1      oki 	   K, '9',
     94  1.1      oki 	   K, '+',
     95  1.1      oki 	   K, '4',
     96  1.1      oki 	   K, '5',	/* 0x48 */
     97  1.1      oki 	   K, '6',
     98  1.1      oki 	   K, '=',
     99  1.1      oki 	   K, '1',
    100  1.1      oki 	   K, '2',
    101  1.1      oki 	   K, '3',
    102  1.1      oki 	   K, '\r',	/* enter */
    103  1.1      oki 	   K, '0',
    104  1.1      oki 	   K, ',',	/* 0x50 */
    105  1.1      oki 	   K, '.',
    106  1.1      oki 	   0, 0,
    107  1.1      oki 	   0, 0,
    108  1.1      oki 	   S, 0x42,	/* HELP */
    109  1.1      oki 	   0, 0,
    110  1.1      oki 	   0, 0,
    111  1.1      oki 	   0, 0,
    112  1.1      oki 	   0, 0,	/* 0x58 */
    113  1.1      oki 	   0, 0,
    114  1.1      oki 	   0, 0,
    115  1.1      oki 	   0, 0,
    116  1.1      oki 	   0, 0,
    117  1.1      oki 	   0, 0,
    118  1.1      oki 	   0, 0,
    119  1.1      oki 	   0, 0,
    120  1.1      oki 	   0, 0,	/* 0x60 */
    121  1.1      oki 	   0, 0,
    122  1.1      oki 	   0, 0,
    123  1.1      oki 	   S, 0x10,	/* F1 */
    124  1.1      oki 	   S, 0x15,	/* F2 */
    125  1.1      oki 	   S, 0x1A,	/* F3 */
    126  1.1      oki 	   S, 0x1F,	/* F4 */
    127  1.1      oki 	   S, 0x24,	/* F5 */
    128  1.1      oki 	   S, 0x29,	/* F6 */
    129  1.1      oki 	   S, 0x2E,	/* F7 */
    130  1.1      oki 	   S, 0x33,	/* 0x58 F8 */
    131  1.1      oki 	   S, 0x38,	/* F9 */
    132  1.1      oki 	   S, 0x3D,	/* F10 */
    133  1.1      oki 	},
    134  1.1      oki 
    135  1.1      oki 	/* shifted map */
    136  1.1      oki 	{
    137  1.1      oki 	   0, 0,	/* 0x00 */
    138  1.1      oki 	   0, ESC,
    139  1.1      oki 	   0, '!',
    140  1.1      oki 	   0, '@',
    141  1.1      oki 	   0, '#',
    142  1.1      oki 	   0, '$',
    143  1.1      oki 	   0, '%',
    144  1.1      oki 	   0, '^',
    145  1.1      oki 	   0, '&',	/* 0x08 */
    146  1.1      oki 	   0, '*',
    147  1.1      oki 	   0, '(',
    148  1.1      oki 	   0, ')',
    149  1.1      oki 	   0, '_',
    150  1.1      oki 	   0, '+',
    151  1.1      oki 	   0, '|',
    152  1.1      oki 	   0, DEL,	/* really BS, DEL & BS swapped */
    153  1.1      oki 	   S, 0x99,	/* 0x10 shift TAB */
    154  1.1      oki 	   C, 'Q',
    155  1.1      oki 	   C, 'W',
    156  1.1      oki 	   C, 'E',
    157  1.1      oki 	   C, 'R',
    158  1.1      oki 	   C, 'T',
    159  1.1      oki 	   C, 'Y',
    160  1.1      oki 	   C, 'U',
    161  1.1      oki 	   C, 'I',	/* 0x18 */
    162  1.1      oki 	   C, 'O',
    163  1.1      oki 	   C, 'P',
    164  1.1      oki 	   0, '{',
    165  1.1      oki 	   0, '}',
    166  1.1      oki 	   0, '\r',	/* return */
    167  1.1      oki 	   C, 'A',
    168  1.1      oki 	   C, 'S',
    169  1.1      oki 	   C, 'D',	/* 0x20 */
    170  1.1      oki 	   C, 'F',
    171  1.1      oki 	   C, 'G',
    172  1.1      oki 	   C, 'H',
    173  1.1      oki 	   C, 'J',
    174  1.1      oki 	   C, 'K',
    175  1.1      oki 	   C, 'L',
    176  1.1      oki 	   0, ':',
    177  1.1      oki 	   0, '\"',	/* 0x28 */
    178  1.1      oki 	   0, '~',
    179  1.6    isaki 	   C, 'Z',
    180  1.1      oki 	   C, 'X',
    181  1.1      oki 	   C, 'C',
    182  1.1      oki 	   C, 'V',
    183  1.1      oki 	   C, 'B',
    184  1.1      oki 	   C, 'N',
    185  1.1      oki 	   C, 'M',	/* 0x30 */
    186  1.1      oki 	   0, '<',	/* 0x38 */
    187  1.1      oki 	   0, '>',
    188  1.1      oki 	   0, '?',
    189  1.1      oki 	   0, '_',
    190  1.1      oki 	   0, ' ',
    191  1.1      oki 	   0, 0,	/* HOME */
    192  1.1      oki 	   0, '\b',	/* really DEL, BS & DEL swapped */
    193  1.1      oki 	   0, 0,	/* 0x38 ROLLUP */
    194  1.1      oki 	   0, 0,	/* ROLLDOWN */
    195  1.1      oki 	   0, 0,	/* UNDO */
    196  1.1      oki 	   S, 0x51,	/* shift CRSR RIGHT */
    197  1.1      oki 	   S, 0x47,	/* shift CRSR UP */
    198  1.1      oki 	   S, 0x57,	/* shift CRSR LEFT */
    199  1.1      oki 	   S, 0x4C,	/* shift CRSR DOWN */
    200  1.1      oki 	   K, 0,	/* CLR */
    201  1.1      oki 	   K, '/',	/* 0x40 */
    202  1.1      oki 	   0, 0,
    203  1.1      oki 	   K, '*',
    204  1.1      oki 	   K, '-',
    205  1.1      oki 	   K, '7',
    206  1.1      oki 	   K, '8',
    207  1.1      oki 	   K, '9',
    208  1.1      oki 	   K, '+',
    209  1.1      oki 	   K, '4',
    210  1.1      oki 	   K, '5',	/* 0x48 */
    211  1.1      oki 	   K, '6',
    212  1.1      oki 	   K, '=',
    213  1.1      oki 	   K, '1',
    214  1.1      oki 	   K, '2',
    215  1.1      oki 	   K, '3',
    216  1.1      oki 	   K, '\r',	/* enter */
    217  1.1      oki 	   K, '0',
    218  1.1      oki 	   K, ',',	/* 0x50 */
    219  1.1      oki 	   K, '.',
    220  1.1      oki 	   0, 0,
    221  1.1      oki 	   0, 0,
    222  1.1      oki 	   S, 0x42,	/* HELP */
    223  1.1      oki 	   0, 0,
    224  1.1      oki 	   0, 0,
    225  1.1      oki 	   0, 0,
    226  1.1      oki 	   0, 0,	/* 0x58 */
    227  1.1      oki 	   0, 0,
    228  1.1      oki 	   0, 0,
    229  1.1      oki 	   0, 0,
    230  1.1      oki 	   0, 0,
    231  1.1      oki 	   0, 0,
    232  1.1      oki 	   0, 0,
    233  1.1      oki 	   0, 0,
    234  1.1      oki 	   0, 0,	/* 0x60 */
    235  1.1      oki 	   0, 0,
    236  1.1      oki 	   0, 0,
    237  1.1      oki 	   S, 0x5D,	/* shift F1 */
    238  1.1      oki 	   S, 0x63,	/* shift F2 */
    239  1.1      oki 	   S, 0x69,	/* shift F3 */
    240  1.1      oki 	   S, 0x6F,	/* shift F4 */
    241  1.1      oki 	   S, 0x75,	/* shift F5 */
    242  1.1      oki 	   S, 0x7B,	/* shift F6 */
    243  1.1      oki 	   S, 0x81,	/* shift F7 */
    244  1.1      oki 	   S, 0x87,	/* 0x58 shift F8 */
    245  1.1      oki 	   S, 0x8D,	/* shift F9 */
    246  1.1      oki 	   S, 0x93,	/* shift F10 */
    247  1.1      oki 	},
    248  1.1      oki 
    249  1.1      oki 
    250  1.1      oki 	/* alt map */
    251  1.1      oki 	{
    252  1.1      oki 	},
    253  1.1      oki 
    254  1.1      oki 	/* shift alt map */
    255  1.1      oki 	{
    256  1.1      oki 	},
    257  1.1      oki 
    258  1.3    isaki 	{
    259  1.1      oki 	  /* string table. If there's a better way to get the offsets into the
    260  1.1      oki 	     above table, please tell me..
    261  1.3    isaki 
    262  1.1      oki 	     NOTE: save yourself and others a lot of grief by *not* using
    263  1.1      oki 	           CSI == 0x9b, using the two-character sequence gives
    264  1.1      oki 	           much less trouble, especially in GNU-Emacs.. */
    265  1.3    isaki 
    266  1.1      oki 	  3, ESC, '[', 'A',		/* 0x00: CRSR UP */
    267  1.1      oki 	  3, ESC, '[', 'B',		/* 0x04: CRSR DOWN */
    268  1.1      oki 	  3, ESC, '[', 'C',		/* 0x08: CRSR RIGHT */
    269  1.1      oki 	  3, ESC, '[', 'D',		/* 0x0C: CRSR LEFT */
    270  1.1      oki 	  4, ESC, '[', '0', '~',	/* 0x10: F1 */
    271  1.1      oki 	  4, ESC, '[', '1', '~',	/* 0x15: F2 */
    272  1.1      oki 	  4, ESC, '[', '2', '~',	/* 0x1A: F3 */
    273  1.1      oki 	  4, ESC, '[', '3', '~',	/* 0x1F: F4 */
    274  1.1      oki 	  4, ESC, '[', '4', '~',	/* 0x24: F5 */
    275  1.1      oki 	  4, ESC, '[', '5', '~',	/* 0x29: F6 */
    276  1.1      oki 	  4, ESC, '[', '6', '~',	/* 0x2E: F7 */
    277  1.1      oki 	  4, ESC, '[', '7', '~',	/* 0x33: F8 */
    278  1.1      oki 	  4, ESC, '[', '8', '~',	/* 0x38: F9 */
    279  1.1      oki 	  4, ESC, '[', '9', '~',	/* 0x3D: F10 */
    280  1.1      oki 	  4, ESC, '[', '?', '~',	/* 0x42: HELP */
    281  1.1      oki 
    282  1.1      oki 	  4, ESC, '[', 'T', '~',	/* 0x47: shift CRSR UP */
    283  1.1      oki 	  4, ESC, '[', 'S', '~',	/* 0x4C: shift CRSR DOWN */
    284  1.1      oki 	  5, ESC, '[', ' ', '@', '~',	/* 0x51: shift CRSR RIGHT */
    285  1.1      oki 	  5, ESC, '[', ' ', 'A', '~',	/* 0x57: shift CRSR LEFT */
    286  1.1      oki 	  5, ESC, '[', '1', '0', '~',	/* 0x5D: shift F1 */
    287  1.1      oki 	  5, ESC, '[', '1', '1', '~',	/* 0x63: shift F2 */
    288  1.1      oki 	  5, ESC, '[', '1', '2', '~',	/* 0x69: shift F3 */
    289  1.1      oki 	  5, ESC, '[', '1', '3', '~',	/* 0x6F: shift F4 */
    290  1.1      oki 	  5, ESC, '[', '1', '4', '~',	/* 0x75: shift F5 */
    291  1.1      oki 	  5, ESC, '[', '1', '5', '~',	/* 0x7B: shift F6 */
    292  1.1      oki 	  5, ESC, '[', '1', '6', '~',	/* 0x81: shift F7 */
    293  1.1      oki 	  5, ESC, '[', '1', '7', '~',	/* 0x87: shift F8 */
    294  1.1      oki 	  5, ESC, '[', '1', '8', '~',	/* 0x8D: shift F9 */
    295  1.1      oki 	  5, ESC, '[', '1', '9', '~',	/* 0x93: shift F10 */
    296  1.1      oki 	  3, ESC, '[', 'Z',		/* 0x99: shift TAB */
    297  1.1      oki 	  2, ESC, '[',			/* 0x9d: alt ESC == CSI */
    298  1.1      oki 	},
    299  1.1      oki };
    300  1.1      oki 
    301  1.1      oki unsigned char acctable[KBD_NUM_ACC][64] = {
    302  1.1      oki };
    303