aboutsummaryrefslogtreecommitdiff
path: root/board/MAI/bios_emulator/scitech/src/pm/codepage/us_eng.c
diff options
context:
space:
mode:
Diffstat (limited to 'board/MAI/bios_emulator/scitech/src/pm/codepage/us_eng.c')
-rw-r--r--board/MAI/bios_emulator/scitech/src/pm/codepage/us_eng.c285
1 files changed, 285 insertions, 0 deletions
diff --git a/board/MAI/bios_emulator/scitech/src/pm/codepage/us_eng.c b/board/MAI/bios_emulator/scitech/src/pm/codepage/us_eng.c
new file mode 100644
index 000000000..9aa871423
--- /dev/null
+++ b/board/MAI/bios_emulator/scitech/src/pm/codepage/us_eng.c
@@ -0,0 +1,285 @@
+/****************************************************************************
+*
+* 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),
+ };