⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 keys.cpp

📁 MONA是为数不多的C++语言编写的一个很小的操作系统
💻 CPP
字号:
/*!
  \file   Keys.cpp
  \brief  Keys 

  Copyright (c) 2002-2004 shadow
  All rights reserved.<BR>
  \b License abide by Mona Project<BR>
  \b Create 2004/04/15
  \author  shadow

  $Revision: 1.8 $
  $Date: 2004/07/10 04:36:32 $
*/

#include <monapi/Keys.h>

using namespace MonAPI;

const int Keys::mapUS102[128] = {
    0        , Escape  , D1             , D2              , D3       , D4         , D5       , D6          ,
    D7       , D8      , D9             , D0              , OemMinus , Oemplus    , Back     , Tab         ,
    Q        , W       , E              , R               , T        , Y          , U        , I           ,
    O        , P       , OemOpenBrackets, OemCloseBrackets, Enter    , LControlKey, A        , S           ,
    D        , F       , G              , H               , J        , K          , L        , OemSemicolon,
    OemQuotes, Oemtilde, LShiftKey      , OemPipe         , Z        , X          , C        , V           ,
    B        , N       , M              , Oemcomma        , OemPeriod, OemQuestion, RShiftKey, Multiply    ,
    LMenu    , Space   , CapsLock       , F1              , F2       , F3         , F4       , F5          ,
    F6       , F7      , F8             , F9              , F10      , NumLock    , Scroll   , NumPad7     ,
    NumPad8  , NumPad9 , Subtract       , NumPad4         , NumPad5  , NumPad6    , Add      , NumPad1     ,
    NumPad2  , NumPad3 , NumPad0        , Decimal         , 0        , 0          , 0        , F11         ,
    F12      , 0       , 0              , 0               , 0        , 0          , 0        , 0
};

const int Keys::mapUS102E0[128] = {
    0    , 0       , 0     , 0     , 0        , 0          , 0, 0          ,
    0    , 0       , 0     , 0     , 0        , 0          , 0, 0          ,
    0    , 0       , 0     , 0     , 0        , 0          , 0, 0          ,
    0    , 0       , 0     , 0     , Separator, RControlKey, 0, 0          ,
    0    , 0       , 0     , 0     , 0        , 0          , 0, 0          ,
    0    , 0       , 0     , 0     , 0        , 0          , 0, 0          ,
    0    , 0       , 0     , 0     , 0        , Divide     , 0, PrintScreen,
    RMenu, 0       , 0     , 0     , 0        , 0          , 0, 0          ,
    0    , 0       , 0     , 0     , 0        , 0          , 0, Home       ,
    Up   , PageUp  , 0     , Left  , 0        , Right      , 0, End        ,
    Down , PageDown, Insert, Delete, 0        , 0          , 0, 0          ,
    0    , 0       , 0     , LWin  , RWin     , Apps       , 0, 0
};

const int Keys::mapJP109[128] = {
    0           , Escape    , D1       , D2              , D3       , D4         , D5       , D6      ,
    D7          , D8        , D9       , D0              , OemMinus , OemQuotes  , Back     , Tab     ,
    Q           , W         , E        , R               , T        , Y          , U        , I       ,
    O           , P         , Oemtilde , OemOpenBrackets , Enter    , LControlKey, A        , S       ,
    D           , F         , G        , H               , J        , K          , L        , Oemplus ,
    OemSemicolon, KanjiMode , LShiftKey, OemCloseBrackets, Z        , X          , C        , V       ,
    B           , N         , M        , Oemcomma        , OemPeriod, OemQuestion, RShiftKey, Multiply,
    LMenu       , Space     , CapsLock , F1              , F2       , F3         , F4       , F5      ,
    F6          , F7        , F8       , F9              , F10      , NumLock    , Scroll   , NumPad7 ,
    NumPad8     , NumPad9   , Subtract , NumPad4         , NumPad5  , NumPad6    , Add      , NumPad1 ,
    NumPad2     , NumPad3   , NumPad0  , Decimal         , 0        , 0          , 0        , F11     ,
    F12         , 0         , 0        , 0               , 0        , 0          , 0        , 0       ,
    0           , 0         , 0        , 0               , 0        , 0          , 0        , 0       ,
    0           , 0         , 0        , 0               , 0        , 0          , 0        , 0       ,
    KanaMode    , 0         , 0        , OemBackslash    , 0        , 0          , 0        , 0       ,
    0           , IMEConvert, 0        , IMENonconvert   , 0        , OemPipe    , 0        , 0
};

