Neue kbd-Treiber für XP von Florian Janßen
This commit is contained in:
parent
3bed2d9cc4
commit
938ce92dcb
|
@ -0,0 +1,117 @@
|
|||
BUILD: Computing Include file dependencies:
|
||||
BUILD: Examining c:\winddk\6001.17051\src\input\layout\all_kbds\kbdneo2 directory for files to compile.
|
||||
skipping post pass 0 command
|
||||
Compiling c:\winddk\6001.17051\src\input\layout\all_kbds\kbdneo2 *************
|
||||
'nmake.exe /nologo BUILDMSG=Stop. -i BUILD_PASS=PASS1 NOLINK=1 NOPASS0=1 MAKEDIR_RELATIVE_TO_BASEDIR=src\input\layout\all_kbds\kbdneo2'
|
||||
BUILDMSG: _NT_TARGET_VERSION SET TO WINXP
|
||||
cl.exe @c:\winddk\6001.17051\src\input\layout\all_kbds\kbdneo2\objchk_wxp_x86\i386\cl.rsp
|
||||
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.278 for 80x86
|
||||
Copyright (C) Microsoft Corporation. All rights reserved.
|
||||
cl /Fo"c:\winddk\6001.17051\src\input\layout\all_kbds\kbdneo2\objchk_wxp_x86\i386/"
|
||||
/FC
|
||||
/Ii386
|
||||
/I.
|
||||
/I..\..\inc
|
||||
/Ic:\winddk\6001.17051\src\input\layout\all_kbds\kbdneo2\objchk_wxp_x86\i386
|
||||
/IC:\WinDDK\6001.17051\inc\api
|
||||
/IC:\WinDDK\6001.17051\inc\api
|
||||
/IC:\WinDDK\6001.17051\inc\crt
|
||||
/D_X86_=1
|
||||
/Di386=1
|
||||
/DSTD_CALL
|
||||
/DCONDITION_HANDLING=1
|
||||
/DNT_INST=0
|
||||
/DWIN32=100
|
||||
/D_NT1X_=100
|
||||
/DWINNT=1
|
||||
/D_WIN32_WINNT=0x0501
|
||||
/DWINVER=0x0501
|
||||
/D_WIN32_IE=0x0603
|
||||
/DWIN32_LEAN_AND_MEAN=1
|
||||
/DDEVL=1
|
||||
/DDBG=1
|
||||
/D__BUILDMACHINE__=WinDDK
|
||||
/DFPO=0
|
||||
/DNDEBUG
|
||||
/DDEPRECATE_DDK_FUNCTIONS=1
|
||||
/DMSC_NOOPT
|
||||
/DNTDDI_VERSION=0x05010200
|
||||
/c
|
||||
/Zc:wchar_t-
|
||||
/Zl
|
||||
/Zp8
|
||||
/Gy
|
||||
/Gm-
|
||||
/W3
|
||||
/Gz
|
||||
/hotpatch
|
||||
/EHs-c-
|
||||
/GR-
|
||||
/GF
|
||||
/GS-
|
||||
/Zi
|
||||
/Od
|
||||
/Oi
|
||||
/Oy-
|
||||
/Zi
|
||||
/Fdc:\winddk\6001.17051\src\input\layout\all_kbds\kbdneo2\objchk_wxp_x86\i386\
|
||||
/DKMDF_MAJOR_VERSION=01
|
||||
/DKMDF_MINOR_VERSION=007
|
||||
/FIC:\WinDDK\6001.17051\inc\api\warning.h
|
||||
.\kbdneo2.c
|
||||
kbdneo2.c
|
||||
link.exe /lib /out:c:\winddk\6001.17051\src\input\layout\all_kbds\kbdneo2\objchk_wxp_x86\i386\kbdneo2.lib @c:\winddk\6001.17051\src\input\layout\all_kbds\kbdneo2\objchk_wxp_x86\i386\lib.rsp
|
||||
Microsoft (R) Library Manager Version 8.00.50727.278
|
||||
Copyright (C) Microsoft Corporation. All rights reserved.
|
||||
/IGNORE:4198,4010,4037,4039,4065,4070,4078,4087,4089,4221
|
||||
/WX
|
||||
/nodefaultlib
|
||||
/machine:ix86
|
||||
/def:kbdneo2.def
|
||||
c:\winddk\6001.17051\src\input\layout\all_kbds\kbdneo2\objchk_wxp_x86\i386\kbdneo2.obj
|
||||
Creating library c:\winddk\6001.17051\src\input\layout\all_kbds\kbdneo2\objchk_wxp_x86\i386\kbdneo2.lib and object c:\winddk\6001.17051\src\input\layout\all_kbds\kbdneo2\objchk_wxp_x86\i386\kbdneo2.exp
|
||||
Linking for c:\winddk\6001.17051\src\input\layout\all_kbds\kbdneo2 *************
|
||||
'nmake.exe /nologo BUILDMSG=Stop. -i BUILD_PASS=PASS2 LINKONLY=1 NOPASS0=1 MAKEDLL=1 MAKEDIR_RELATIVE_TO_BASEDIR=src\input\layout\all_kbds\kbdneo2'
|
||||
BUILDMSG: _NT_TARGET_VERSION SET TO WINXP
|
||||
rc -l 409 -DSXS_PROCESSOR_ARCHITECTURE="""x86""" -DSXS_TARGET="""kbdneo2.dll""" -DSYSTEM_COMPATIBLE_ASSEMBLY_NAME="""Microsoft.Windows.SystemCompatible""" -DLSYSTEM_COMPATIBLE_ASSEMBLY_NAME=L"""Microsoft.Windows.SystemCompatible""" -DSXS_ASSEMBLY_VERSION="""""" /r /fo c:\winddk\6001.17051\src\input\layout\all_kbds\kbdneo2\objchk_wxp_x86\i386\kbdneo2.res /D_X86_=1 /Di386=1 /DSTD_CALL /DCONDITION_HANDLING=1 /DNT_INST=0 /DWIN32=100 /D_NT1X_=100 /DWINNT=1 /D_WIN32_WINNT=0x0501 /DWINVER=0x0501 /D_WIN32_IE=0x0603 /DWIN32_LEAN_AND_MEAN=1 /DDEVL=1 /DDBG=1 /D__BUILDMACHINE__=WinDDK /DFPO=0 /DNDEBUG /DDEPRECATE_DDK_FUNCTIONS=1 /DMSC_NOOPT /DNTDDI_VERSION=0x05010200 /I..\..\inc /Ic:\winddk\6001.17051\src\input\layout\all_kbds\kbdneo2\objchk_wxp_x86\i386 /IC:\WinDDK\6001.17051\inc\api /IC:\WinDDK\6001.17051\inc\api /IC:\WinDDK\6001.17051\inc\crt .\kbdneo2.rc
|
||||
Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0
|
||||
Copyright (C) Microsoft Corporation. All rights reserved.
|
||||
link.exe /out:c:\winddk\6001.17051\src\input\layout\all_kbds\kbdneo2\objchk_wxp_x86\i386\kbdneo2.dll /machine:ix86 @c:\winddk\6001.17051\src\input\layout\all_kbds\kbdneo2\objchk_wxp_x86\i386\lnk.rsp
|
||||
Microsoft (R) Incremental Linker Version 8.00.50727.278
|
||||
Copyright (C) Microsoft Corporation. All rights reserved.
|
||||
-merge:.edata=.data
|
||||
-merge:.rdata=.data
|
||||
-merge:.text=.data
|
||||
-merge:.bss=.data
|
||||
-section:.data,re
|
||||
/ignore:4254
|
||||
/MERGE:_PAGE=PAGE
|
||||
/MERGE:_TEXT=.text
|
||||
/SECTION:INIT,d
|
||||
/OPT:REF
|
||||
/OPT:ICF
|
||||
/IGNORE:4198,4010,4037,4039,4065,4070,4078,4087,4089,4221
|
||||
/INCREMENTAL:NO
|
||||
/release
|
||||
/NODEFAULTLIB
|
||||
/WX
|
||||
/debug
|
||||
/debugtype:cv,fixup,pdata
|
||||
/version:6.0
|
||||
/osversion:6.0
|
||||
/functionpadmin:5
|
||||
/safeseh
|
||||
/opt:nowin98
|
||||
/nxcompat
|
||||
/pdbcompress
|
||||
/dynamicbase
|
||||
/STACK:0x40000,0x1000
|
||||
/dll
|
||||
/base:@C:\WinDDK\6001.17051\bin\coffbase.txt,kbdneo2
|
||||
/subsystem:native,5.01
|
||||
/noentry
|
||||
c:\winddk\6001.17051\src\input\layout\all_kbds\kbdneo2\objchk_wxp_x86\i386\kbdneo2.exp
|
||||
c:\winddk\6001.17051\src\input\layout\all_kbds\kbdneo2\objchk_wxp_x86\i386\kbdneo2.res
|
||||
c:\winddk\6001.17051\src\input\layout\all_kbds\kbdneo2\objchk_wxp_x86\i386\kbdneo2.obj
|
||||
c:\winddk\6001.17051\lib\wxp\i386\int64.lib
|
||||
c:\winddk\6001.17051\lib\wxp\i386\sehupd.lib
|
|
@ -0,0 +1,496 @@
|
|||
/***************************************************************************\
|
||||
* Module Name: KBDNEO2.C
|
||||
*
|
||||
* keyboard layout for German
|
||||
*
|
||||
* Copyright (c) 1985-2000, Microsoft Corporation
|
||||
*
|
||||
* History:
|
||||
\***************************************************************************/
|
||||
|
||||
#include <windows.h>
|
||||
#include "kbd.h"
|
||||
#include "kbdneo2.h"
|
||||
|
||||
#if defined(_M_IA64)
|
||||
#pragma section(".data")
|
||||
#define ALLOC_SECTION_LDATA __declspec(allocate(".data"))
|
||||
#else
|
||||
#pragma data_seg(".data")
|
||||
#define ALLOC_SECTION_LDATA
|
||||
#endif
|
||||
|
||||
/***************************************************************************\
|
||||
* ausVK[] - Virtual Scan Code to Virtual Key conversion table for German
|
||||
\***************************************************************************/
|
||||
|
||||
static ALLOC_SECTION_LDATA USHORT ausVK[] = {
|
||||
T00, T01, T02, T03, T04, T05, T06, T07,
|
||||
T08, T09, T0A, T0B, T0C, T0D, T0E, T0F,
|
||||
T10, T11, T12, T13, T14, T15, T16, T17,
|
||||
T18, T19, T1A, T1B, T1C, T1D, T1E, T1F,
|
||||
T20, T21, T22, T23, T24, T25, T26, T27,
|
||||
T28, T29, T2A, T2B, T2C, T2D, T2E, T2F,
|
||||
T30, T31, T32, T33, T34, T35,
|
||||
|
||||
/*
|
||||
* Right-hand Shift key must have KBDEXT bit set.
|
||||
*/
|
||||
T36 | KBDEXT,
|
||||
|
||||
T37 | KBDMULTIVK, // numpad_* + Shift/Alt -> SnapShot
|
||||
|
||||
T38, T39, T3A, T3B, T3C, T3D, T3E,
|
||||
T3F, T40, T41, T42, T43, T44,
|
||||
|
||||
/*
|
||||
* NumLock Key:
|
||||
* KBDEXT - VK_NUMLOCK is an Extended key
|
||||
* KBDMULTIVK - VK_NUMLOCK or VK_PAUSE (without or with CTRL)
|
||||
*/
|
||||
T45 | KBDEXT | KBDMULTIVK,
|
||||
|
||||
T46 | KBDMULTIVK,
|
||||
|
||||
/*
|
||||
* Number Pad keys:
|
||||
* KBDNUMPAD - digits 0-9 and decimal point.
|
||||
* KBDSPECIAL - require special processing by Windows
|
||||
*/
|
||||
T47 | KBDNUMPAD | KBDSPECIAL, // Numpad 7 (Home)
|
||||
T48 | KBDNUMPAD | KBDSPECIAL, // Numpad 8 (Up),
|
||||
T49 | KBDNUMPAD | KBDSPECIAL, // Numpad 9 (PgUp),
|
||||
T4A,
|
||||
T4B | KBDNUMPAD | KBDSPECIAL, // Numpad 4 (Left),
|
||||
T4C | KBDNUMPAD | KBDSPECIAL, // Numpad 5 (Clear),
|
||||
T4D | KBDNUMPAD | KBDSPECIAL, // Numpad 6 (Right),
|
||||
T4E,
|
||||
T4F | KBDNUMPAD | KBDSPECIAL, // Numpad 1 (End),
|
||||
T50 | KBDNUMPAD | KBDSPECIAL, // Numpad 2 (Down),
|
||||
T51 | KBDNUMPAD | KBDSPECIAL, // Numpad 3 (PgDn),
|
||||
T52 | KBDNUMPAD | KBDSPECIAL, // Numpad 0 (Ins),
|
||||
T53 | KBDNUMPAD | KBDSPECIAL, // Numpad . (Del),
|
||||
|
||||
T54, T55, T56, T57, T58, T59, T5A, T5B,
|
||||
T5C, T5D, T5E, T5F, T60, T61, T62, T63,
|
||||
T64, T65, T66, T67, T68, T69, T6A, T6B,
|
||||
T6C, T6D, T6E, T6F, T70, T71, T72, T73,
|
||||
T74, T75, T76, T77, T78, T79, T7A, T7B,
|
||||
T7C, T7D, T7E
|
||||
|
||||
};
|
||||
|
||||
static ALLOC_SECTION_LDATA VSC_VK aE0VscToVk[] = {
|
||||
{ 0x10, X10 | KBDEXT }, // Speedracer: Previous Track
|
||||
{ 0x19, X19 | KBDEXT }, // Speedracer: Next Track
|
||||
{ 0x1D, X1D | KBDEXT }, // RControl
|
||||
{ 0x20, X20 | KBDEXT }, // Speedracer: Volume Mute
|
||||
{ 0x21, X21 | KBDEXT }, // Speedracer: Launch App 2
|
||||
{ 0x22, X22 | KBDEXT }, // Speedracer: Media Play/Pause
|
||||
{ 0x24, X24 | KBDEXT }, // Speedracer: Media Stop
|
||||
{ 0x2E, X2E | KBDEXT }, // Speedracer: Volume Down
|
||||
{ 0x30, X30 | KBDEXT }, // Speedracer: Volume Up
|
||||
{ 0x32, X32 | KBDEXT }, // Speedracer: Browser Home
|
||||
{ 0x35, X35 | KBDEXT }, // Numpad Divide
|
||||
{ 0x37, X37 | KBDEXT }, // Snapshot
|
||||
{ 0x38, X38 | KBDEXT }, // RMenu
|
||||
{ 0x47, X47 | KBDEXT }, // Home
|
||||
{ 0x48, X48 | KBDEXT }, // Up
|
||||
{ 0x49, X49 | KBDEXT }, // Prior
|
||||
{ 0x4B, X4B | KBDEXT }, // Left
|
||||
{ 0x4D, X4D | KBDEXT }, // Right
|
||||
{ 0x4F, X4F | KBDEXT }, // End
|
||||
{ 0x50, X50 | KBDEXT }, // Down
|
||||
{ 0x51, X51 | KBDEXT }, // Next
|
||||
{ 0x52, X52 | KBDEXT }, // Insert
|
||||
{ 0x53, X53 | KBDEXT }, // Delete
|
||||
{ 0x5B, X5B | KBDEXT }, // Left Win
|
||||
{ 0x5C, X5C | KBDEXT }, // Right Win
|
||||
{ 0x5D, X5D | KBDEXT }, // Application
|
||||
{ 0x5F, X5F | KBDEXT }, // Speedracer: Sleep
|
||||
{ 0x65, X65 | KBDEXT }, // Speedracer: Browser Search
|
||||
{ 0x66, X66 | KBDEXT }, // Speedracer: Browser Favorites
|
||||
{ 0x67, X67 | KBDEXT }, // Speedracer: Browser Refresh
|
||||
{ 0x68, X68 | KBDEXT }, // Speedracer: Browser Stop
|
||||
{ 0x69, X69 | KBDEXT }, // Speedracer: Browser Forward
|
||||
{ 0x6A, X6A | KBDEXT }, // Speedracer: Browser Back
|
||||
{ 0x6B, X6B | KBDEXT }, // Speedracer: Launch App 1
|
||||
{ 0x6C, X6C | KBDEXT }, // Speedracer: Launch Mail
|
||||
{ 0x6D, X6D | KBDEXT }, // Speedracer: Launch Media Selector
|
||||
{ 0x1C, X1C | KBDEXT }, // Numpad Enter
|
||||
{ 0x46, X46 | KBDEXT }, // Break (Ctrl + Pause)
|
||||
{ 0, 0 }
|
||||
};
|
||||
|
||||
static ALLOC_SECTION_LDATA VSC_VK aE1VscToVk[] = {
|
||||
{ 0x1D, Y1D }, // Pause
|
||||
{ 0 , 0 }
|
||||
};
|
||||
|
||||
/***************************************************************************\
|
||||
* aVkToBits[] - map Virtual Keys to Modifier Bits
|
||||
*
|
||||
* See kbd.h for a full description.
|
||||
*
|
||||
* German Keyboard has only three shifter keys:
|
||||
* SHIFT (L & R) affects alphabnumeric keys,
|
||||
* CTRL (L & R) is used to generate control characters
|
||||
* ALT (L & R) used for generating characters by number with numpad
|
||||
\***************************************************************************/
|
||||
static ALLOC_SECTION_LDATA VK_TO_BIT aVkToBits[] = {
|
||||
{ VK_SHIFT , KBDSHIFT },
|
||||
{ VK_CONTROL , KBDCTRL },
|
||||
{ VK_MENU , KBDALT },
|
||||
{ VK_KANA , KBDKANA },
|
||||
{ 0 , 0 }
|
||||
};
|
||||
|
||||
/***************************************************************************\
|
||||
* aModification[] - map character modifier bits to modification number
|
||||
*
|
||||
* See kbd.h for a full description.
|
||||
*
|
||||
\***************************************************************************/
|
||||
static ALLOC_SECTION_LDATA MODIFIERS CharModifiers = {
|
||||
&aVkToBits[0],
|
||||
9,
|
||||
{
|
||||
// Modification# // Keys Pressed
|
||||
// ============= // =============
|
||||
0, //
|
||||
1, // Shift
|
||||
6, // Control
|
||||
7, // Shift + Control
|
||||
SHFT_INVALID, // Menu
|
||||
SHFT_INVALID, // Shift + Menu
|
||||
2, // Control + Menu
|
||||
3, //Shift+Control+Menu
|
||||
4, //Kana
|
||||
5 //Kana+Shift
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/***************************************************************************\
|
||||
*
|
||||
* aVkToWch2[] - Virtual Key to WCHAR translation for 2 shift states
|
||||
* aVkToWch3[] - Virtual Key to WCHAR translation for 3 shift states
|
||||
* aVkToWch4[] - Virtual Key to WCHAR translation for 4 shift states
|
||||
* aVkToWch5[] - Virtual Key to WCHAR translation for 5 shift states
|
||||
* aVkToWch6[] - Virtual Key to WCHAR translation for 6 shift states
|
||||
* aVkToWch7[] - Virtual Key to WCHAR translation for 7 shift states
|
||||
* aVkToWch8[] - Virtual Key to WCHAR translation for 8 shift states
|
||||
* aVkToWch9[] - Virtual Key to WCHAR translation for 9 shift states
|
||||
*
|
||||
* Table attributes: Unordered Scan, null-terminated
|
||||
*
|
||||
* Search this table for an entry with a matching Virtual Key to find the
|
||||
* corresponding unshifted and shifted WCHAR characters.
|
||||
*
|
||||
* Special values for VirtualKey (column 1)
|
||||
* 0xff - dead chars for the previous entry
|
||||
* 0 - terminate the list
|
||||
*
|
||||
* Special values for Attributes (column 2)
|
||||
* CAPLOK bit - CAPS-LOCK affect this key like SHIFT
|
||||
*
|
||||
* Special values for wch[*] (column 3 & 4)
|
||||
* WCH_NONE - No character
|
||||
* WCH_DEAD - Dead Key (diaresis) or invalid (US keyboard has none)
|
||||
* WCH_LGTR - Ligature (generates multiple characters)
|
||||
*
|
||||
\***************************************************************************/
|
||||
|
||||
static ALLOC_SECTION_LDATA VK_TO_WCHARS2 aVkToWch2[] = {
|
||||
// | | Shift |
|
||||
// |=========|=========|
|
||||
{VK_DECIMAL ,0 ,',' ,',' },
|
||||
{VK_ADD ,0 ,'+' ,'+' },
|
||||
{VK_DIVIDE ,0 ,'/' ,'/' },
|
||||
{VK_MULTIPLY ,0 ,'*' ,'*' },
|
||||
{VK_SUBTRACT ,0 ,'-' ,'-' },
|
||||
{0 ,0 ,0 ,0 }
|
||||
};
|
||||
|
||||
|
||||
static ALLOC_SECTION_LDATA VK_TO_WCHARS5 aVkToWch5[] = {
|
||||
// | | SHIFT | ALT+CTRL | ALT+CTL+S | KANA |
|
||||
// | |===============|================|===============|===============|
|
||||
{'1' ,CAPLOK ,'1' ,0x00b0 ,0x00B9 ,0x2640 ,0x2022 },
|
||||
{'3' ,CAPLOK ,'3' ,0x00a7 ,0x00b3 ,0x2640 ,WCH_NONE },
|
||||
{'K' ,CAPLOK ,'k' ,'K' ,'!' ,0x03BA ,0x00A1 },
|
||||
{'N' ,CAPLOK ,'n' ,'N' ,'(' ,0x03BD ,'4' },
|
||||
{'R' ,CAPLOK ,'r' ,'R' ,')' ,0x03C1 ,'5' },
|
||||
{'T' ,CAPLOK ,'t' ,'T' ,'-' ,0x03C4 ,'6' },
|
||||
{VK_OEM_5 ,CAPLOK ,0x00FC ,0x00DC ,'#' ,WCH_NONE ,0x001b },
|
||||
{0 ,0 ,0 ,0 ,0 ,0 ,0 }
|
||||
};
|
||||
|
||||
static ALLOC_SECTION_LDATA VK_TO_WCHARS6 aVkToWch6[] = {
|
||||
// | | SHIFT | ALT+CTRL | ALT+CTL+S | KANA | KANA+SHFT |
|
||||
// | |===============|================|===============|===============|================|
|
||||
{VK_OEM_1 ,0 ,WCH_DEAD ,WCH_DEAD ,WCH_DEAD ,WCH_DEAD ,WCH_DEAD ,WCH_DEAD },
|
||||
{0xff ,0 ,0x0302 ,0x030C ,0x0306 ,0x0335 ,0x00B7 ,0x0323 },
|
||||
{'4' ,CAPLOK ,'4' ,0x00bb ,0x203A ,WCH_NONE ,0x2573 ,0x2573 }, //?PgUp? ,?PgUp?
|
||||
{'5' ,CAPLOK ,'5' ,0x00ab ,0x2039 ,WCH_NONE ,WCH_NONE ,0x21D2 },
|
||||
{'7' ,CAPLOK ,'7' ,0x20AC ,0x0025 ,0x00A5 ,WCH_NONE ,0x00AC },
|
||||
{'8' ,CAPLOK ,'8' ,0x201E ,0x201A ,WCH_NONE ,0x002F ,0x2203 },
|
||||
{'9' ,CAPLOK ,'9' ,0x201C ,0x2018 ,WCH_NONE ,0x002A ,0x2200 },
|
||||
{'0' ,CAPLOK ,'0' ,0x201D ,0x2019 ,WCH_NONE ,0x002D ,0x2228 },
|
||||
{VK_OEM_MINUS ,0 ,'-' ,0x2013 ,0x2014 ,0x00AD ,0X2011 ,0x2227 },
|
||||
{VK_OEM_2 ,0 ,WCH_DEAD ,WCH_DEAD ,WCH_DEAD ,WCH_DEAD ,WCH_DEAD ,WCH_DEAD },
|
||||
{0xff ,0 ,0x0301 ,0x0300 ,0x0327 ,0x0328 ,0x0307 ,0x030a },
|
||||
{VK_TAB ,0 ,'\t' ,'\t' ,'\t' ,'\t' ,'\t' ,'\t' },
|
||||
{'X' ,CAPLOK ,'x' ,'X' ,'@' ,0x03BE ,WCH_NONE ,0x039E },
|
||||
{'V' ,CAPLOK ,'v' ,'V' ,'_' ,WCH_NONE ,'\b' ,0x039B },
|
||||
{'L' ,CAPLOK ,'l' ,'L' ,'[' ,0x03BB ,0x2573 ,0x2573 }, //?Pfeil h? ,?Pfeil h?
|
||||
{'C' ,CAPLOK ,'c' ,'C' ,']' ,0x03C7 ,'\t' ,'\t' },
|
||||
{'W' ,CAPLOK ,'w' ,'W' ,0x005E ,WCH_NONE ,0x2573 ,0x2573 }, //?Einfg? ,?Einfg?
|
||||
{'H' ,CAPLOK ,'h' ,'H' ,'<' ,0x03C8 ,'7' ,0x03A8 },
|
||||
{'G' ,CAPLOK ,'g' ,'G' ,'>' ,0x03B3 ,'8' ,0x0393 },
|
||||
{'F' ,CAPLOK ,'f' ,'F' ,'=' ,0x03C6 ,'9' ,0x03A6 },
|
||||
{'Q' ,CAPLOK ,'q' ,'Q' ,'&' ,0x0278 ,'+' ,0x2202 },
|
||||
{'U' ,CAPLOK ,'u' ,'U' ,'\\' ,WCH_NONE ,0x2573 ,0x2573 }, //?Pos1? ,?Pos1?
|
||||
{'I' ,CAPLOK ,'i' ,'I' ,'/' ,0x03B9 ,0x2573 ,0x2573 }, //?Pfeil l? ,?Pfeil l?
|
||||
{'A' ,CAPLOK ,'a' ,'A' ,'{' ,0x03B1 ,0x2573 ,0x2573 }, //?Pfeil u? ,?Pfeil u?
|
||||
{'E' ,CAPLOK ,'e' ,'E' ,'}' ,0x03B5 ,0x2573 ,0x2573 }, //?Pfeil r? ,?Pfeil r?
|
||||
{'O' ,CAPLOK ,'o' ,'O' ,'*' ,0x03C9 ,0x2573 ,0x2573 }, //?Ende? ,?Ende?
|
||||
{'S' ,CAPLOK ,'s' ,'S' ,'?' ,0x03C3 ,0x00BF ,0x03A3 },
|
||||
{'D' ,CAPLOK ,'d' ,'D' ,':' ,0x03B4 ,',' ,0x0394 },
|
||||
{VK_OEM_6 ,CAPLOK ,0x00F6 ,0x00D6 ,'$' ,WCH_NONE ,0x007f ,0x007f },
|
||||
{VK_OEM_7 ,CAPLOK ,0x00E4 ,0x00C4 ,'|' ,0x03B7 ,0x2573 ,0x2573 }, //?PgDn? ,?PgDn?
|
||||
{'P' ,CAPLOK ,'p' ,'P' ,'~' ,0x03C0 ,'\r' ,0x03A0 },
|
||||
{'Z' ,CAPLOK ,'z' ,'Z' ,'`' ,0x03B6 ,WCH_NONE ,0x03A9 },
|
||||
{'B' ,CAPLOK ,'b' ,'B' ,'+' ,0x03B2 ,WCH_NONE ,0x221E },
|
||||
{'M' ,CAPLOK ,'m' ,'M' ,'%' ,0x00b5 ,'1' ,0x222B },
|
||||
{VK_OEM_COMMA ,0 ,',' ,';' ,'\'' ,0x03F1 ,'2' ,0x221A },
|
||||
{VK_OEM_PERIOD ,0 ,'.' ,0x2026 ,'\"' ,0x03B8 ,'3' ,0x0398 },
|
||||
{0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 }
|
||||
};
|
||||
|
||||
static ALLOC_SECTION_LDATA VK_TO_WCHARS7 aVkToWch7[] = {
|
||||
// | | SHIFT | ALT+CTRL | ALT+CTL+S | KANA | KANA+SHFT | Control |
|
||||
// | |===============|================|===============|===============|================|===============|
|
||||
{VK_OEM_3 ,CAPLOK ,0x00df ,0x1E9E ,0x017F ,0x03C2 ,0x0259 ,0x018F ,0x001b },
|
||||
{VK_OEM_4 ,0 ,WCH_DEAD ,WCH_DEAD ,WCH_DEAD ,WCH_DEAD ,WCH_DEAD ,WCH_DEAD ,0x001d },
|
||||
{0xff ,0 ,0x0303 ,0x0304 ,0x0308 ,0x030B ,0x0337 ,0x0326 ,0 },
|
||||
{'Y' ,CAPLOK ,'y' ,'Y' ,WCH_NONE ,0x03C5 ,0x00FE ,0x00DE ,0x001c },
|
||||
{VK_SPACE ,0 ,' ' ,' ' ,0x00A0 ,' ' ,'0' ,0x2009 ,' ' },
|
||||
{VK_BACK ,0 ,'\b' ,'\b' ,WCH_NONE ,WCH_NONE ,WCH_NONE ,WCH_NONE ,0x007f },
|
||||
{VK_ESCAPE ,0 ,0x001b ,0x001b ,WCH_NONE ,WCH_NONE ,WCH_NONE ,WCH_NONE ,0x001b },
|
||||
{VK_RETURN ,0 ,'\r' ,'\r' ,WCH_NONE ,WCH_NONE ,WCH_NONE ,WCH_NONE ,'\n' },
|
||||
{VK_CANCEL ,0 ,0x0003 ,0x0003 ,WCH_NONE ,WCH_NONE ,WCH_NONE ,WCH_NONE ,0x0003 },
|
||||
{0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 }
|
||||
};
|
||||
|
||||
static ALLOC_SECTION_LDATA VK_TO_WCHARS8 aVkToWch8[] = {
|
||||
// | | SHIFT | ALT+CTRL | ALT+CTL+S | KANA | KANA+SHFT | Control | Control+Shift |
|
||||
// | |===============|================|===============|===============|================|===============|===============|
|
||||
{'2' ,CAPLOK ,'2' ,0x2116 ,0x00b2 ,0x26A5 ,0x2023 ,WCH_NONE ,WCH_NONE ,0x0000 },
|
||||
{'6' ,CAPLOK ,'6' ,0x0024 ,0x00A3 ,0x00A4 ,WCH_NONE ,0x21D4 ,WCH_NONE ,0x001e },
|
||||
{'J' ,CAPLOK ,'j' ,'J' ,';' ,0x03D1 ,'.' ,0x2207 ,WCH_NONE ,0x001f },
|
||||
{0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 }
|
||||
};
|
||||
|
||||
// Put this last so that VkKeyScan interprets number characters
|
||||
// as coming from the main section of the kbd (aVkToWch2 and
|
||||
// aVkToWch5) before considering the numpad (aVkToWch1).
|
||||
|
||||
static ALLOC_SECTION_LDATA VK_TO_WCHARS1 aVkToWch1[] = {
|
||||
{ VK_NUMPAD0 , 0 , '0' },
|
||||
{ VK_NUMPAD1 , 0 , '1' },
|
||||
{ VK_NUMPAD2 , 0 , '2' },
|
||||
{ VK_NUMPAD3 , 0 , '3' },
|
||||
{ VK_NUMPAD4 , 0 , '4' },
|
||||
{ VK_NUMPAD5 , 0 , '5' },
|
||||
{ VK_NUMPAD6 , 0 , '6' },
|
||||
{ VK_NUMPAD7 , 0 , '7' },
|
||||
{ VK_NUMPAD8 , 0 , '8' },
|
||||
{ VK_NUMPAD9 , 0 , '9' },
|
||||
{ 0 , 0 , '\0' }
|
||||
};
|
||||
|
||||
static ALLOC_SECTION_LDATA VK_TO_WCHAR_TABLE aVkToWcharTable[] = {
|
||||
{ (PVK_TO_WCHARS1)aVkToWch5, 5, sizeof(aVkToWch5[0]) },
|
||||
{ (PVK_TO_WCHARS1)aVkToWch6, 6, sizeof(aVkToWch6[0]) },
|
||||
{ (PVK_TO_WCHARS1)aVkToWch7, 7, sizeof(aVkToWch7[0]) },
|
||||
{ (PVK_TO_WCHARS1)aVkToWch8, 8, sizeof(aVkToWch8[0]) },
|
||||
{ (PVK_TO_WCHARS1)aVkToWch2, 2, sizeof(aVkToWch2[0]) },
|
||||
{ (PVK_TO_WCHARS1)aVkToWch1, 1, sizeof(aVkToWch1[0]) },
|
||||
{ NULL, 0, 0 },
|
||||
};
|
||||
|
||||
/***************************************************************************\
|
||||
* aKeyNames[], aKeyNamesExt[] - Virtual Scancode to Key Name tables
|
||||
*
|
||||
* Table attributes: Ordered Scan (by scancode), null-terminated
|
||||
*
|
||||
* Only the names of Extended, NumPad, Dead and Non-Printable keys are here.
|
||||
* (Keys producing printable characters are named by that character)
|
||||
\***************************************************************************/
|
||||
|
||||
static ALLOC_SECTION_LDATA VSC_LPWSTR aKeyNames[] = {
|
||||
0x01, L"ESC",
|
||||
0x0e, L"R\x00DC" L"CK",
|
||||
0x0f, L"TABULATOR",
|
||||
0x1c, L"EINGABE",
|
||||
0x1d, L"STRG",
|
||||
0x2a, L"UMSCHALT",
|
||||
0x36, L"UMSCHALT RECHTS",
|
||||
0x37, L" (ZEHNERTASTATUR)",
|
||||
0x38, L"ALT",
|
||||
0x39, L"LEER",
|
||||
0x3a, L"FESTSTELL",
|
||||
0x3b, L"F1",
|
||||
0x3c, L"F2",
|
||||
0x3d, L"F3",
|
||||
0x3e, L"F4",
|
||||
0x3f, L"F5",
|
||||
0x40, L"F6",
|
||||
0x41, L"F7",
|
||||
0x42, L"F8",
|
||||
0x43, L"F9",
|
||||
0x44, L"F10",
|
||||
0x45, L"PAUSE",
|
||||
0x46, L"ROLLEN-FESTSTELL",
|
||||
0x47, L"7 (ZEHNERTASTATUR)",
|
||||
0x48, L"8 (ZEHNERTASTATUR)",
|
||||
0x49, L"9 (ZEHNERTASTATUR)",
|
||||
0x4a, L"- (ZEHNERTASTATUR)",
|
||||
0x4b, L"4 (ZEHNERTASTATUR)",
|
||||
0x4c, L"5 (ZEHNERTASTATUR)",
|
||||
0x4d, L"6 (ZEHNERTASTATUR)",
|
||||
0x4e, L"+ (ZEHNERTASTATUR)",
|
||||
0x4f, L"1 (ZEHNERTASTATUR)",
|
||||
0x50, L"2 (ZEHNERTASTATUR)",
|
||||
0x51, L"3 (ZEHNERTASTATUR)",
|
||||
0x52, L"0 (ZEHNERTASTATUR)",
|
||||
0x53, L"KOMMA (ZEHNERTASTATUR)",
|
||||
0x57, L"F11",
|
||||
0x58, L"F12",
|
||||
0 , NULL
|
||||
};
|
||||
|
||||
static ALLOC_SECTION_LDATA VSC_LPWSTR aKeyNamesExt[] = {
|
||||
0x1c, L"EINGABE (ZEHNERTASTATUR)",
|
||||
0x1d, L"STRG-RECHTS",
|
||||
0x35, L" (ZEHNERTASTATUR)",
|
||||
0x37, L"DRUCK",
|
||||
0x38, L"ALT GR",
|
||||
0x45, L"NUM-FESTSTELL",
|
||||
0x46, L"UNTBR",
|
||||
0x47, L"POS1",
|
||||
0x48, L"NACH-OBEN",
|
||||
0x49, L"BILD-NACH-OBEN",
|
||||
0x4b, L"NACH-LINKS",
|
||||
0x4d, L"NACH-RECHTS",
|
||||
0x4f, L"ENDE",
|
||||
0x50, L"NACH-UNTEN",
|
||||
0x51, L"BILD-NACH-UNTEN",
|
||||
0x52, L"EINFG",
|
||||
0x53, L"ENTF",
|
||||
0x54, L"<00>",
|
||||
0x56, L"HILFE",
|
||||
0x5b, L"LINKE WINDOWS",
|
||||
0x5c, L"RECHTE WINDOWS",
|
||||
0x5d, L"ANWENDUNG",
|
||||
0 , NULL
|
||||
};
|
||||
|
||||
static ALLOC_SECTION_LDATA DEADKEY_LPWSTR aKeyNamesDead[] = {
|
||||
L"\x00b4" L"AKUT",
|
||||
L"`" L"GRAVIS",
|
||||
L"^" L"ZIRKUMFLEX",
|
||||
NULL
|
||||
};
|
||||
|
||||
static ALLOC_SECTION_LDATA DEADKEY aDeadKey[] = {
|
||||
DEADTRANS( L'a' , L'^' , 0x00e2 , 0x0000),
|
||||
DEADTRANS( L'e' , L'^' , 0x00ea , 0x0000),
|
||||
DEADTRANS( L'i' , L'^' , 0x00ee , 0x0000),
|
||||
DEADTRANS( L'o' , L'^' , 0x00f4 , 0x0000),
|
||||
DEADTRANS( L'u' , L'^' , 0x00fb , 0x0000),
|
||||
DEADTRANS( L'A' , L'^' , 0x00c2 , 0x0000),
|
||||
DEADTRANS( L'E' , L'^' , 0x00ca , 0x0000),
|
||||
DEADTRANS( L'I' , L'^' , 0x00ce , 0x0000),
|
||||
DEADTRANS( L'O' , L'^' , 0x00d4 , 0x0000),
|
||||
DEADTRANS( L'U' , L'^' , 0x00db , 0x0000),
|
||||
DEADTRANS( L' ' , L'^' , L'^' , 0x0000),
|
||||
|
||||
DEADTRANS( L'a' , 0x00b4 , 0x00e1 , 0x0000),
|
||||
DEADTRANS( L'e' , 0x00b4 , 0x00e9 , 0x0000),
|
||||
DEADTRANS( L'i' , 0x00b4 , 0x00ed , 0x0000),
|
||||
DEADTRANS( L'o' , 0x00b4 , 0x00f3 , 0x0000),
|
||||
DEADTRANS( L'u' , 0x00b4 , 0x00fa , 0x0000),
|
||||
DEADTRANS( L'y' , 0x00b4 , 0x00fd , 0x0000),
|
||||
DEADTRANS( L'A' , 0x00b4 , 0x00c1 , 0x0000),
|
||||
DEADTRANS( L'E' , 0x00b4 , 0x00c9 , 0x0000),
|
||||
DEADTRANS( L'I' , 0x00b4 , 0x00cd , 0x0000),
|
||||
DEADTRANS( L'O' , 0x00b4 , 0x00d3 , 0x0000),
|
||||
DEADTRANS( L'U' , 0x00b4 , 0x00da , 0x0000),
|
||||
DEADTRANS( L'Y' , 0x00b4 , 0x00dd , 0x0000),
|
||||
DEADTRANS( L' ' , 0x00b4 , 0x00b4 , 0x0000),
|
||||
|
||||
DEADTRANS( L'a' , L'`' , 0x00e0 , 0x0000),
|
||||
DEADTRANS( L'e' , L'`' , 0x00e8 , 0x0000),
|
||||
DEADTRANS( L'i' , L'`' , 0x00ec , 0x0000),
|
||||
DEADTRANS( L'o' , L'`' , 0x00f2 , 0x0000),
|
||||
DEADTRANS( L'u' , L'`' , 0x00f9 , 0x0000),
|
||||
DEADTRANS( L'A' , L'`' , 0x00c0 , 0x0000),
|
||||
DEADTRANS( L'E' , L'`' , 0x00c8 , 0x0000),
|
||||
DEADTRANS( L'I' , L'`' , 0x00cc , 0x0000),
|
||||
DEADTRANS( L'O' , L'`' , 0x00d2 , 0x0000),
|
||||
DEADTRANS( L'U' , L'`' , 0x00d9 , 0x0000),
|
||||
DEADTRANS( L' ' , L'`' , L'`' , 0x0000),
|
||||
|
||||
0, 0
|
||||
};
|
||||
|
||||
static ALLOC_SECTION_LDATA KBDTABLES KbdTables = {
|
||||
/*
|
||||
* Modifier keys
|
||||
*/
|
||||
&CharModifiers,
|
||||
|
||||
/*
|
||||
* Characters tables
|
||||
*/
|
||||
aVkToWcharTable,
|
||||
|
||||
/*
|
||||
* Diacritics
|
||||
*/
|
||||
aDeadKey,
|
||||
|
||||
/*
|
||||
* Names of Keys
|
||||
*/
|
||||
aKeyNames,
|
||||
aKeyNamesExt,
|
||||
aKeyNamesDead,
|
||||
|
||||
/*
|
||||
* Scan codes to Virtual Keys
|
||||
*/
|
||||
ausVK,
|
||||
sizeof(ausVK) / sizeof(ausVK[0]),
|
||||
aE0VscToVk,
|
||||
aE1VscToVk,
|
||||
|
||||
/*
|
||||
* Locale-specific special processing
|
||||
*/
|
||||
MAKELONG(KLLF_ALTGR, KBD_VERSION),
|
||||
|
||||
/*
|
||||
* Ligatures
|
||||
*/
|
||||
0,
|
||||
0,
|
||||
NULL
|
||||
};
|
||||
|
||||
PKBDTABLES KbdLayerDescriptor(VOID)
|
||||
{
|
||||
return &KbdTables;
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
LIBRARY KBDNEO2
|
||||
|
||||
EXPORTS
|
||||
KbdLayerDescriptor @1
|
|
@ -0,0 +1,105 @@
|
|||
/****************************** Module Header ******************************\
|
||||
* Module Name: KBDNEO2.H
|
||||
*
|
||||
* keyboard layout header for NEO German
|
||||
*
|
||||
* Various defines for use by keyboard input code.
|
||||
*
|
||||
* History: Ver 0.1
|
||||
*
|
||||
\***************************************************************************/
|
||||
|
||||
/*
|
||||
* kbd type should be controlled by cl command-line argument
|
||||
*/
|
||||
#define KBD_TYPE 4
|
||||
|
||||
/*
|
||||
* Include the basis of all keyboard table values
|
||||
*/
|
||||
#include "kbd.h"
|
||||
#include <dontuse.h>
|
||||
/***************************************************************************\
|
||||
* The table below defines the virtual keys for various keyboard types where
|
||||
* the keyboard differ from the US keyboard.
|
||||
*
|
||||
* _EQ() : all keyboard types have the same virtual key for this scancode
|
||||
* _NE() : different virtual keys for this scancode, depending on kbd type
|
||||
*
|
||||
* +------+ +----------+----------+----------+----------+----------+----------+
|
||||
* | Scan | | kbd | kbd | kbd | kbd | kbd | kbd |
|
||||
* | code | | type 1 | type 2 | type 3 | type 4 | type 5 | type 6 |
|
||||
\****+-------+_+----------+----------+----------+----------+----------+----------+*/
|
||||
|
||||
#undef T0D
|
||||
#define T0D _EQ( OEM_2 )
|
||||
#undef T10
|
||||
#define T10 _EQ( 'X' )
|
||||
#undef T11
|
||||
#define T11 _EQ( 'V' )
|
||||
#undef T12
|
||||
#define T12 _EQ( 'L' )
|
||||
#undef T13
|
||||
#define T13 _EQ( 'C' )
|
||||
#undef T14
|
||||
#define T14 _EQ( 'W' )
|
||||
#undef T15
|
||||
#define T15 _EQ( 'K' )
|
||||
#undef T16
|
||||
#define T16 _EQ( 'H' )
|
||||
#undef T17
|
||||
#define T17 _EQ( 'G' )
|
||||
#undef T18
|
||||
#define T18 _EQ( 'F' )
|
||||
#undef T19
|
||||
#define T19 _EQ( 'Q' )
|
||||
#undef T1A
|
||||
#define T1A _EQ( OEM_3 )
|
||||
#undef T1B
|
||||
#define T1B _EQ( OEM_4 )
|
||||
#undef T1E
|
||||
#define T1E _EQ( 'U' )
|
||||
#undef T1F
|
||||
#define T1F _EQ( 'I' )
|
||||
#undef T20
|
||||
#define T20 _EQ( 'A' )
|
||||
#undef T21
|
||||
#define T21 _EQ( 'E' )
|
||||
#undef T22
|
||||
#define T22 _EQ( 'O' )
|
||||
#undef T23
|
||||
#define T23 _EQ( 'S' )
|
||||
#undef T24
|
||||
#define T24 _EQ( 'N' )
|
||||
#undef T25
|
||||
#define T25 _EQ( 'R' )
|
||||
#undef T26
|
||||
#define T26 _EQ( 'T' )
|
||||
#undef T27
|
||||
#define T27 _EQ( 'D' )
|
||||
#undef T28
|
||||
#define T28 _EQ( 'Y' )
|
||||
#undef T29
|
||||
#define T29 _EQ( OEM_1 )
|
||||
#undef T2B
|
||||
#define T2B _EQ( RMENU )
|
||||
#undef T2C
|
||||
#define T2C _EQ( OEM_5 )
|
||||
#undef T2D
|
||||
#define T2D _EQ( OEM_6 )
|
||||
#undef T2E
|
||||
#define T2E _EQ( OEM_7 )
|
||||
#undef T2F
|
||||
#define T2F _EQ( 'P' )
|
||||
#undef T30
|
||||
#define T30 _EQ( 'Z' )
|
||||
#undef T31
|
||||
#define T31 _EQ( 'B' )
|
||||
#undef T35
|
||||
#define T35 _EQ( 'J' )
|
||||
#undef T3A
|
||||
#define T3A _EQ( RMENU )
|
||||
#undef X38
|
||||
#define X38 _EQ( KANA )
|
||||
#undef T56
|
||||
#define T56 _EQ( KANA )
|
|
@ -0,0 +1,11 @@
|
|||
#include <windows.h>
|
||||
#include <ntverp.h>
|
||||
|
||||
#define VER_FILETYPE VFT_DLL
|
||||
#define VER_FILESUBTYPE VFT2_DRV_KEYBOARD
|
||||
#define VER_FILEDESCRIPTION_STR "NEO2 German ergonomic Keyboard Layout"
|
||||
#define VER_INTERNALNAME_STR "kbdneo2"
|
||||
#define VER_ORIGINALFILENAME_STR "kbdneo2.dll"
|
||||
|
||||
#define VER_LANGNEUTRAL
|
||||
#include "common.ver"
|
|
@ -0,0 +1,15 @@
|
|||
#
|
||||
# DO NOT EDIT THIS FILE!!! Edit .\sources. if you want to add a new source
|
||||
# file to this component. This file merely indirects to the real make file
|
||||
# that is shared by all the components of NT OS/2
|
||||
#
|
||||
!IF DEFINED(_NT_TARGET_VERSION)
|
||||
! IF $(_NT_TARGET_VERSION)>=0x501
|
||||
! INCLUDE $(NTMAKEENV)\makefile.def
|
||||
! ELSE
|
||||
! message BUILDMSG: Warning : The sample "$(MAKEDIR)" is not valid for the current OS target.
|
||||
! ENDIF
|
||||
!ELSE
|
||||
! INCLUDE $(NTMAKEENV)\makefile.def
|
||||
!ENDIF
|
||||
|
|
@ -0,0 +1 @@
|
|||
!INCLUDE ..\..\makefile.inc
|
|
@ -0,0 +1,18 @@
|
|||
|
||||
|
||||
386_OBJECTS=\
|
||||
$(OBJ_PATH)\$O\kbdneo2.obj \
|
||||
|
||||
|
||||
_RES_FILE=$(OBJ_PATH)\$O\kbdneo2.res
|
||||
|
||||
|
||||
|
||||
# lowercased
|
||||
BASEDIR=c:\winddk\6001.17051
|
||||
OBJECT_ROOT=c:\winddk\6001.17051
|
||||
MAKEDIR_LOWERCASE=c:\winddk\6001.17051\src\input\layout\all_kbds\kbdneo2
|
||||
MAKEDIR_RELATIVE_TO_BASEDIR=src\input\layout\all_kbds\kbdneo2
|
||||
OBJ_PATH=c:\winddk\6001.17051\src\input\layout\all_kbds\kbdneo2
|
||||
CONCURRENT_MIDL=0
|
||||
CONCURRENT_MANIFEST_BUILD=0
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,2 @@
|
|||
TARGETNAME=kbdneo2
|
||||
!INCLUDE ..\..\sources.inc
|
Loading…
Reference in New Issue