Changeset c8bf88d in mainline for kernel/genarch/src/kbrd/scanc_sun.c


Ignore:
Timestamp:
2009-04-03T15:52:14Z (15 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade
Children:
a7b1071
Parents:
2398ee9
Message:

represent special keystrokes (cursor arrows, page up/down, delete, etc.) as appropriate Unicode characters
do not parse ANSI control sequences in kconsole, but in serial line driver

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/genarch/src/kbrd/scanc_sun.c

    r2398ee9 rc8bf88d  
    2727 */
    2828
    29 /** @addtogroup genarch 
     29/** @addtogroup genarch
    3030 * @{
    3131 */
    3232/**
    3333 * @file
    34  * @brief       Scan codes for Sun keyboards.
     34 * @brief Scan codes for Sun keyboards.
    3535 */
    3636
    3737#include <genarch/kbrd/scanc.h>
     38#include <typedefs.h>
     39#include <string.h>
    3840
    3941/** Primary meaning of scancodes. */
    40 char sc_primary_map[] = {
    41         [0x00] = SPECIAL,
    42         [0x01] = SPECIAL,
    43         [0x02] = SPECIAL,
    44         [0x03] = SPECIAL,
    45         [0x04] = SPECIAL,
    46         [0x05] = SPECIAL,       /* F1 */
    47         [0x06] = SPECIAL,       /* F2 */
    48         [0x07] = SPECIAL,       /* F10 */
    49         [0x08] = SPECIAL,       /* F3 */
    50         [0x09] = SPECIAL,       /* F11 */
    51         [0x0a] = SPECIAL,       /* F4 */
    52         [0x0b] = SPECIAL,       /* F12 */
    53         [0x0c] = SPECIAL,       /* F5 */
    54         [0x0d] = SPECIAL,       /* RAlt */
    55         [0x0e] = SPECIAL,       /* F6 */
    56         [0x0f] = SPECIAL,
    57         [0x10] = SPECIAL,       /* F7 */
    58         [0x11] = SPECIAL,       /* F8 */
    59         [0x12] = SPECIAL,       /* F9 */
    60         [0x13] = SPECIAL,       /* LAlt */
    61         [0x14] = SPECIAL,       /* Up Arrow */
    62         [0x15] = SPECIAL,       /* Pause */
    63         [0x16] = SPECIAL,
    64         [0x17] = SPECIAL,       /* Scroll Lock */
    65         [0x18] = SPECIAL,       /* Left Arrow */
    66         [0x19] = SPECIAL,
    67         [0x1a] = SPECIAL,
    68         [0x1b] = SPECIAL,       /* Down Arrow */
    69         [0x1c] = SPECIAL,       /* Right Arrow */
    70         [0x1d] = SPECIAL,       /* Esc */
     42wchar_t sc_primary_map[SCANCODES] = {
     43        [0x00] = U_SPECIAL,
     44        [0x01] = U_SPECIAL,
     45        [0x02] = U_SPECIAL,
     46        [0x03] = U_SPECIAL,
     47        [0x04] = U_SPECIAL,
     48        [0x05] = U_SPECIAL,      /* F1 */
     49        [0x06] = U_SPECIAL,      /* F2 */
     50        [0x07] = U_SPECIAL,      /* F10 */
     51        [0x08] = U_SPECIAL,      /* F3 */
     52        [0x09] = U_SPECIAL,      /* F11 */
     53        [0x0a] = U_SPECIAL,      /* F4 */
     54        [0x0b] = U_SPECIAL,      /* F12 */
     55        [0x0c] = U_SPECIAL,      /* F5 */
     56        [0x0d] = U_SPECIAL,      /* Right Alt */
     57        [0x0e] = U_SPECIAL,      /* F6 */
     58        [0x0f] = U_SPECIAL,
     59        [0x10] = U_SPECIAL,      /* F7 */
     60        [0x11] = U_SPECIAL,      /* F8 */
     61        [0x12] = U_SPECIAL,      /* F9 */
     62        [0x13] = U_SPECIAL,      /* Left Alt */
     63        [0x14] = U_UP_ARROW,     /* Up Arrow */
     64        [0x15] = U_SPECIAL,      /* Pause */
     65        [0x16] = U_SPECIAL,
     66        [0x17] = U_SPECIAL,      /* Scroll Lock */
     67        [0x18] = U_LEFT_ARROW,   /* Left Arrow */
     68        [0x19] = U_SPECIAL,
     69        [0x1a] = U_SPECIAL,
     70        [0x1b] = U_DOWN_ARROW,   /* Down Arrow */
     71        [0x1c] = U_RIGHT_ARROW,  /* Right Arrow */
     72        [0x1d] = U_ESCAPE,       /* Esc */
    7173        [0x1e] = '1',
    7274        [0x1f] = '2',
     
    8284        [0x29] = '=',
    8385        [0x2a] = '`',
    84         [0x2b] = '\b',          /* Backspace */
    85         [0x2c] = SPECIAL,       /* Insert */
    86         [0x2d] = SPECIAL,
    87         [0x2e] = '/',           /* numeric keypad */
    88         [0x2f] = '*',           /* numeric keypad */
    89         [0x30] = SPECIAL,
    90         [0x31] = SPECIAL,
    91         [0x32] = '.',           /* numeric keypad */
    92         [0x33] = SPECIAL,
    93         [0x34] = SPECIAL,       /* Home */
    94         [0x35] = '\t',          /* Tab */
     86        [0x2b] = '\b',           /* Backspace */
     87        [0x2c] = U_SPECIAL,      /* Insert */
     88        [0x2d] = U_SPECIAL,
     89        [0x2e] = '/',            /* Numpad / */
     90        [0x2f] = '*',            /* Numpad * */
     91        [0x30] = U_SPECIAL,
     92        [0x31] = U_SPECIAL,
     93        [0x32] = '.',            /* Numpad . */
     94        [0x33] = U_SPECIAL,
     95        [0x34] = U_HOME_ARROW,   /* Home */
     96        [0x35] = '\t',           /* Tab */
    9597        [0x36] = 'q',
    9698        [0x37] = 'w',
     
    105107        [0x40] = '[',
    106108        [0x41] = ']',
    107         [0x42] = SPECIAL,       /* Del */
    108         [0x43] = SPECIAL,
    109         [0x44] = '7',           /* numeric keypad */
    110         [0x45] = '8',           /* numeric keypad */
    111         [0x46] = '9',           /* numeric keypad */
    112         [0x47] = '-',           /* numeric keypad */
    113         [0x48] = SPECIAL,
    114         [0x49] = SPECIAL,
    115         [0x4a] = SPECIAL,       /* End */
    116         [0x4b] = SPECIAL,
    117         [0x4c] = SPECIAL,       /* Control */
     109        [0x42] = U_DELETE,       /* Delete */
     110        [0x43] = U_SPECIAL,
     111        [0x44] = '7',            /* Numpad 7 */
     112        [0x45] = '8',            /* Numpad 8 */
     113        [0x46] = '9',            /* Numpad 9 */
     114        [0x47] = '-',            /* Numpad - */
     115        [0x48] = U_SPECIAL,
     116        [0x49] = U_SPECIAL,
     117        [0x4a] = U_END_ARROW,    /* End */
     118        [0x4b] = U_SPECIAL,
     119        [0x4c] = U_SPECIAL,      /* Control */
    118120        [0x4d] = 'a',
    119121        [0x4e] = 's',
     
    128130        [0x57] = '\'',
    129131        [0x58] = '\\',
    130         [0x59] = '\n',          /* Enter */
    131         [0x5a] = '\n',          /* Enter on numeric keypad */
    132         [0x5b] = '4',           /* numeric keypad */
    133         [0x5c] = '5',           /* numeric keypad */
    134         [0x5d] = '6',           /* numeric keypad */
    135         [0x5e] = '0',           /* numeric keypad */
    136         [0x5f] = SPECIAL,
    137         [0x60] = SPECIAL,       /* Page Up */
    138         [0x61] = SPECIAL,
    139         [0x62] = SPECIAL,       /* Num Lock */
    140         [0x63] = SPECIAL,       /* LShift */
     132        [0x59] = '\n',           /* Enter */
     133        [0x5a] = '\n',           /* Numpad Enter */
     134        [0x5b] = '4',            /* Numpad 4 */
     135        [0x5c] = '5',            /* Numpad 5 */
     136        [0x5d] = '6',            /* Numpad 6 */
     137        [0x5e] = '0',            /* Numpad 0 */
     138        [0x5f] = U_SPECIAL,
     139        [0x60] = U_PAGE_UP,      /* Page Up */
     140        [0x61] = U_SPECIAL,
     141        [0x62] = U_SPECIAL,      /* NumLock */
     142        [0x63] = U_SPECIAL,      /* Left Shift */
    141143        [0x64] = 'z',
    142144        [0x65] = 'x',
     
    149151        [0x6c] = '.',
    150152        [0x6d] = '/',
    151         [0x6e] = SPECIAL,       /* RShift */
    152         [0x6f] = SPECIAL,
    153         [0x70] = '1',           /* numeric keypad */
    154         [0x71] = '2',           /* numeric keypad */
    155         [0x72] = '3',           /* numeric keypad */
    156         [0x73] = SPECIAL,
    157         [0x74] = SPECIAL,
    158         [0x75] = SPECIAL,
    159         [0x76] = SPECIAL,
    160         [0x77] = SPECIAL,       /* Caps Lock */
    161         [0x78] = SPECIAL,
     153        [0x6e] = U_SPECIAL,      /* Right Shift */
     154        [0x6f] = U_SPECIAL,
     155        [0x70] = '1',            /* Numpad 1 */
     156        [0x71] = '2',            /* Numpad 2 */
     157        [0x72] = '3',            /* Numpad 3 */
     158        [0x73] = U_SPECIAL,
     159        [0x74] = U_SPECIAL,
     160        [0x75] = U_SPECIAL,
     161        [0x76] = U_SPECIAL,
     162        [0x77] = U_SPECIAL,      /* CapsLock */
     163        [0x78] = U_SPECIAL,
    162164        [0x79] = ' ',
    163         [0x7a] = SPECIAL,
    164         [0x7b] = SPECIAL,       /* Page Down */
    165         [0x7c] = SPECIAL,
    166         [0x7d] = '+',           /* numeric key pad */
    167         [0x7e] = SPECIAL,
    168         [0x7f] = SPECIAL
     165        [0x7a] = U_SPECIAL,
     166        [0x7b] = U_PAGE_DOWN,    /* Page Down */
     167        [0x7c] = U_SPECIAL,
     168        [0x7d] = '+',            /* Numpad + */
     169        [0x7e] = U_SPECIAL,
     170        [0x7f] = U_SPECIAL
    169171};
    170172
    171173/** Secondary meaning of scancodes. */
    172 char sc_secondary_map[] = {
    173         [0x00] = SPECIAL,
    174         [0x01] = SPECIAL,
    175         [0x02] = SPECIAL,
    176         [0x03] = SPECIAL,
    177         [0x04] = SPECIAL,
    178         [0x05] = SPECIAL,       /* F1 */
    179         [0x06] = SPECIAL,       /* F2 */
    180         [0x07] = SPECIAL,       /* F10 */
    181         [0x08] = SPECIAL,       /* F3 */
    182         [0x09] = SPECIAL,       /* F11 */
    183         [0x0a] = SPECIAL,       /* F4 */
    184         [0x0b] = SPECIAL,       /* F12 */
    185         [0x0c] = SPECIAL,       /* F5 */
    186         [0x0d] = SPECIAL,       /* RAlt */
    187         [0x0e] = SPECIAL,       /* F6 */
    188         [0x0f] = SPECIAL,
    189         [0x10] = SPECIAL,       /* F7 */
    190         [0x11] = SPECIAL,       /* F8 */
    191         [0x12] = SPECIAL,       /* F9 */
    192         [0x13] = SPECIAL,       /* LAlt */
    193         [0x14] = SPECIAL,       /* Up Arrow */
    194         [0x15] = SPECIAL,       /* Pause */
    195         [0x16] = SPECIAL,
    196         [0x17] = SPECIAL,       /* Scroll Lock */
    197         [0x18] = SPECIAL,       /* Left Arrow */
    198         [0x19] = SPECIAL,
    199         [0x1a] = SPECIAL,
    200         [0x1b] = SPECIAL,       /* Down Arrow */
    201         [0x1c] = SPECIAL,       /* Right Arrow */
    202         [0x1d] = SPECIAL,       /* Esc */
     174wchar_t sc_secondary_map[SCANCODES] = {
     175        [0x00] = U_SPECIAL,
     176        [0x01] = U_SPECIAL,
     177        [0x02] = U_SPECIAL,
     178        [0x03] = U_SPECIAL,
     179        [0x04] = U_SPECIAL,
     180        [0x05] = U_SPECIAL,      /* F1 */
     181        [0x06] = U_SPECIAL,      /* F2 */
     182        [0x07] = U_SPECIAL,      /* F10 */
     183        [0x08] = U_SPECIAL,      /* F3 */
     184        [0x09] = U_SPECIAL,      /* F11 */
     185        [0x0a] = U_SPECIAL,      /* F4 */
     186        [0x0b] = U_SPECIAL,      /* F12 */
     187        [0x0c] = U_SPECIAL,      /* F5 */
     188        [0x0d] = U_SPECIAL,      /* Right Alt */
     189        [0x0e] = U_SPECIAL,      /* F6 */
     190        [0x0f] = U_SPECIAL,
     191        [0x10] = U_SPECIAL,      /* F7 */
     192        [0x11] = U_SPECIAL,      /* F8 */
     193        [0x12] = U_SPECIAL,      /* F9 */
     194        [0x13] = U_SPECIAL,      /* Left Alt */
     195        [0x14] = U_UP_ARROW,     /* Up Arrow */
     196        [0x15] = U_SPECIAL,      /* Pause */
     197        [0x16] = U_SPECIAL,
     198        [0x17] = U_SPECIAL,      /* Scroll Lock */
     199        [0x18] = U_LEFT_ARROW,   /* Left Arrow */
     200        [0x19] = U_SPECIAL,
     201        [0x1a] = U_SPECIAL,
     202        [0x1b] = U_DOWN_ARROW,   /* Down Arrow */
     203        [0x1c] = U_RIGHT_ARROW,  /* Right Arrow */
     204        [0x1d] = U_ESCAPE,       /* Esc */
    203205        [0x1e] = '!',
    204206        [0x1f] = '@',
     
    214216        [0x29] = '+',
    215217        [0x2a] = '~',
    216         [0x2b] = SPECIAL,       /* Backspace */
    217         [0x2c] = SPECIAL,       /* Insert */
    218         [0x2d] = SPECIAL,
    219         [0x2e] = '/',           /* numeric keypad */
    220         [0x2f] = '*',           /* numeric keypad */
    221         [0x30] = SPECIAL,
    222         [0x31] = SPECIAL,
    223         [0x32] = '.',           /* numeric keypad */
    224         [0x33] = SPECIAL,
    225         [0x34] = SPECIAL,       /* Home */
    226         [0x35] = SPECIAL,       /* Tab */
     218        [0x2b] = '\b',           /* Backspace */
     219        [0x2c] = U_SPECIAL,      /* Insert */
     220        [0x2d] = U_SPECIAL,
     221        [0x2e] = '/',            /* Numpad / */
     222        [0x2f] = '*',            /* Numpad * */
     223        [0x30] = U_SPECIAL,
     224        [0x31] = U_SPECIAL,
     225        [0x32] = '.',            /* Numpad . */
     226        [0x33] = U_SPECIAL,
     227        [0x34] = U_HOME_ARROW,   /* Home */
     228        [0x35] = '\t',           /* Tab */
    227229        [0x36] = 'Q',
    228230        [0x37] = 'W',
     
    237239        [0x40] = '{',
    238240        [0x41] = '}',
    239         [0x42] = SPECIAL,       /* Del */
    240         [0x43] = SPECIAL,
    241         [0x44] = '7',           /* numeric keypad */
    242         [0x45] = '8',           /* numeric keypad */
    243         [0x46] = '9',           /* numeric keypad */
    244         [0x47] = '-',           /* numeric keypad */
    245         [0x48] = SPECIAL,
    246         [0x49] = SPECIAL,
    247         [0x4a] = SPECIAL,       /* End */
    248         [0x4b] = SPECIAL,
    249         [0x4c] = SPECIAL,       /* Control */
     241        [0x42] = U_DELETE,       /* Delete */
     242        [0x43] = U_SPECIAL,
     243        [0x44] = '7',            /* Numpad 7 */
     244        [0x45] = '8',            /* Numpad 8 */
     245        [0x46] = '9',            /* Numpad 9 */
     246        [0x47] = '-',            /* Numpad - */
     247        [0x48] = U_SPECIAL,
     248        [0x49] = U_SPECIAL,
     249        [0x4a] = U_END_ARROW,    /* End */
     250        [0x4b] = U_SPECIAL,
     251        [0x4c] = U_SPECIAL,      /* Control */
    250252        [0x4d] = 'A',
    251253        [0x4e] = 'S',
     
    260262        [0x57] = '"',
    261263        [0x58] = '|',
    262         [0x59] = SPECIAL,       /* Enter */
    263         [0x5a] = SPECIAL,       /* Enter on numeric keypad */
    264         [0x5b] = '4',           /* numeric keypad */
    265         [0x5c] = '5',           /* numeric keypad */
    266         [0x5d] = '6',           /* numeric keypad */
    267         [0x5e] = '0',           /* numeric keypad */
    268         [0x5f] = SPECIAL,
    269         [0x60] = SPECIAL,       /* Page Up */
    270         [0x61] = SPECIAL,
    271         [0x62] = SPECIAL,       /* Num Lock */
    272         [0x63] = SPECIAL,       /* LShift */
     264        [0x59] = '\n',           /* Enter */
     265        [0x5a] = '\n',           /* Numpad Enter */
     266        [0x5b] = '4',            /* Numpad 4 */
     267        [0x5c] = '5',            /* Numpad 5 */
     268        [0x5d] = '6',            /* Numpad 6 */
     269        [0x5e] = '0',            /* Numpad 0 */
     270        [0x5f] = U_SPECIAL,
     271        [0x60] = U_PAGE_UP,      /* Page Up */
     272        [0x61] = U_SPECIAL,
     273        [0x62] = U_SPECIAL,      /* NumLock */
     274        [0x63] = U_SPECIAL,      /* Left Shift */
    273275        [0x64] = 'Z',
    274276        [0x65] = 'X',
     
    281283        [0x6c] = '>',
    282284        [0x6d] = '?',
    283         [0x6e] = SPECIAL,       /* RShift */
    284         [0x6f] = SPECIAL,
    285         [0x70] = '1',           /* numeric keypad */
    286         [0x71] = '2',           /* numeric keypad */
    287         [0x72] = '3',           /* numeric keypad */
    288         [0x73] = SPECIAL,
    289         [0x74] = SPECIAL,
    290         [0x75] = SPECIAL,
    291         [0x76] = SPECIAL,
    292         [0x77] = SPECIAL,       /* Caps Lock */
    293         [0x78] = SPECIAL,
     285        [0x6e] = U_SPECIAL,      /* Right Shift */
     286        [0x6f] = U_SPECIAL,
     287        [0x70] = '1',            /* Numpad 1 */
     288        [0x71] = '2',            /* Numpad 2 */
     289        [0x72] = '3',            /* Numpad 3 */
     290        [0x73] = U_SPECIAL,
     291        [0x74] = U_SPECIAL,
     292        [0x75] = U_SPECIAL,
     293        [0x76] = U_SPECIAL,
     294        [0x77] = U_SPECIAL,      /* CapsLock */
     295        [0x78] = U_SPECIAL,
    294296        [0x79] = ' ',
    295         [0x7a] = SPECIAL,
    296         [0x7b] = SPECIAL,       /* Page Down */
    297         [0x7c] = SPECIAL,
    298         [0x7d] = '+',           /* numeric key pad */
    299         [0x7e] = SPECIAL,
    300         [0x7f] = SPECIAL
     297        [0x7a] = U_SPECIAL,
     298        [0x7b] = U_PAGE_DOWN,    /* Page Down */
     299        [0x7c] = U_SPECIAL,
     300        [0x7d] = '+',            /* Numpad + */
     301        [0x7e] = U_SPECIAL,
     302        [0x7f] = U_SPECIAL
    301303};
    302304
Note: See TracChangeset for help on using the changeset viewer.