亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? kbdinpun.cpp

?? 此代碼為WCE5.0下鍵盤驅動的源代碼
?? CPP
字號:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
#include <windows.h>
#include <keybddr.h>
#include <LayMgr.h>
#include <DeviceLayout.h>
#include <NumPadRmp.h>

// Generated by tool built on Dec 30 2003 15:22:20
// from keyboard DLL C:\WINDOWS\System32\kbdinpun.dll
// for input locale 00000446


// Desktop virtual keys do not always match CE virtual keys. The 
// following #defines are attempts to convert those without direct
// matches. These should be reviewed and compared with the 
// corresponding input language or device layout.
//
// Virtual keys without equivalents will need to be mapped to OEM-defined
// virtual keys in order for those keys to be used. Note however, that all
// AT scan codes listed in the device layout are not necessarily generated
// by keyboards of that specific input locale. They are often listed only
// for completeness so defining their virtual keys as 0 might not be a 
// problem.

#define VK_OEM_MINUS     VK_HYPHEN        // CE naming difference
#define VK_OEM_PLUS      VK_EQUAL         // CE naming difference
#define VK_OEM_4         VK_LBRACKET      // CE naming difference
#define VK_OEM_6         VK_RBRACKET      // CE naming difference
#define VK_OEM_1         VK_SEMICOLON     // CE naming difference
#define VK_OEM_7         VK_APOSTROPHE    // CE naming difference
#define VK_OEM_3         VK_BACKQUOTE     // CE naming difference
#define VK_OEM_5         VK_BACKSLASH     // CE naming difference
#define VK_OEM_COMMA     VK_COMMA         // CE naming difference
#define VK_OEM_PERIOD    VK_PERIOD        // CE naming difference
#define VK_OEM_2         VK_SLASH         // CE naming difference
#define VK_OEM_WSCTRL    0                // No CE equivalent
#define VK_OEM_FINISH    VK_DBE_KATAKANA  // CE naming difference
#define VK_OEM_JUMP      0                // No CE equivalent
#define VK_OEM_BACKTAB   VK_DBE_ROMAN     // CE naming difference
#define VK_OEM_AUTO      VK_DBE_SBCSCHAR  // CE naming difference
#define VK_OEM_PA3       0                // No CE equivalent
#define VK_OEM_RESET     0                // No CE equivalent
#define VK_ABNT_C1       0                // No CE equivalent
#define VK_OEM_PA1       0                // No CE equivalent
#define VK_ABNT_C2       0                // No CE equivalent
#define VK_OEM_8         VK_OFF           // CE naming difference