const int Keys::mapJP109E0[128] = {
    0    , 0       , 0     , 0     , 0        , 0          , 0, 0          ,
    0    , 0       , 0     , 0     , 0        , 0          , 0, 0          ,
    0    , 0       , 0     , 0     , 0        , 0          , 0, 0          ,
    0    , 0       , 0     , 0     , Separator, RControlKey, 0, 0          ,
    0    , 0       , 0     , 0     , 0        , 0          , 0, 0          ,
    0    , 0       , 0     , 0     , 0        , 0          , 0, 0          ,
    0    , 0       , 0     , 0     , 0        , Divide     , 0, PrintScreen,
    RMenu, 0       , 0     , 0     , 0        , 0          , 0, 0          ,
    0    , 0       , 0     , 0     , 0        , 0          , 0, Home       ,
    Up   , PageUp  , 0     , Left  , 0        , Right      , 0, End        ,
    Down , PageDown, Insert, Delete, 0        , 0          , 0, 0          ,
    0    , 0       , 0     , LWin  , RWin     , Apps       , 0, 0
};

const char Keys::keyTopMapUS102[256] = {
     0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
     0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
    ' ',  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
     0 , 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
    'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',  0 ,  0 ,  0 ,  0 ,  0 ,
    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '*', '+',  0 , '-', '.', '/',
     0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
     0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
     0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
     0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
     0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 , ';', '+', ',', '-', '.', '/',
    '~',  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
     0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 , '[','\\', ']','\'',  0 ,
     0 ,  0 ,'\\',  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
};

const char Keys::keyTopMapUS102S[256] = {
     0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
     0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
    ' ',  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
    ')', '!', '@', '#', '$', '%', '^', '&', '*', '(',  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
     0 , 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
    'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',  0 ,  0 ,  0 ,  0 ,  0 ,
    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '*', '+',  0 , '-', '.', '/',
     0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
     0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
     0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
     0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
     0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 , ':', '=', '<', '_', '>', '?',
    '`',  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
     0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 , '{', '|', '}', '"',  0 ,
     0 ,  0 , '|',  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
};

const char Keys::keyTopMapJP109[256] = {
     0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
     0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
    ' ',  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
     0 , 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
    'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',  0 ,  0 ,  0 ,  0 ,  0 ,
    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '*', '+',  0 , '-', '.', '/',
     0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
     0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
     0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
     0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
     0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 , ':', ';', ',', '-', '.', '/',
    '@',  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
     0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 , '[','\\', ']', '^',  0 ,
     0 ,  0 ,'\\',  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
};

const char Keys::keyTopMapJP109S[256] = {
     0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
     0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
    ' ',  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
     0 , '!', '"', '#', '$', '%', '&','\'', '(', ')',  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
     0 , 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
    'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',  0 ,  0 ,  0 ,  0 ,  0 ,
    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '*', '+',  0 , '-', '.', '/',
     0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
     0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
     0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
     0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
     0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 , '*', '+', '<', '=', '>', '?',
    '`',  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
     0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 , '{', '|', '}', '~',  0 ,
     0 ,  0 , '|',  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
};

char Keys::ToChar(KeyInfo keyInfo){

    char result = '\0';

    if(keyInfo.modifiers & KEY_MODIFIER_SHIFT){
        result = keyTopMapJP109S[keyInfo.keycode];
    } else {
        result = keyTopMapJP109[keyInfo.keycode];
    }

    return result;
}

bool Keys::IsToChar(KeyInfo keyInfo){

    char code = '\0';

    if(keyInfo.modifiers & KEY_MODIFIER_SHIFT){
        code = keyTopMapJP109S[keyInfo.keycode];
    } else {
        code = keyTopMapJP109[keyInfo.keycode];
    }

    if(code != '\0') return true;

    return false;
}

char Keys::ToChar(KeyInfo keyInfo, char *map, char *maps){

    char result = '\0';

    if(keyInfo.modifiers & KEY_MODIFIER_SHIFT){
        result = maps[keyInfo.keycode];
    } else {
        result = map[keyInfo.keycode];
    }

    return result;
}

bool Keys::IsToChar(KeyInfo keyInfo, char *map, char *maps){

    char code = '\0';

    if(keyInfo.modifiers & KEY_MODIFIER_SHIFT){
        code = maps[keyInfo.keycode];
    } else {
        code = map[keyInfo.keycode];
    }

    if(code != '\0') return true;

    return false;
}

const int* Keys::GetKeyMap(Keys::KeyboardType kbdt)
{
    switch (kbdt)
    {
        case US102:
            return mapUS102;
        case JP109:
            return mapJP109;
    }
    return NULL;
}

const int* Keys::GetKeyMapE0(Keys::KeyboardType kbdt)
{
    switch (kbdt)
    {
        case US102:
            return mapUS102E0;
        case JP109:
            return mapJP109E0;
    }
    return NULL;
}

const char* Keys::GetKeyTopMap(Keys::KeyboardType kbdt)
{
    switch (kbdt)
    {
        case US102:
            return keyTopMapUS102;
        case JP109:
            return keyTopMapJP109;
    }
    return NULL;
}

const char* Keys::GetKeyTopMapS(Keys::KeyboardType kbdt)
{
    switch (kbdt)
    {
        case US102:
            return keyTopMapUS102S;
        case JP109:
            return keyTopMapJP109S;
    }
    return NULL;
}

⌨️ 快捷键说明

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