DragonNest/Common/EngineUtil/CountryByCountryKeyboard.cpp

193 lines
7.5 KiB
C++
Raw Permalink Normal View History

2024-12-19 09:48:26 +08:00
<EFBFBD><EFBFBD>#include "stdafx.h"
#include "CountryByCountryKeyboard.h"
#ifdef _DEBUG
#define new new(_NORMAL_BLOCK,__FILE__,__LINE__)
#endif
CCountryByCountryKeyboard::CCountryByCountryKeyboard()
: m_nKeyboardType( CCountryByCountryKeyboard::eQWERTY_KEYBOARD )
{
}
CCountryByCountryKeyboard::~CCountryByCountryKeyboard()
{
}
void CCountryByCountryKeyboard::ChangeCountryByKeyboard( const int nKeyboardType, WCHAR ** wszKeyString )
{
m_nKeyboardType = nKeyboardType;
if( CCountryByCountryKeyboard::eAZERTY_KEYBOARD == m_nKeyboardType )
ChangeAzertyKeyString( wszKeyString );
else if( CCountryByCountryKeyboard::eQWERTZ_KEYBOARD == m_nKeyboardType )
ChangeQwertzKeyString( wszKeyString );
else if( CCountryByCountryKeyboard::eSPAIN_KEYBOARD == m_nKeyboardType )
ChangeSpainKeyString( wszKeyString );
else
ChangeOriginalKeyString( wszKeyString );
}
DWORD CCountryByCountryKeyboard::ChangeKey( const DWORD dwOfs )
{
DWORD retValue = dwOfs;
if( CCountryByCountryKeyboard::eAZERTY_KEYBOARD == m_nKeyboardType )
retValue = ChangeAzertyKey( dwOfs );
else if( CCountryByCountryKeyboard::eQWERTZ_KEYBOARD == m_nKeyboardType )
retValue = ChangeQwertzKey( dwOfs );
else if( CCountryByCountryKeyboard::eSPAIN_KEYBOARD == m_nKeyboardType )
retValue = ChangeSpainKey( dwOfs );
return retValue;
}
DWORD CCountryByCountryKeyboard::ChangeAzertyKey( const DWORD dwOfs )
{
DWORD retValue = dwOfs;
switch( dwOfs )
{
case DIK_Q:
retValue = DIK_A;
break;
case DIK_A:
retValue = DIK_Q;
break;
case DIK_W:
retValue = DIK_Z;
break;
case DIK_Z:
retValue = DIK_W;
break;
case DIK_GRAVE:
retValue = DIK_APOSTROPHE;
break;
case DIK_APOSTROPHE:
retValue = DIK_GRAVE;
break;
case DIK_COMMA:
retValue = DIK_PERIOD;
break;
case DIK_PERIOD:
retValue = DIK_SLASH;
break;
case DIK_SEMICOLON:
retValue = DIK_M;
break;
case DIK_M:
retValue = DIK_COMMA;
break;
}
return retValue;
}
DWORD CCountryByCountryKeyboard::ChangeQwertzKey( const DWORD dwOfs )
{
DWORD retValue = dwOfs;
switch( dwOfs )
{
case DIK_Y:
retValue = DIK_Z;
break;
case DIK_Z:
retValue = DIK_Y;
break;
case DIK_SEMICOLON:
retValue = DIK_GRAVE;
break;
case DIK_LBRACKET:
retValue = DIK_SEMICOLON;
break;
case DIK_BACKSLASH:
retValue = DIK_SLASH;
break;
case DIK_GRAVE:
retValue = DIK_BACKSLASH;
break;
}
return retValue;
}
DWORD CCountryByCountryKeyboard::ChangeSpainKey( const DWORD dwOfs )
{
DWORD retValue = dwOfs;
switch( dwOfs )
{
case DIK_LBRACKET:
retValue = DIK_SEMICOLON;
break;
case DIK_SEMICOLON:
retValue = DIK_GRAVE;
break;
case DIK_BACKSLASH:
retValue = DIK_SLASH;
break;
case DIK_GRAVE:
retValue = DIK_BACKSLASH;
break;
}
return retValue;
}
void CCountryByCountryKeyboard::ChangeAzertyKeyString( WCHAR ** wszKeyString )
{
wszKeyString[39] = L"$";
wszKeyString[40] = L"<00>";
wszKeyString[41] = L"<00>";
wszKeyString[43] = L"*";
wszKeyString[52] = L";";
wszKeyString[53] = L":";
}
void CCountryByCountryKeyboard::ChangeQwertzKeyString( WCHAR ** wszKeyString )
{
wszKeyString[39] = L"<00>";
wszKeyString[40] = L"<00>";
wszKeyString[41] = L"<00>";
wszKeyString[43] = L"^^";
wszKeyString[53] = L"#";
}
void CCountryByCountryKeyboard::ChangeSpainKeyString( WCHAR ** wszKeyString )
{
wszKeyString[39] = L"`";
wszKeyString[40] = L"<00>";
wszKeyString[41] = L"<00>";
wszKeyString[43] = L"<00>";
wszKeyString[53] = L"<00>";
}
void CCountryByCountryKeyboard::ChangeOriginalKeyString( WCHAR ** wszKeyString )
{
wszKeyString[39] = L";";
wszKeyString[40] = L"";
wszKeyString[41] = L"~";
wszKeyString[43] = L"\\";
wszKeyString[52] = L".";
wszKeyString[53] = L"/";
}