static const DWORD dwScToVkFirst = 0x01;
static const DWORD dwScToVkLast  = 0x84;
static UINT8 rguiScToVk[] = {
    /* 01 */  VK_F9,
    /* 02 */  0,
    /* 03 */  VK_F5,
    /* 04 */  VK_F3,
    /* 05 */  VK_F1,
    /* 06 */  VK_F2,
    /* 07 */  VK_F12,
    /* 08 */  VK_F13,
    /* 09 */  VK_F10,
    /* 0A */  VK_F8,
    /* 0B */  VK_F6,
    /* 0C */  VK_F4,
    /* 0D */  VK_TAB,
    /* 0E */  VK_OEM_3,
    /* 0F */  VK_CLEAR,
    /* 10 */  VK_F14,
    /* 11 */  VK_LMENU,
    /* 12 */  VK_LSHIFT,
    /* 13 */  0,
    /* 14 */  VK_LCONTROL,
    /* 15 */  'Q',
    /* 16 */  '1',
    /* 17 */  VK_OEM_WSCTRL,
    /* 18 */  VK_F15,
    /* 19 */  VK_OEM_RESET,
    /* 1A */  'Z',
    /* 1B */  'S',
    /* 1C */  'A',
    /* 1D */  'W',
    /* 1E */  '2',
    /* 1F */  VK_OEM_FINISH,
    /* 20 */  VK_F16,
    /* 21 */  'C',
    /* 22 */  'X',
    /* 23 */  'D',
    /* 24 */  'E',
    /* 25 */  '4',
    /* 26 */  '3',
    /* 27 */  VK_OEM_JUMP,
    /* 28 */  VK_F17,
    /* 29 */  VK_SPACE,
    /* 2A */  'V',
    /* 2B */  'F',
    /* 2C */  'T',
    /* 2D */  'R',
    /* 2E */  '5',
    /* 2F */  VK_EREOF,
    /* 30 */  VK_F18,
    /* 31 */  'N',
    /* 32 */  'B',
    /* 33 */  'H',
    /* 34 */  'G',
    /* 35 */  'Y',
    /* 36 */  '6',
    /* 37 */  VK_OEM_BACKTAB,
    /* 38 */  VK_F19,
    /* 39 */  0,
    /* 3A */  'M',
    /* 3B */  'J',
    /* 3C */  'U',
    /* 3D */  '7',
    /* 3E */  '8',
    /* 3F */  VK_OEM_AUTO,
    /* 40 */  VK_F20,
    /* 41 */  VK_OEM_COMMA,
    /* 42 */  'K',
    /* 43 */  'I',
    /* 44 */  'O',
    /* 45 */  '0',
    /* 46 */  '9',
    /* 47 */  0,
    /* 48 */  VK_F21,
    /* 49 */  VK_OEM_PERIOD,
    /* 4A */  VK_OEM_2,
    /* 4B */  'L',
    /* 4C */  VK_OEM_1,
    /* 4D */  'P',
    /* 4E */  VK_OEM_MINUS,
    /* 4F */  0,
    /* 50 */  VK_F22,
    /* 51 */  VK_ABNT_C1,
    /* 52 */  VK_OEM_7,
    /* 53 */  0,
    /* 54 */  VK_OEM_4,
    /* 55 */  VK_OEM_PLUS,
    /* 56 */  VK_ZOOM,
    /* 57 */  VK_F23,
    /* 58 */  VK_CAPITAL,
    /* 59 */  VK_RSHIFT,
    /* 5A */  VK_RETURN,
    /* 5B */  VK_OEM_6,
    /* 5C */  0,
    /* 5D */  VK_OEM_5,
    /* 5E */  VK_HELP,
    /* 5F */  VK_F24,
    /* 60 */  0,
    /* 61 */  VK_OEM_102,
    /* 62 */  0,
    /* 63 */  0,
    /* 64 */  0,
    /* 65 */  0,
    /* 66 */  VK_BACK,
    /* 67 */  VK_OEM_PA1,
    /* 68 */  VK_TAB,
    /* 69 */  VK_NUMPAD1,
    /* 6A */  0,
    /* 6B */  VK_NUMPAD4,
    /* 6C */  VK_NUMPAD7,
    /* 6D */  VK_ABNT_C2,
    /* 6E */  0,
    /* 6F */  VK_OEM_PA3,
    /* 70 */  VK_NUMPAD0,
    /* 71 */  VK_DECIMAL,
    /* 72 */  VK_NUMPAD2,
    /* 73 */  VK_NUMPAD5,
    /* 74 */  VK_NUMPAD6,
    /* 75 */  VK_NUMPAD8,
    /* 76 */  VK_ESCAPE,
    /* 77 */  VK_NUMLOCK,
    /* 78 */  VK_F11,
    /* 79 */  VK_ADD,
    /* 7A */  VK_NUMPAD3,
    /* 7B */  VK_SUBTRACT,
    /* 7C */  VK_MULTIPLY,
    /* 7D */  VK_NUMPAD9,
    /* 7E */  VK_SCROLL,
    /* 7F */  0,
    /* 80 */  0,
    /* 81 */  0,
    /* 82 */  0,
    /* 83 */  VK_F7,
    /* 84 */  VK_SNAPSHOT,
};

