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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? kbda1.cpp

?? 此代碼為WCE5.0下鍵盤驅(qū)動(dòng)的源代碼
?? CPP
字號(hào):
//
// 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\kbda1.dll
// for input locale 00000401


// 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_00000401(
    PDEVICE_LAYOUT pDeviceLayout
    )
{
    PREFAST_ASSERT(pDeviceLayout != NULL);

    BOOL fRet = FALSE;

    if (pDeviceLayout->dwSize != sizeof(DEVICE_LAYOUT)) {
        RETAILMSG(1, (_T("PS2_AT_00000401: 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_00000401;
#endif

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美人xxxx| 亚洲国产另类av| 亚洲精品成人精品456| 青椒成人免费视频| av电影在线观看一区| 日韩欧美久久一区| 一区二区国产盗摄色噜噜| 国内久久精品视频| 91精品欧美一区二区三区综合在| 欧美激情中文字幕一区二区| 美腿丝袜亚洲综合| 欧美性生活影院| 中文字幕日韩一区| 国产成人一区在线| 精品国产亚洲在线| 免费精品视频在线| 6080午夜不卡| 午夜欧美视频在线观看| 91看片淫黄大片一级| 国产精品色婷婷| 丁香另类激情小说| 中文字幕av一区二区三区| 国产呦萝稀缺另类资源| 精品久久久久久久久久久院品网| 亚洲h精品动漫在线观看| 色综合网色综合| 亚洲天堂av一区| 99久久99久久精品免费观看| 亚洲国产精品传媒在线观看| 国产精品综合网| 国产午夜精品久久| 国产乱人伦偷精品视频不卡| 久久综合久久鬼色中文字| 久草中文综合在线| 久久免费偷拍视频| 成人免费毛片aaaaa**| 久久精品这里都是精品| 国产v日产∨综合v精品视频| 国产欧美一区二区三区在线看蜜臀 | 亚洲天堂久久久久久久| 91在线国产观看| 亚洲另类在线一区| 欧美综合在线视频| 亚洲第一精品在线| 日韩一区二区麻豆国产| 狠狠狠色丁香婷婷综合久久五月| 精品久久国产老人久久综合| 国产精品1区2区3区在线观看| www激情久久| 不卡大黄网站免费看| 亚洲女人****多毛耸耸8| 欧美性猛片xxxx免费看久爱| 日韩二区在线观看| 国产日韩高清在线| av一本久道久久综合久久鬼色| 亚洲三级在线播放| 欧美一区二区视频在线观看| 国产精品白丝jk黑袜喷水| 亚洲欧洲精品一区二区三区| 欧美亚洲自拍偷拍| 精品一区二区在线看| 国产精品你懂的| 欧美欧美欧美欧美首页| 久久99精品久久久久久国产越南 | 久久99精品久久久久久国产越南| 国产拍揄自揄精品视频麻豆| 99精品国产热久久91蜜凸| 午夜精品福利一区二区三区av| 久久一二三国产| 一本色道亚洲精品aⅴ| 蜜桃久久久久久久| 国产精品美女久久久久久| 欧美日韩美女一区二区| 国产乱码精品一品二品| 亚洲成人www| 国产精品伦理在线| 日韩午夜小视频| 一本大道av一区二区在线播放| 免费一级欧美片在线观看| 国产精品三级久久久久三级| 欧美一级片在线看| 欧美在线|欧美| 丁香天五香天堂综合| 日韩激情av在线| 亚洲精品五月天| 久久精品欧美一区二区三区麻豆| 欧美视频一区在线| 成人免费毛片嘿嘿连载视频| 捆绑紧缚一区二区三区视频| 亚洲综合色婷婷| 国产精品看片你懂得| 精品sm捆绑视频| 欧美疯狂性受xxxxx喷水图片| av在线播放一区二区三区| 国产一区二区三区电影在线观看| 午夜国产不卡在线观看视频| 亚洲欧美日韩在线| 国产精品久久久久aaaa樱花| 精品对白一区国产伦| 日韩欧美亚洲另类制服综合在线| 欧美三级韩国三级日本三斤| 91啪亚洲精品| 91热门视频在线观看| 懂色av噜噜一区二区三区av| 国产一区二区三区不卡在线观看| 蜜桃一区二区三区在线| 日韩成人av影视| 亚洲超丰满肉感bbw| 亚洲国产精品久久人人爱蜜臀| 亚洲欧美另类图片小说| 亚洲欧洲成人自拍| 国产精品美女久久久久高潮| 国产校园另类小说区| 国产亚洲一区二区三区四区| 久久久久久**毛片大全| 337p日本欧洲亚洲大胆色噜噜| 欧美夫妻性生活| 欧美一区二区成人| 日韩视频免费观看高清完整版在线观看 | 国产精品久久影院| 中文字幕不卡三区| 1024成人网| 亚洲欧美国产77777| 亚洲制服丝袜一区| 午夜日韩在线电影| 久久99精品久久久| 国产99久久精品| 91日韩在线专区| 欧美三级乱人伦电影| 欧美一区二区三区系列电影| 日韩精品中午字幕| 国产欧美日韩综合精品一区二区| 亚洲国产精品黑人久久久| 亚洲欧美日韩成人高清在线一区| 亚洲女同女同女同女同女同69| 亚洲成av人片观看| 乱中年女人伦av一区二区| 国产999精品久久久久久绿帽| 不卡免费追剧大全电视剧网站| 色综合久久综合中文综合网| 欧美日韩一区二区在线观看视频| 5858s免费视频成人| 久久亚洲综合色一区二区三区| 国产农村妇女毛片精品久久麻豆 | thepron国产精品| 欧美亚洲动漫精品| 欧美一区二区三区不卡| 中文av一区二区| 亚洲一区二区欧美日韩| 久久91精品国产91久久小草 | 一色桃子久久精品亚洲| 亚洲午夜免费电影| 国产精品一二三四区| 日本福利一区二区| 精品国产91洋老外米糕| 亚洲黄色免费网站| 国产一区二区毛片| 欧美日韩一本到| 国产亚洲欧洲一区高清在线观看| 悠悠色在线精品| 国产精品一区2区| 欧美男男青年gay1069videost| 久久综合av免费| 亚洲国产视频在线| 丁香六月久久综合狠狠色| 69精品人人人人| 亚洲色图欧美激情| 国产成人无遮挡在线视频| 欧美色综合天天久久综合精品| 久久欧美一区二区| 日韩精品亚洲一区二区三区免费| 岛国精品在线观看| 日韩欧美国产综合在线一区二区三区| 中文字幕一区二区5566日韩| 麻豆国产精品一区二区三区| 色婷婷狠狠综合| 中文一区二区完整视频在线观看| 五月天中文字幕一区二区| 93久久精品日日躁夜夜躁欧美| 精品99一区二区三区| 日本不卡不码高清免费观看| 色婷婷综合五月| 中文字幕亚洲一区二区va在线| 久久91精品久久久久久秒播| 91精品国产综合久久久久久久 | 色婷婷av一区二区三区大白胸| 国产亚洲一本大道中文在线| 男人操女人的视频在线观看欧美| 欧美亚洲国产怡红院影院| 中文字幕在线不卡国产视频| 国产大片一区二区| 国产三级精品三级在线专区| 精品一区二区免费| 欧美tickling挠脚心丨vk| 欧美aaaaaa午夜精品| 717成人午夜免费福利电影| 亚洲成av人片在www色猫咪| 欧美日韩国产综合视频在线观看| 亚洲图片自拍偷拍| 欧美熟乱第一页|