us_eng.c

来自「适合KS8695X」· C语言 代码 · 共 286 行

C
286
字号
/****************************************************************************
*
*                   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),
    };

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?