static ScanCodeToVKeyData scvk = {
    0x00,
    dwScToVkFirst,
    dwScToVkLast,
    rguiScToVk
};


static const DWORD dwE0ScToVkFirst = 0xE010;
static const DWORD dwE0ScToVkLast  = 0xE07E;
static UINT8 rguiE0ScToVk[] = {
    /* E010 */  VK_BROWSER_SEARCH,
    /* E011 */  VK_RMENU,
    /* E012 */  0,
    /* E013 */  0,
    /* E014 */  VK_RCONTROL,
    /* E015 */  VK_MEDIA_PREV_TRACK,
    /* E016 */  0,
    /* E017 */  0,
    /* E018 */  VK_BROWSER_FAVORITES,
    /* E019 */  0,
    /* E01A */  0,
    /* E01B */  0,
    /* E01C */  0,
    /* E01D */  0,
    /* E01E */  0,
    /* E01F */  VK_LWIN,
    /* E020 */  VK_BROWSER_REFRESH,
    /* E021 */  VK_VOLUME_DOWN,
    /* E022 */  0,
    /* E023 */  VK_VOLUME_MUTE,
    /* E024 */  0,
    /* E025 */  0,
    /* E026 */  0,
    /* E027 */  VK_RWIN,
    /* E028 */  VK_BROWSER_STOP,
    /* E029 */  0,
    /* E02A */  0,
    /* E02B */  VK_LAUNCH_APP2,
    /* E02C */  0,
    /* E02D */  0,
    /* E02E */  0,
    /* E02F */  VK_APPS,
    /* E030 */  VK_BROWSER_FORWARD,
    /* E031 */  0,
    /* E032 */  VK_VOLUME_UP,
    /* E033 */  0,
    /* E034 */  VK_MEDIA_PLAY_PAUSE,
    /* E035 */  0,
    /* E036 */  0,
    /* E037 */  0,
    /* E038 */  VK_BROWSER_BACK,
    /* E039 */  0,
    /* E03A */  VK_BROWSER_HOME,
    /* E03B */  VK_MEDIA_STOP,
    /* E03C */  0,
    /* E03D */  0,
    /* E03E */  0,
    /* E03F */  VK_OEM_8,
    /* E040 */  VK_LAUNCH_APP1,
    /* E041 */  0,
    /* E042 */  0,
    /* E043 */  0,
    /* E044 */  0,
    /* E045 */  0,
    /* E046 */  0,
    /* E047 */  0,
    /* E048 */  VK_LAUNCH_MAIL,
    /* E049 */  0,
    /* E04A */  VK_DIVIDE,
    /* E04B */  0,
    /* E04C */  0,
    /* E04D */  VK_MEDIA_NEXT_TRACK,
    /* E04E */  0,
    /* E04F */  0,
    /* E050 */  VK_LAUNCH_MEDIA_SELECT,
    /* E051 */  0,
    /* E052 */  0,
    /* E053 */  0,
    /* E054 */  0,
    /* E055 */  0,
    /* E056 */  0,
    /* E057 */  0,
    /* E058 */  0,
    /* E059 */  0,
    /* E05A */  VK_RETURN,
    /* E05B */  0,
    /* E05C */  0,
    /* E05D */  0,
    /* E05E */  0,
    /* E05F */  0,
    /* E060 */  0,
    /* E061 */  0,
    /* E062 */  0,
    /* E063 */  0,
    /* E064 */  0,
    /* E065 */  0,
    /* E066 */  0,
    /* E067 */  0,
    /* E068 */  0,
    /* E069 */  VK_END,
    /* E06A */  0,
    /* E06B */  VK_LEFT,
    /* E06C */  VK_HOME,
    /* E06D */  0,
    /* E06E */  0,
    /* E06F */  0,
    /* E070 */  VK_INSERT,
    /* E071 */  VK_DELETE,
    /* E072 */  VK_DOWN,
    /* E073 */  0,
    /* E074 */  VK_RIGHT,
    /* E075 */  VK_UP,
    /* E076 */  0,
    /* E077 */  0,
    /* E078 */  0,
    /* E079 */  0,
    /* E07A */  VK_NEXT,
    /* E07B */  0,
    /* E07C */  VK_SNAPSHOT,
    /* E07D */  VK_PRIOR,
    /* E07E */  VK_CANCEL,
};

