/**************************************************************************** * * SciTech OS Portability Manager Library * * ======================================================================== * * The contents of this file are subject to the SciTech MGL Public * License Version 1.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.scitechsoft.com/mgl-license.txt * * Software distributed under the License is distributed on an * "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or * implied. See the License for the specific language governing * rights and limitations under the License. * * The Original Code is Copyright (C) 1991-1998 SciTech Software, Inc. * * The Initial Developer of the Original Code is SciTech Software, Inc. * All Rights Reserved. * * ======================================================================== * * Language: ANSI C * Environment: Any * * Description: Keyboard translation code pages for US English keyboards. * ****************************************************************************/ #include "event.h" /*--------------------------- Global variables ----------------------------*/ /* This table is used for all normal key translations, and is the fallback * table if the key is not found in any of the other translation tables. * If the code is not found in this table, the ASCII code is set to 0 to * indicate that there is no ASCII code equivalent for this key. */ static codepage_entry_t US_normal[] = { {0x01, 0x1B}, {0x02, '1'}, {0x03, '2'}, {0x04, '3'}, {0x05, '4'}, {0x06, '5'}, {0x07, '6'}, {0x08, '7'}, {0x09, '8'}, {0x0A, '9'}, {0x0B, '0'}, {0x0C, '-'}, {0x0D, '='}, {0x0E, 0x08}, {0x0F, 0x09}, {0x10, 'q'}, {0x11, 'w'}, {0x12, 'e'}, {0x13, 'r'}, {0x14, 't'}, {0x15, 'y'}, {0x16, 'u'}, {0x17, 'i'}, {0x18, 'o'}, {0x19, 'p'}, {0x1A, '['}, {0x1B, ']'}, {0x1C, 0x0D}, {0x1E, 'a'}, {0x1F, 's'}, {0x20, 'd'}, {0x21, 'f'}, {0x22, 'g'}, {0x23, 'h'}, {0x24, 'j'}, {0x25, 'k'}, {0x26, 'l'}, {0x27, ';'}, {0x28, '\''}, {0x29, '`'}, {0x2B, '\\'}, {0x2C, 'z'}, {0x2D, 'x'}, {0x2E, 'c'}, {0x2F, 'v'}, {0x30, 'b'}, {0x31, 'n'}, {0x32, 'm'}, {0x33, ','}, {0x34, '.'}, {0x35, '/'}, {0x37, '*'}, /* Keypad */ {0x39, ' '}, {0x4A, '-'}, /* Keypad */ {0x4E, '+'}, /* Keypad */ {0x60, 0x0D}, /* Keypad */ {0x61, '/'}, /* Keypad */ }; /* This table is used for when CAPSLOCK is active and the shift or ctrl * keys are not down. If the code is not found in this table, the normal * table above is then searched. */ static codepage_entry_t US_caps[] = { {0x10, 'Q'}, {0x11, 'W'}, {0x12, 'E'}, {0x13, 'R'}, {0x14, 'T'}, {0x15, 'Y'}, {0x16, 'U'}, {0x17, 'I'}, {0x18, 'O'}, {0x19, 'P'}, {0x1E, 'A'}, {0x1F, 'S'}, {0x20, 'D'}, {0x21, 'F'}, {0x22, 'G'}, {0x23, 'H'}, {0x24, 'J'}, {0x25, 'K'}, {0x26, 'L'}, {0x2C, 'Z'}, {0x2D, 'X'}, {0x2E, 'C'}, {0x2F, 'V'}, {0x30, 'B'}, {0x31, 'N'}, {0x32, 'M'}, }; /* This table is used for when shift key is down, but the ctrl key is not * down and CAPSLOCK is not active. If the code is not found in this table, * the normal table above is then searched. */ static codepage_entry_t US_shift[] = { {0x02, '!'}, {0x03, '@'}, {0x04, '#'}, {0x05, '$'}, {0x06, '%'}, {0x07, '^'}, {0x08, '&'}, {0x09, '*'}, {0x0A, '('}, {0x0B, ')'}, {0x0C, '_'}, {0x0D, '+'}, {0x10, 'Q'}, {0x11, 'W'}, {0x12, 'E'}, {0x13, 'R'}, {0x14, 'T'}, {0x15, 'Y'}, {0x16, 'U'}, {0x17, 'I'}, {0x18, 'O'}, {0x19, 'P'}, {0x1A, '{'}, {0x1B, '}'}, {0x1E, 'A'}, {0x1F, 'S'}, {0x20, 'D'}, {0x21, 'F'}, {0x22, 'G'}, {0x23, 'H'}, {0x24, 'J'}, {0x25, 'K'}, {0x26, 'L'}, {0x27, ':'}, {0x28, '"'}, {0x29, '~'}, {0x2B, '|'}, {0x2C, 'Z'}, {0x2D, 'X'}, {0x2E, 'C'}, {0x2F, 'V'}, {0x30, 'B'}, {0x31, 'N'}, {0x32, 'M'}, {0x33, '<'}, {0x34, '>'}, {0x35, '?'}, }; /* This table is used for when CAPSLOCK is active and the shift key is * down, but the ctrl key is not. If the code is not found in this table, * the shift table above is then searched. */ static codepage_entry_t US_shiftCaps[] = { {0x10, 'q'}, {0x11, 'w'}, {0x12, 'e'}, {0x13, 'r'}, {0x14, 't'}, {0x15, 'y'}, {0x16, 'u'}, {0x17, 'i'}, {0x18, 'o'}, {0x19, 'p'}, {0x1E, 'a'}, {0x1F, 's'}, {0x20, 'd'}, {0x21, 'f'}, {0x22, 'g'}, {0x23, 'h'}, {0x24, 'j'}, {0x25, 'k'}, {0x26, 'l'}, {0x2C, 'z'}, {0x2D, 'x'}, {0x2E, 'c'}, {0x2F, 'v'}, {0x30, 'b'}, {0x31, 'n'}, {0x32, 'm'}, }; /* This table is used for all key translations when the ctrl key is down, * regardless of the state of the shift key and CAPSLOCK. If the code is * not found in this table, the ASCII code is set to 0 to indicate that * there is no ASCII code equivalent for this key. */ static codepage_entry_t US_ctrl[] = { {0x01, 0x1B}, {0x06, 0x1E}, {0x0C, 0x1F}, {0x0E, 0x7F}, {0x10, 0x11}, {0x11, 0x17}, {0x12, 0x05}, {0x13, 0x12}, {0x14, 0x14}, {0x15, 0x19}, {0x16, 0x16}, {0x17, 0x09}, {0x18, 0x0F}, {0x19, 0x10}, {0x1A, 0x1B}, {0x1B, 0x1D}, {0x1C, 0x0A}, {0x1E, 0x01}, {0x1F, 0x13}, {0x20, 0x04}, {0x21, 0x06}, {0x22, 0x07}, {0x23, 0x08}, {0x24, 0x0A}, {0x25, 0x0B}, {0x26, 0x0C}, {0x2B, 0x1C}, {0x2C, 0x1A}, {0x2D, 0x18}, {0x2E, 0x03}, {0x2F, 0x16}, {0x30, 0x02}, {0x31, 0x0E}, {0x32, 0x0D}, {0x39, ' '}, }; static codepage_entry_t US_numPad[] = { {0x4C, '5'}, {0x62, '4'}, {0x63, '6'}, {0x64, '8'}, {0x65, '2'}, {0x66, '0'}, {0x67, '.'}, {0x68, '7'}, {0x69, '1'}, {0x6A, '9'}, {0x6B, '3'}, }; codepage_t _CP_US_English = { "US English", US_normal, EVT_ARR_SIZE(US_normal), US_caps, EVT_ARR_SIZE(US_caps), US_shift, EVT_ARR_SIZE(US_shift), US_shiftCaps, EVT_ARR_SIZE(US_shiftCaps), US_ctrl, EVT_ARR_SIZE(US_ctrl), US_numPad, EVT_ARR_SIZE(US_numPad), };