123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515 |
- /*++
- Copyright (c) 2013 Minoca Corp. All Rights Reserved
- Module Name:
- uskeys.c
- Abstract:
- This module translates between the key enum and console characters.
- Author:
- Evan Green 13-Mar-2013
- Environment:
- Kernel
- --*/
- //
- // ------------------------------------------------------------------- Includes
- //
- #include "inputp.h"
- //
- // ---------------------------------------------------------------- Definitions
- //
- //
- // Fun fact from Wikipedia: The rubout character got its code from the fact
- // that all its ASCII bits are set. In the punch card days if there was a
- // mistake in the punching, one could simply punch all the holes in that row to
- // rub out the bad character.
- //
- #define CHARACTER_CODE_RUBOUT 0x7F
- #define CHARACTER_CODE_CENTS 0xA2
- #define CHARACTER_CODE_PLUS_MINUS 0xB1
- //
- // ------------------------------------------------------ Data Type Definitions
- //
- //
- // ----------------------------------------------- Internal Function Prototypes
- //
- //
- // -------------------------------------------------------------------- Globals
- //
- UCHAR InKeyboardCharacters[KeyboardKeyMax] = {
- '\0', /* 00 */
- ANSI_ESCAPE_CODE,
- '1',
- '2',
- '3',
- '4',
- '5',
- '6',
- '7',
- '8',
- '9',
- '0',
- '-',
- '=',
- CHARACTER_CODE_RUBOUT,
- '\t',
- 'q', /* 10 */
- 'w',
- 'e',
- 'r',
- 't',
- 'y',
- 'u',
- 'i',
- 'o',
- 'p',
- '[',
- ']',
- '\r',
- '\0',
- 'a',
- 's',
- 'd', /* 20 */
- 'f',
- 'g',
- 'h',
- 'j',
- 'k',
- 'l',
- ';',
- '\'',
- '`',
- '\0',
- '\\',
- 'z',
- 'x',
- 'c',
- 'v',
- 'b', /* 30 */
- 'n',
- 'm',
- ',',
- '.',
- '/',
- '\0',
- '*',
- '\0',
- ' ',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0', /* 40 */
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0', /* 50 */
- '\0',
- '\0',
- '\0',
- '\0',
- '0',
- '1',
- '2',
- '3',
- '4',
- '5',
- '6',
- '7',
- '8',
- '9',
- '-',
- '+', /* 60 */
- '.',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0', /* 70 */
- '\0',
- '\0',
- '\r',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\r',
- '\0',
- '\0', /* 80 */
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0', /* 90 */
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\\',
- '\0',
- '/',
- '\0', /* A0 */
- '\0',
- '=',
- '\0',
- '\0',
- '\0',
- '\0',
- ',',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0', /* B0 */
- '\0',
- ',',
- '.',
- '$',
- CHARACTER_CODE_CENTS,
- '(',
- ')',
- '{',
- '}',
- '\t',
- CHARACTER_CODE_RUBOUT,
- 'A',
- 'B',
- 'C',
- 'D',
- 'E', /* C0 */
- 'F',
- '\0',
- '^',
- '%',
- '<',
- '>',
- '&',
- '\0',
- '|',
- '\0',
- ':',
- '#',
- ' ',
- '@',
- '!',
- '\0', /* D0 */
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- CHARACTER_CODE_PLUS_MINUS,
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0'
- };
- UCHAR InShiftedKeyboardCharacters[KeyboardKeyMax] = {
- '\0', /* 00 */
- ANSI_ESCAPE_CODE,
- '!',
- '@',
- '#',
- '$',
- '%',
- '^',
- '&',
- '*',
- '(',
- ')',
- '_',
- '+',
- CHARACTER_CODE_RUBOUT,
- '\t',
- 'Q', /* 10 */
- 'W',
- 'E',
- 'R',
- 'T',
- 'Y',
- 'U',
- 'I',
- 'O',
- 'P',
- '{',
- '}',
- '\r',
- '\0',
- 'A',
- 'S',
- 'D', /* 20 */
- 'F',
- 'G',
- 'H',
- 'J',
- 'K',
- 'L',
- ':',
- '"',
- '~',
- '\0',
- '|',
- 'Z',
- 'X',
- 'C',
- 'V',
- 'B', /* 30 */
- 'N',
- 'M',
- '<',
- '>',
- '?',
- '\0',
- '*',
- '\0',
- ' ',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0', /* 40 */
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0', /* 50 */
- '\0',
- '\0',
- '\0',
- '\0',
- '0',
- '1',
- '2',
- '3',
- '4',
- '5',
- '6',
- '7',
- '8',
- '9',
- '-',
- '+', /* 60 */
- '.',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0', /* 70 */
- '\0',
- '\0',
- '\r',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\r',
- '\0',
- '\0', /* 80 */
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0', /* 90 */
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '|',
- '\0',
- '/',
- '\0', /* A0 */
- '\0',
- '=',
- '\0',
- '\0',
- '\0',
- '\0',
- ',',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0', /* B0 */
- '\0',
- ',',
- '.',
- '$',
- CHARACTER_CODE_CENTS,
- '(',
- ')',
- '{',
- '}',
- '\t',
- CHARACTER_CODE_RUBOUT,
- 'A',
- 'B',
- 'C',
- 'D',
- 'E', /* C0 */
- 'F',
- '\0',
- '^',
- '%',
- '<',
- '>',
- '&',
- '\0',
- '|',
- '\0',
- ':',
- '#',
- ' ',
- '@',
- '!',
- '\0', /* D0 */
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- CHARACTER_CODE_PLUS_MINUS,
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0',
- '\0'
- };
- //
- // ------------------------------------------------------------------ Functions
- //
- //
- // --------------------------------------------------------- Internal Functions
- //
|