static ScanCodeToVKeyData scvkE0 = {
    0xE000,
    dwE0ScToVkFirst,
    dwE0ScToVkLast,
    rguiE0ScToVk
};


static const DWORD dwE114ScToVkFirst = 0xE11477;
static const DWORD dwE114ScToVkLast  = 0xE11477;
static UINT8 rguiE114ScToVk[] = {
    /* E11477 */  VK_PAUSE,
};

static ScanCodeToVKeyData scvkE114 = {
    0xE11400,
    dwE114ScToVkFirst,
    dwE114ScToVkLast,
    rguiE114ScToVk
};


static ScanCodeToVKeyData *rgscvkAT[] = {
    &scvk, &scvkE0, &scvkE114
};


//-----------------------------------------------------------------------------
// Remapping function

#define IsShiftModifier(x) ((x) == VK_LSHIFT || (x) == VK_RSHIFT || \
	(x) == VK_LCONTROL || (x) == VK_RCONTROL || (x) == VK_LMENU || (x) == VK_RMENU || \
	(x) == VK_LWIN || (x) == VK_RWIN)


static
UINT
WINAPI
ATRemapVKey(
    const KEYBD_EVENT *pKbdEvents,
    UINT               cKbdEvents,
    KEYBD_EVENT       *pRmpKbdEvents,
    UINT               cMaxRmpKbdEvents
    )
{
    UINT cRmpKbdEvents;

    if (pRmpKbdEvents == NULL) {
        // 1 to 1 mapping for whatever NumPadRemapVKey returns
        ASSERT(cMaxRmpKbdEvents == 0);
        return NumPadRemapVKey(pKbdEvents, cKbdEvents, NULL, 0);
    }
    
    ASSERT(pKbdEvents != NULL);

    // We know that we will only map one input to one output. Thus, we only
    // need for NumPadRemapVKey() to check the number of input events since
    // we will not use more than it does. If the buffer is not large enough
    // cRmpKbdEvents will be 0 and we will return 0.
    cRmpKbdEvents = NumPadRemapVKey(pKbdEvents, cKbdEvents, 
        pRmpKbdEvents, cMaxRmpKbdEvents);

    for (UINT ui = 0; ui < cRmpKbdEvents; ++ui) 
    {
        if (pRmpKbdEvents[ui].KeyStateFlags & KeyStateDownFlag) {
            UINT32 vkOnly = LOBYTE(pRmpKbdEvents[ui].uiVk);

            // If the incoming key is a shift modifier of some sort, turn off keyclick autorepeat by default.
            // We will allow the shift key to click on the first press, since many keyboards don't have built-in
            // sound generators and users appreciate audible feedback when they press a key.
            if(IsShiftModifier(vkOnly) || vkOnly == VK_CAPITAL || vkOnly == VK_NUMLOCK) {
                pRmpKbdEvents[ui].uiVk |= KEYBD_DEVICE_SILENT_REPEAT;
            }
        }
    }

    return cRmpKbdEvents;
}
#ifdef DEBUG
// Verify function declaration against the typedef.
static PFN_KEYBD_REMAP g_pfnATRemapVKey = ATRemapVKey;
#endif


static DEVICE_LAYOUT dlAT =
{
    sizeof(DEVICE_LAYOUT),
    PS2_AT_PDD | PS2_NOP_PDD,
    rgscvkAT,
    dim(rgscvkAT),
    ATRemapVKey,
};


