uvmac/src/UI/_deprecated/WIN32/INTLKBRD.c

1130 lines
23 KiB
C

/* keyboard */
#include <windows.h>
#include <tchar.h>
#include "SYSDEPNS.h"
#include "UI/WIN32/OSGLUWIN.h"
#if ItnlKyBdFix
LOCALPROC VkSwapZY(void)
{
VkMapA['Z'] = 'Y';
VkMapA['Y'] = 'Z';
}
#endif
#if ItnlKyBdFix
LOCALPROC VkSwapGraveQuote(void)
{
VkMapA[myVK_Grave] = myVK_SingleQuote;
VkMapA[myVK_SingleQuote] = myVK_Grave;
}
#endif
#if ItnlKyBdFix
LOCALPROC VkSwapSlashSubtract(void)
{
VkMapA[myVK_Slash] = myVK_Subtract;
VkMapA[myVK_Subtract] = myVK_Slash;
}
#endif
#if ItnlKyBdFix
LOCALPROC VkSwapAQZWGraveQuote(void)
{
VkSwapGraveQuote();
VkMapA['A'] = 'Q';
VkMapA['Q'] = 'A';
VkMapA['Z'] = 'W';
VkMapA['W'] = 'Z';
}
#endif
#if ItnlKyBdFix
LOCALPROC VkMapBelgian(void)
{
VkSwapAQZWGraveQuote();
VkMapA['M'] = myVK_SemiColon;
VkMapA[myVK_SemiColon] = myVK_RightBracket;
VkMapA[myVK_RightBracket] = myVK_LeftBracket;
VkMapA[myVK_LeftBracket] = myVK_Subtract;
VkMapA[myVK_Subtract] = myVK_Equal;
VkMapA[myVK_Equal] = myVK_Slash;
VkMapA[myVK_Slash] = myVK_Period;
VkMapA[myVK_Period] = myVK_Comma;
VkMapA[myVK_Comma] = 'M';
}
#endif
#if ItnlKyBdFix
LOCALPROC VkMapSwiss(void)
{
VkSwapZY();
VkMapA[myVK_OEM_8] = myVK_BackSlash;
VkMapA[myVK_BackSlash] = myVK_SingleQuote;
VkMapA[myVK_SingleQuote] = myVK_SemiColon;
VkMapA[myVK_SemiColon] = myVK_LeftBracket;
VkMapA[myVK_LeftBracket] = myVK_Subtract;
VkMapA[myVK_Subtract] = myVK_Slash;
VkMapA[myVK_Slash] = myVK_Grave;
VkMapA[myVK_Grave] = myVK_RightBracket;
VkMapA[myVK_RightBracket] = myVK_Equal;
}
#endif
#if ItnlKyBdFix
LOCALPROC VkMapDanish(void)
{
VkMapA[myVK_Equal] = myVK_Subtract;
VkMapA[myVK_Subtract] = myVK_Slash;
VkMapA[myVK_Slash] = myVK_BackSlash;
VkMapA[myVK_BackSlash] = myVK_Grave;
VkMapA[myVK_Grave] = myVK_SemiColon;
VkMapA[myVK_SemiColon] = myVK_RightBracket;
VkMapA[myVK_RightBracket] = myVK_LeftBracket;
VkMapA[myVK_LeftBracket] = myVK_Equal;
}
#endif
#if ItnlKyBdFix
LOCALPROC VkMapBritish(void)
{
VkMapA[myVK_OEM_8] = myVK_Grave;
VkMapA[myVK_Grave] = myVK_SingleQuote;
VkMapA[myVK_SingleQuote] = myVK_BackSlash;
VkMapA[myVK_BackSlash] = myVK_OEM_102;
}
#endif
#if ItnlKyBdFix
LOCALPROC VkMapSpanish(void)
{
VkMapA[myVK_SemiColon] = myVK_LeftBracket;
VkMapA[myVK_LeftBracket] = myVK_Subtract;
VkMapA[myVK_Subtract] = myVK_Slash;
VkMapA[myVK_Slash] = myVK_BackSlash;
VkMapA[myVK_BackSlash] = myVK_Grave;
VkMapA[myVK_Grave] = myVK_SemiColon;
VkMapA[myVK_RightBracket] = myVK_Equal;
VkMapA[myVK_Equal] = myVK_RightBracket;
}
#endif
#if ItnlKyBdFix
LOCALPROC VkMapDutch(void)
{
VkSwapGraveQuote();
VkMapA[myVK_SemiColon] = myVK_RightBracket;
VkMapA[myVK_RightBracket] = myVK_LeftBracket;
VkMapA[myVK_LeftBracket] = myVK_Subtract;
VkMapA[myVK_Subtract] = myVK_Slash;
VkMapA[myVK_Slash] = myVK_Equal;
VkMapA[myVK_Equal] = myVK_SemiColon;
}
#endif
#if ItnlKyBdFix
LOCALPROC VkMapGreekIBM(void)
{
VkSwapSlashSubtract();
VkMapA[myVK_LeftBracket] = myVK_Equal;
VkMapA[myVK_Equal] = myVK_LeftBracket;
}
#endif
#if ItnlKyBdFix
LOCALPROC VkMapFrench(void)
{
VkSwapAQZWGraveQuote();
VkMapA['M'] = myVK_SemiColon;
VkMapA[myVK_SemiColon] = myVK_RightBracket;
VkMapA[myVK_RightBracket] = myVK_LeftBracket;
VkMapA[myVK_LeftBracket] = myVK_Subtract;
VkMapA[myVK_Comma] = 'M';
VkMapA[myVK_Period] = myVK_Comma;
VkMapA[myVK_Slash] = myVK_Period;
VkMapA[myVK_OEM_8] = myVK_Slash;
}
#endif
#if ItnlKyBdFix
LOCALPROC VkMapGerman(void)
{
VkSwapZY();
VkMapSpanish();
}
#endif
#if ItnlKyBdFix
LOCALPROC VkMapBosnian(void)
{
VkSwapZY();
/* not in Windows 95 */
VkSwapSlashSubtract();
}
#endif
#if ItnlKyBdFix
LOCALPROC VkMapBulgarian(void)
{
VkMapA[myVK_OEM_8] = myVK_Comma;
VkMapA[myVK_Comma] = 'Q';
VkMapA['Q'] = myVK_Period;
VkMapA[myVK_Period] = myVK_Equal;
}
#endif
#if ItnlKyBdFix
LOCALPROC VkMapFromLayout(uimr sv)
{
int i;
for (i = 0; i < 256; ++i) {
VkMapA[i] = i;
}
switch (sv) {
case 0x00000409:
/* United States 101 */
break;
case 0x0000041c:
/* Albanian; */
VkSwapZY();
break;
case 0x0000042B:
/* Armenian Eastern; */
VkMapDutch();
break;
case 0x0001042B:
/* Armenian Western; */
VkMapDutch();
break;
case 0x0000042C:
/* not in Windows 95 */
/* Azeri Latin */
VkMapBritish();
break;
case 0x0001080C:
/* Belgian (comma) */
VkMapBelgian();
break;
case 0x0000080c:
/* Belgian French */
VkMapBelgian();
break;
case 0x00000813:
/* not in Windows 95 */
/* Belgian (period); */
VkMapBelgian();
break;
case 0x0000141A:
/* not in Windows 95 */
/* Bosnian */
VkMapBosnian();
break;
case 0x00000809:
/* British / United Kingdom */
VkMapBritish();
break;
case 0x00000452:
/* not in Windows 95 */
/* United Kingdom Extended */
VkMapBritish();
break;
case 0x00000402:
/* Bulgarian */
/* not same in Windows 95 */
VkMapBulgarian();
break;
case 0x00030402:
/* Bulgarian */
VkMapBulgarian();
break;
case 0x00020402:
/* Bulgarian (Phonetic) */
VkMapBosnian();
break;
case 0x00001009:
/* Canadian Multilingual */
/* not in Windows 95 */
VkSwapGraveQuote();
break;
case 0x00011009:
/* Canadian Standard */
VkSwapGraveQuote();
break;
case 0x0000041a:
/* Croatian */
VkMapBosnian();
break;
case 0x00000405:
/* Czech */
VkMapBosnian();
#if 0
/* but Windows 7 gives */
VkSwapZY();
VkMapA[myVK_Equal] = myVK_Subtract;
VkMapA[myVK_Subtract] = myVK_Slash;
VkMapA[myVK_Slash] = myVK_Equal;
#endif
break;
case 0x00020405:
/* Czech (Programmers) */
/* only in Windows 95 */
/* VkSwapZY(); */
break;
case 0x00010405:
/* Czech (Qwerty) */
/* only in Windows 95 */
/* VkSwapZY(); */
break;
case 0x00000406:
/* Danish */
VkMapDanish();
break;
case 0x00000413:
/* Dutch */
VkMapDutch();
break;
case 0x00000425:
/* Estonian */
VkMapA[myVK_Grave] = myVK_LeftBracket;
VkMapA[myVK_LeftBracket] = myVK_RightBracket;
VkMapA[myVK_RightBracket] = myVK_Slash;
VkMapA[myVK_Slash] = myVK_SingleQuote;
VkMapA[myVK_SingleQuote] = myVK_Grave;
/* only in Windows 95 ? */
/* VkMapA[VK_DECIMAL] = VK_DELETE; */
break;
case 0x00000438:
/* Faeroe Islands */
VkMapDanish();
break;
case 0x0000040b:
/* Finnish */
VkMapDanish();
break;
case 0x0001083B:
/* not in Windows 95 */
/* Finnish with Sami */
VkMapDanish();
break;
case 0x0000040c:
/* v = kKbdFrench; */
/* French */
VkMapFrench();
break;
case 0x00000c0c:
/* French Canadian */
VkSwapGraveQuote();
break;
case 0x00011809:
/* not in Windows 95 */
/* Gaelic */
VkMapBritish();
break;
case 0x00010407:
/* German (IBM) */
VkMapGerman();
break;
case 0x00000407:
/* German (Standard) */
VkMapGerman();
break;
case 0x00010408:
/* Greek IBM 220 */
/* not in Windows 95 */
VkMapGreekIBM();
break;
case 0x00030408:
/* Greek IBM 319 */
/* not in Windows 95 */
VkMapGreekIBM();
break;
case 0x00020408:
/* Greek Latin IBM 220 */
/* not in Windows 95 */
VkSwapSlashSubtract();
break;
case 0x00040408:
/* Greek Latin IBM 319 */
/* not in Windows 95 */
VkSwapSlashSubtract();
break;
case 0x0000040e:
/* Hungarian */
VkMapBosnian();
VkMapA[myVK_Grave] = '0';
VkMapA['0'] = myVK_Grave;
break;
case 0x0001040E:
/* Hungarian (101 Keys) */
VkMapA[myVK_Grave] = '0';
VkMapA['0'] = myVK_Grave;
break;
case 0x0000040f:
/* Icelandic */
VkMapDanish();
break;
case 0x00001809:
/* Irish */
VkMapBritish();
break;
case 0x00000410:
/* Italian */
VkMapSpanish();
break;
case 0x00010410:
/* Italian 142 */
VkMapSpanish();
break;
case 0x0000080a:
/* Latin American */
VkMapSpanish();
break;
case 0x0000046E:
/* Luxembourgish */
VkMapSwiss();
break;
case 0x00000414:
/* Norwegian */
VkMapDanish();
break;
case 0x0000043B:
/* Norwegian with Sami */
VkMapDanish();
break;
case 0x00010415:
/* Polish (214) */
VkSwapZY();
/* not in windows 95 */
VkMapA[myVK_Equal] = myVK_Subtract;
VkMapA[myVK_Subtract] = myVK_Slash;
VkMapA[myVK_Slash] = myVK_Equal;
break;
case 0x00010416:
/* Porguguese (Brazilian ABNT2) */
/* VkMapA[myVK_OEM_8] = ??; */
/* VkMapA[VK_SEPARATOR] = ??; */
break;
case 0x00000816:
/* Porguguese (Standard) */
VkMapA[myVK_SemiColon] = myVK_RightBracket;
VkMapA[myVK_RightBracket] = myVK_Equal;
VkMapA[myVK_Equal] = myVK_LeftBracket;
VkMapA[myVK_LeftBracket] = myVK_Subtract;
VkMapA[myVK_Subtract] = myVK_Slash;
VkMapA[myVK_Slash] = myVK_BackSlash;
VkMapA[myVK_BackSlash] = myVK_Grave;
VkMapA[myVK_Grave] = myVK_SemiColon;
break;
case 0x00000418:
/* Romanian (Legacy) */
VkSwapZY();
/* only in Windows 95 */
/* VkSwapSlashSubtract(); */
break;
case 0x0002083B:
/* Sami Extended Finland-Sweden */
VkMapDanish();
break;
case 0x0001043B:
/* Sami Extended Norway */
VkMapDanish();
break;
case 0x00010C1A:
/* in Windows 95 */
/* Serbian (Latin) */
VkSwapZY();
break;
case 0x0000081A:
/* not in Windows 95 */
/* Serbian (Latin) */
VkMapBosnian();
break;
case 0x0000041b:
/* Slovak */
VkMapBosnian();
/* not in Windows 95 */
VkMapA[myVK_OEM_8] = myVK_Equal;
break;
case 0x00000424:
/* Slovenian */
VkMapBosnian();
break;
case 0x0000040A:
/* Spanish, not windows 95 */
VkMapSpanish();
break;
case 0x0001040A:
/* Spanish Variation, not windows 95 */
VkMapA[myVK_OEM_8] = myVK_Slash;
VkMapA[myVK_Slash] = myVK_BackSlash;
VkMapA[myVK_BackSlash] = myVK_Grave;
VkMapA[myVK_Grave] = myVK_SemiColon;
VkMapA[myVK_SemiColon] = myVK_RightBracket;
VkMapA[myVK_RightBracket] = myVK_LeftBracket;
VkMapA[myVK_LeftBracket] = myVK_Equal;
break;
case 0x00000c0a:
/* kKbdSpanish; */
/* Spanish Modern, windows 95 */
VkMapSpanish();
break;
case 0x00000403:
/* Spanish Traditional */
VkMapSpanish();
break;
case 0x0000041d:
/* Swedish */
VkMapDanish();
break;
case 0x0000083B:
/* not in windows 95 */
/* Swedish with Sami */
VkMapDanish();
break;
case 0x0000100c:
/* Swiss French */
VkMapSwiss();
break;
case 0x00000807:
/* Swiss German */
VkMapSwiss();
break;
case 0x0000085D:
/* Inuktitut Latin */
/* in windows 7, not XP */
VkMapBritish();
break;
case 0x0001045D:
/* Inuktitut - Naqittaut */
VkMapBritish();
break;
case 0x0000046F:
/* Greenlandic */
VkMapDanish();
break;
case 0x00020427:
/* Lithuanian Standard */
VkMapDanish();
break;
case 0x0000042f:
/* Macedonian (FYROM) - Standard */
VkMapBosnian();
break;
case 0x0000042E:
/* Sorbian Standard (Legacy) */
VkMapGerman();
break;
case 0x0001042E:
/* Sorbian Extended */
VkMapGerman();
break;
case 0x0002042E:
/* Sorbian Standard */
VkMapGerman();
break;
case 0x00000488:
/* Wolof */
VkMapFrench();
break;
case 0x0000041f:
/* Turkish (Q type) */
/* windows 95 */
/* VkMapA[myVK_Equal] = myVK_Subtract; */
/* VkMapA[myVK_Subtract] = myVK_Equal; */
/* not windows 95 */
VkMapA[myVK_OEM_8] = myVK_Subtract;
VkMapA[myVK_Subtract] = myVK_Equal;
VkMapA[myVK_Comma] = myVK_BackSlash;
VkMapA[myVK_BackSlash] = myVK_Period;
VkMapA[myVK_Period] = myVK_Slash;
VkMapA[myVK_Slash] = myVK_Comma;
break;
case 0x00010409:
/* United States Dvorak */
VkMapA[myVK_LeftBracket] = myVK_Subtract;
VkMapA[myVK_RightBracket] = myVK_Equal;
VkMapA[myVK_SingleQuote] = 'Q';
VkMapA[myVK_Comma] = 'W';
VkMapA[myVK_Period] = 'E';
VkMapA['P'] = 'R';
VkMapA['Y'] = 'T';
VkMapA['F'] = 'Y';
VkMapA['G'] = 'U';
VkMapA['C'] = 'I';
VkMapA['R'] = 'O';
VkMapA['L'] = 'P';
VkMapA[myVK_Slash] = myVK_LeftBracket;
VkMapA[myVK_Equal] = myVK_RightBracket;
VkMapA['O'] = 'S';
VkMapA['E'] = 'D';
VkMapA['U'] = 'F';
VkMapA['I'] = 'G';
VkMapA['D'] = 'H';
VkMapA['H'] = 'J';
VkMapA['T'] = 'K';
VkMapA['N'] = 'L';
VkMapA['S'] = myVK_SemiColon;
VkMapA[myVK_Subtract] = myVK_SingleQuote;
VkMapA[myVK_SemiColon] = 'Z';
VkMapA['Q'] = 'X';
VkMapA['J'] = 'C';
VkMapA['K'] = 'V';
VkMapA['X'] = 'B';
VkMapA['B'] = 'N';
VkMapA['W'] = myVK_Comma;
VkMapA['V'] = myVK_Period;
VkMapA['Z'] = myVK_Slash;
break;
#if 0
/* too complicated, don't bother with */
case 0x0x00000426:
/* Latvian */
VkMapA['F'] = myVK_Equal;
VkMapA['G'] = 'W';
VkMapA['J'] = 'E';
VkMapA['M'] = 'T';
VkMapA['V'] = 'Y';
VkMapA['N'] = 'U';
VkMapA['Z'] = 'I';
VkMapA['W'] = 'O';
VkMapA['X'] = 'P';
VkMapA['Y'] = myVK_LeftBracket;
VkMapA['H'] = myVK_RightBracket;
VkMapA[myVK_SemiColon] = 'A';
VkMapA['U'] = 'S';
VkMapA['S'] = 'D';
VkMapA['I'] = 'F';
VkMapA['L'] = 'G';
VkMapA['D'] = 'H';
VkMapA['A'] = 'J';
VkMapA['T'] = 'K';
VkMapA['E'] = 'L';
VkMapA['C'] = myVK_SemiColon;
VkMapA[myVK_LeftBracket] = 'Z';
VkMapA['B'] = 'X';
VkMapA[myVK_RightBracket] = 'C';
VkMapA['K'] = 'V';
VkMapA['P'] = 'B';
VkMapA['O'] = 'N';
VkMapA[myVK_OEM_8] = 'M';
break;
case 0x0001041F:
/* Turkish (F type) */
VkMapA[myVK_Equal] = myVK_Subtract;
VkMapA[myVK_Subtract] = myVK_Equal;
VkMapA['F'] = 'Q';
VkMapA['G'] = 'W';
VkMapA[myVK_SemiColon] = 'E';
VkMapA['I'] = 'R';
VkMapA['O'] = 'T';
VkMapA['D'] = 'Y';
VkMapA['R'] = 'U';
VkMapA['N'] = 'I';
VkMapA['H'] = 'O';
VkMapA['Q'] = myVK_LeftBracket;
VkMapA['W'] = myVK_RightBracket;
VkMapA['U'] = 'A';
VkMapA[myVK_LeftBracket] = 'S';
VkMapA['E'] = 'D';
VkMapA['A'] = 'F';
VkMapA[myVK_RightBracket] = 'G';
VkMapA['T'] = 'H';
VkMapA['K'] = 'J';
VkMapA['M'] = 'K';
VkMapA['Y'] = myVK_SemiColon;
VkMapA['X'] = myVK_BackSlash;
VkMapA['J'] = 'Z';
VkMapA[myVK_BackSlash] = 'X';
VkMapA['V'] = 'C';
VkMapA['C'] = 'V';
VkMapA[myVK_Slash] = 'B';
VkMapA['Z'] = 'N';
VkMapA['S'] = 'M';
VkMapA['B'] = myVK_Comma;
VkMapA[myVK_Comma] = myVK_Slash;
break;
case 0x00030409:
/* United States LH Dvorak */
VkMapA[myVK_LeftBracket] = '1';
VkMapA[myVK_RightBracket] = '2';
VkMapA[myVK_Slash] = '3';
VkMapA['P'] = '4';
VkMapA['F'] = '5';
VkMapA['M'] = '6';
VkMapA['L'] = '7';
VkMapA['J'] = '8';
VkMapA['4'] = '9';
VkMapA['3'] = '0';
VkMapA['2'] = myVK_Subtract;
VkMapA['1'] = myVK_Equal;
VkMapA[myVK_SemiColon] = 'Q';
VkMapA['Q'] = 'W';
VkMapA['B'] = 'E';
VkMapA['Y'] = 'R';
VkMapA['U'] = 'T';
VkMapA['R'] = 'Y';
VkMapA['S'] = 'U';
VkMapA['O'] = 'I';
VkMapA[myVK_Period] = 'O';
VkMapA['6'] = 'P';
VkMapA['5'] = myVK_LeftBracket;
VkMapA[myVK_Equal] = myVK_RightBracket;
VkMapA[myVK_Subtract] = 'A';
VkMapA['K'] = 'S';
VkMapA['C'] = 'D';
VkMapA['D'] = 'F';
VkMapA['T'] = 'G';
VkMapA['E'] = 'J';
VkMapA['A'] = 'K';
VkMapA['Z'] = 'L';
VkMapA['8'] = myVK_SemiColon;
VkMapA['7'] = myVK_SingleQuote;
VkMapA[myVK_SingleQuote] = 'Z';
VkMapA['G'] = 'C';
VkMapA['W'] = 'B';
VkMapA['I'] = 'M';
VkMapA['0'] = myVK_Period;
VkMapA['9'] = myVK_Slash;
break;
case 0x00040409:
/* United States RH Dvorak */
VkMapA['J'] = '5';
VkMapA['L'] = '6';
VkMapA['M'] = '7';
VkMapA['F'] = '8';
VkMapA['P'] = '9';
VkMapA[myVK_Slash] = '0';
VkMapA[myVK_LeftBracket] = myVK_Subtract;
VkMapA[myVK_RightBracket] = myVK_Equal;
VkMapA['5'] = 'Q';
VkMapA['6'] = 'W';
VkMapA['Q'] = 'E';
VkMapA[myVK_Period] = 'R';
VkMapA['O'] = 'T';
VkMapA['R'] = 'Y';
VkMapA['S'] = 'U';
VkMapA['U'] = 'I';
VkMapA['Y'] = 'O';
VkMapA['B'] = 'P';
VkMapA[myVK_SemiColon] = myVK_LeftBracket;
VkMapA[myVK_Equal] = myVK_RightBracket;
VkMapA['7'] = 'A';
VkMapA['8'] = 'S';
VkMapA['Z'] = 'D';
VkMapA['A'] = 'F';
VkMapA['E'] = 'G';
VkMapA['T'] = 'J';
VkMapA['D'] = 'K';
VkMapA['C'] = 'L';
VkMapA['K'] = myVK_SemiColon;
VkMapA[myVK_Subtract] = myVK_SingleQuote;
VkMapA['9'] = 'Z';
VkMapA['0'] = 'X';
VkMapA['X'] = 'C';
VkMapA[myVK_Comma] = 'V';
VkMapA['I'] = 'B';
VkMapA['W'] = 'M';
VkMapA['V'] = myVK_Comma;
VkMapA['G'] = myVK_Period;
VkMapA[myVK_SingleQuote] = myVK_Slash;
break;
#endif
#if 0
case 0x0000082C:
/* not in Windows 95 */
/* Azeri Cyrillic */
break;
case 0x00000423:
/* Belarusian */
break;
case 0x00000445:
/* not in Windows 95 */
/* Bengali */
break;
case 0x00010445:
/* not in Windows 95 */
/* Bengali (Inscript) */
break;
case 0x0000201A:
/* not in Windows 95 */
/* Bosnian Cyrillic*/
break;
case 0x00010402:
/* Bulgarian Latin */
#if 0 /* Only in Windows 95 */
VkMapA['J'] = 'Q';
VkMapA['C'] = 'W';
VkMapA['U'] = 'E';
VkMapA['K'] = 'R';
VkMapA['E'] = 'T';
VkMapA['N'] = 'Y';
VkMapA['G'] = 'U';
VkMapA[myVK_SemiColon] = 'I';
VkMapA[myVK_OEM_102] = 'O';
VkMapA['Z'] = 'P';
VkMapA['H'] = myVK_LeftBracket;
VkMapA['F'] = 'A';
VkMapA['Y'] = 'S';
VkMapA['W'] = 'D';
VkMapA['A'] = 'F';
VkMapA['P'] = 'G';
VkMapA['R'] = 'H';
VkMapA['O'] = 'J';
VkMapA['L'] = 'K';
VkMapA['D'] = 'L';
VkMapA['V'] = myVK_SemiColon;
VkMapA[myVK_LeftBracket] = 'Z';
VkMapA['S'] = 'X';
VkMapA['M'] = 'C';
VkMapA['I'] = 'V';
VkMapA['T'] = 'B';
VkMapA['X'] = 'N';
VkMapA['B'] = 'M';
VkMapA['Q'] = myVK_OEM_102;
#endif
break;
case 0x00000408:
/* Greek */
break;
case 0x00050408:
/* Greek Latin */
break;
case 0x00060408:
/* Greek Polytonic */
break;
case 0x0000043F:
/* Kazakh */
break;
case 0x00000440:
/* Kyrgyz Cyrillic */
break;
case 0x00010426:
/* Latvian Latin */
break;
case 0x00010427:
/* Lithuanian */
break;
case 0x00000427:
/* Lithuanian (IBM) */
break;
case 0x0000044C:
/* Malayalam */
break;
case 0x0000042f:
/* Macedonian (FYROM) */
break;
case 0x0000043A:
/* Maltese 47-key */
break;
case 0x0001043A:
/* Maltese 48-key */
break;
case 0x00000481:
/* Maori */
break;
case 0x00000450:
/* Mongolian Cyrillic */
break;
case 0x00000461:
/* Nepali */
break;
case 0x00000463:
/* Pashto */
break;
case 0x00000415:
/* Polish (Programmers) */
break;
case 0x00000416:
/* Porguguese (Brazilian standard) */
break;
case 0x00000419:
/* Russian */
break;
case 0x00010419:
/* Russian (Typewriter) */
break;
case 0x00000c1a:
/* Serbian */
break;
case 0x0001041B:
/* Slovak (Qwerty) */
break;
case 0x00000444:
/* Tatar */
break;
case 0x00000422:
/* Ukrainian */
break;
case 0x00020409:
/* United States International */
break;
case 0x00000843:
/* Uzbek Cyrillic */
break;
case 0x00010418:
/* Romanian (Standard) */
break;
case 0x00020418:
/* Romanian (Programmers) */
break;
case 0x00000401:
/* Arabic (101) */
break;
case 0x00010401:
/* Arabic (102) */
break;
case 0x0000044D:
/* Assamese - INSCRIPT */
break;
case 0x0000046D:
/* Bashkir */
break;
case 0x00040402:
/* Bulgarian (Phonetic Traditional) */
break;
case 0x00000404:
/* Chinese (Traditional) */
break;
case 0x00000804:
/* Chinese (Simplified) */
break;
case 0x00000C04:
/* Chinese (Traditional, Hong Kong S.A.R.) */
break;
case 0x00001004:
/* Chinese (Simplified, Singapore) */
break;
case 0x00001404:
/* Chinese (Traditional, Macao S.A.R.) */
break;
case 0x0000040D:
/* Hebrew */
break;
case 0x00000447:
/* Gujarati */
break;
case 0x00000468:
/* Hausa */
break;
case 0x00010439:
/* Hindi Traditional */
break;
case 0x00000439:
/* Devanagari - INSCRIPT */
break;
case 0x00000465:
/* Divehi Phonetic */
break;
case 0x00010465:
/* Divehi Typewriter */
break;
case 0x00000437:
/* Georgian */
break;
case 0x00010437:
/* Georgian (QWERTY) */
break;
case 0x00020437:
/* Georgian (Ergonomic) */
break;
case 0x00000470:
/* Igbo */
break;
case 0x00000411:
/* Japanese */
/* VkMapA[??] = ??; */
break;
case 0x00000412:
/* Korean */
/* VkMapA[VK_ZOOM] = ??; */
/* VkMapA[VK_HELP] = VK_ZOOM; */
/* VkMapA[??] = VK_HELP; */
/* VkMapA[??] = ??; */
break;
case 0x0000044B:
/* Kannada */
break;
case 0x00000453:
/* Khmer */
break;
case 0x00000454:
/* Lao */
break;
case 0x00000448:
/* Oriya */
break;
case 0x0000044E:
/* Marathi */
break;
case 0x00000850:
/* Mongolian (Mongolian Script) */
break;
case 0x00000429:
/* Persion */
break;
case 0x00000446:
/* Punjabi */
break;
case 0x0000046C:
/* Sesotho sa Leboa */
break;
case 0x00000432:
/* Setswana */
break;
case 0x0000045B:
/* Sinhala */
break;
case 0x0001045B:
/* Sinhala - Wij 9 */
break;
case 0x0000045A:
/* Syriac */
break;
case 0x0001045A:
/* Syriac Phonetic */
break;
case 0x00000428:
/* Tajik */
break;
case 0x00000449:
/* Tamil */
break;
case 0x0000044A:
/* Telugu */
break;
case 0x0000041E:
/* Thai Kedmanee */
break;
case 0x0001041E:
/* Thai Pattachote */
break;
case 0x0002041E:
/* Thai Kedmanee (non-ShiftLock) */
break;
case 0x0003041E:
/* Thai Pattachote (non-ShiftLock) */
break;
case 0x00000451:
/* Tibetan (PRC) */
break;
case 0x00000442:
/* Turkmen */
break;
case 0x00020422:
/* Ukrainian (Enhanced) */
break;
case 0x00000420:
/* Urdu */
break;
case 0x00050409:
/* US English Table for IBM Arabic 238_L */
break;
case 0x00000480:
/* Uyghur (Legacy) */
break;
case 0x00010480:
/* Uyghur */
break;
case 0x0000042A:
/* Vietnamese */
break;
case 0x00000485:
/* Yakut */
break;
case 0x0000046A:
/* Yoruba */
break;
#endif
}
}
#endif
#if ItnlKyBdFix
LOCALVAR uimr CurKyBdLytNm = 0;
#endif
#if ItnlKyBdFix
LOCALFUNC bool tStrIsHex(TCHAR *s, int n, uimr *r)
{
short i;
TCHAR c1;
TCHAR *p = s;
uimr v = 0;
for (i = n; --i >= 0; ) {
v <<= 4;
c1 = *p++;
if ((c1 >= '0') && (c1 <= '9')) {
v += c1 - '0';
} else if ((c1 >= 'A') && (c1 <= 'F')) {
v += c1 - ('A' - 10);
} else if ((c1 >= 'a') && (c1 <= 'f')) {
v += c1 - ('a' - 10);
} else {
return false;
}
}
*r = v;
return true;
}
#endif
#if ItnlKyBdFix
LOCALFUNC bool GetKeyboardLayoutHex(uimr *r)
{
TCHAR s[KL_NAMELENGTH];
bool IsOk = false;
if (! GetKeyboardLayoutName(s)) {
/* ReportWinLastError(); */
} else {
size_t n = _tcslen(s);
if (8 != n) {
/* fail */
} else {
IsOk = tStrIsHex(s, n, r);
}
}
return IsOk;
}
#endif
#if ItnlKyBdFix
void CheckKeyboardLayout(void)
{
uimr sv;
if (! GetKeyboardLayoutHex(&sv)) {
} else if (sv == CurKyBdLytNm) {
/* no change */
} else {
CurKyBdLytNm = sv;
VkMapFromLayout(sv);
}
}
void InitCheckKeyboardLayout(void)
{
uimr sv;
if (! GetKeyboardLayoutHex(&sv)) {
sv = 0x00000409;
}
CurKyBdLytNm = sv;
VkMapFromLayout(sv);
}
#endif