extern "C"
BOOL
PS2_AT_00000446(
    PDEVICE_LAYOUT pDeviceLayout
    )
{
    PREFAST_ASSERT(pDeviceLayout != NULL);

    BOOL fRet = FALSE;

    if (pDeviceLayout->dwSize != sizeof(DEVICE_LAYOUT)) {
        RETAILMSG(1, (_T("PS2_AT_00000446: data structure size mismatch\r\n")));
        goto leave;
    }

    // Make sure that the Sc->Vk tables are the sizes that we expect
    ASSERT(dim(rguiScToVk    ) == (1 + dwScToVkLast     - dwScToVkFirst    ));
    ASSERT(dim(rguiE0ScToVk  ) == (1 + dwE0ScToVkLast   - dwE0ScToVkFirst  ));
    ASSERT(dim(rguiE114ScToVk) == (1 + dwE114ScToVkLast - dwE114ScToVkFirst));

    *pDeviceLayout = dlAT;

    fRet = TRUE;

leave:
    return fRet;
}
#ifdef DEBUG
// Verify function declaration against the typedef.
static PFN_DEVICE_LAYOUT_ENTRY g_pfnDLEntry = PS2_AT_00000446;
#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美疯狂做受xxxx富婆| 久久精品国产一区二区三| 日本网站在线观看一区二区三区 | 国产精品久久久久久亚洲毛片 | 精品捆绑美女sm三区| 《视频一区视频二区| 久久电影网电视剧免费观看| 欧美在线免费观看亚洲| 久久久久久久久99精品| 日日摸夜夜添夜夜添国产精品| 亚洲男人都懂的| 麻豆国产欧美一区二区三区| 日本韩国欧美国产| 亚洲视频一区在线观看| 国产成人免费视频网站| 2021中文字幕一区亚洲| 天堂成人免费av电影一区| 91在线小视频| 国产精品网站在线| 国产成人免费视频精品含羞草妖精 | 国产福利一区在线观看| 欧美一区二区三区免费视频| 亚洲一区二区三区国产| 日本韩国一区二区| 亚洲国产日日夜夜| 色婷婷综合久色| 中文字幕亚洲电影| av中文字幕在线不卡| 中文字幕一区在线观看视频| 亚洲国产成人av| 午夜伦理一区二区| 日韩精品视频网| 欧美三级在线播放| 奇米精品一区二区三区在线观看 | 99国产一区二区三精品乱码| 中文字幕第一区第二区| 岛国一区二区在线观看| 最新国产の精品合集bt伙计| www.亚洲精品| 亚洲综合一区二区精品导航| 欧美日韩在线播放| 蜜臀av性久久久久蜜臀aⅴ流畅| 极品销魂美女一区二区三区| 欧美电影免费提供在线观看| 韩国理伦片一区二区三区在线播放 | 青青国产91久久久久久| 91精品婷婷国产综合久久性色| 国产精品天干天干在观线 | 精品成a人在线观看| 在线不卡a资源高清| 中文字幕精品在线不卡| 成人av在线播放网址| 久久精品免费在线观看| 成人免费视频视频在线观看免费| 色一情一伦一子一伦一区| 一区二区视频在线| 91麻豆精品国产自产在线观看一区| 国产精品欧美经典| 欧美日韩精品欧美日韩精品一综合| 国产亚洲成aⅴ人片在线观看 | av成人动漫在线观看| 亚洲一区视频在线| 91精品久久久久久久99蜜桃| 国产精品1区二区.| 91久久精品一区二区三区| 久久久精品国产99久久精品芒果| 亚洲欧洲在线观看av| 99久久er热在这里只有精品66| 日韩欧美一区在线观看| 国产精品18久久久久久久网站| 欧美精品 日韩| 成人黄色综合网站| 日本亚洲三级在线| ...中文天堂在线一区| 91精品福利在线一区二区三区 | 国产.精品.日韩.另类.中文.在线.播放| 精品国产一二三区| 成人综合在线观看| 午夜精品一区二区三区免费视频 | 亚洲国产精品综合小说图片区| 蜜桃精品视频在线| 北条麻妃国产九九精品视频| 国产精品2024| 午夜精品福利久久久| 国产精品妹子av| 欧美大片拔萝卜| 精品婷婷伊人一区三区三| 成人美女视频在线看| 久久不见久久见免费视频7 | 奇米影视7777精品一区二区| 亚洲色图在线视频| 久久久99精品免费观看| 精品免费国产一区二区三区四区| 免费观看91视频大全| 国产精品久久久久久亚洲毛片 | 中文字幕一区二区三区视频| 精品国内片67194| 日本韩国精品在线| 国产盗摄女厕一区二区三区| 不卡av免费在线观看| 成人性生交大片免费看视频在线| 国产精品五月天| 久久精品日产第一区二区三区高清版| 国产一区二区中文字幕| 日韩国产欧美三级| 日韩专区在线视频| 亚洲成av人片在线| 图片区小说区国产精品视频| 亚洲另类中文字| 一区二区视频在线看| 一区二区三区蜜桃网| 亚洲激情男女视频| 亚洲国产sm捆绑调教视频| 亚洲h动漫在线| 免费观看日韩电影| 蜜臀久久99精品久久久久宅男| 日韩免费高清av| 日韩精品专区在线| 精品免费一区二区三区| 久久精品夜色噜噜亚洲a∨| 国产色综合久久| 国产精品国产三级国产aⅴ中文| 欧美日韩午夜在线视频| 4438x亚洲最大成人网| 在线综合亚洲欧美在线视频| 精品成人在线观看| 日本一二三不卡| 亚洲夂夂婷婷色拍ww47| 全国精品久久少妇| 国产美女一区二区三区| 成人高清视频在线观看| 99久久久国产精品| 精品视频在线免费| 欧美电影免费提供在线观看| 国产日韩欧美精品电影三级在线| 555夜色666亚洲国产免| 欧美不卡激情三级在线观看| 国产视频911| 亚洲国产日韩精品| 精品一区二区免费看| 成年人国产精品| 色婷婷激情一区二区三区| 欧美精选午夜久久久乱码6080| 色综合色综合色综合色综合色综合| 另类欧美日韩国产在线| 成人99免费视频| 在线不卡欧美精品一区二区三区| 91在线视频网址| 制服丝袜在线91| 久久人人超碰精品| 一区二区三区美女| 国产一区二区网址| 欧美日韩日日骚| 国产精品网站在线观看| 午夜精品福利视频网站| www.激情成人| 日韩免费视频一区| 亚洲午夜av在线| 成人福利电影精品一区二区在线观看 | 欧美日韩国产片| 国产精品无遮挡| 日韩av午夜在线观看| www.欧美日韩| 国产亚洲精品免费| 五月激情综合婷婷| 一区二区三国产精华液| 日韩美女视频在线| 国产成人免费视频精品含羞草妖精| 日韩av电影免费观看高清完整版在线观看| 国产亚洲综合色| 午夜精品久久久| 精品久久一区二区| 亚洲另类在线制服丝袜| 国产精品91一区二区| 日韩一区二区在线观看视频播放| 欧美美女直播网站| 亚洲另类春色国产| 成人免费毛片a| 久久久精品国产免费观看同学| 日韩精品一区二区三区中文不卡 | 972aa.com艺术欧美| 国产亚洲美州欧州综合国| 亚洲第一综合色| 欧美三级韩国三级日本一级| 亚洲欧洲另类国产综合| 成人av手机在线观看| 国产日韩欧美制服另类| 国产一区亚洲一区| 日韩欧美不卡在线观看视频| 日韩精品一二三| 欧美一级专区免费大片| 日韩影院精彩在线| 这里只有精品电影| 婷婷综合五月天| 91精品国产麻豆国产自产在线 | 精品1区2区3区| 亚洲成人手机在线| 91精品久久久久久久久99蜜臂 | 欧美一级片在线看| 美女免费视频一区|