Merge pull request #540 from signmotion/default-keyboard-layout

Added a default keyboard layout for launching the game.
This commit is contained in:
LuisAntonRebollo 2014-03-29 14:20:30 +01:00
commit 54fa2bcdab
5 changed files with 41 additions and 2 deletions

View file

@ -118,6 +118,9 @@ public:
static U8 getModifierKeys() {return smModifierKeys;}
static void setModifierKeys(U8 mod) {smModifierKeys = mod;}
static void attemptSwitchToKeyboardLayout( U32 layout );
#ifdef LOG_INPUT
static void log( const char* format, ... );
#endif

View file

@ -33,6 +33,8 @@
#include <stdarg.h>
#endif
#include <sstream>
// Static class variables:
InputManager* Input::smManager;
bool Input::smActive;
@ -79,6 +81,10 @@ void Input::init()
destroy();
#ifdef TORQUE_DEFAULT_KEYBOARD_LAYOUT
attemptSwitchToKeyboardLayout( TORQUE_DEFAULT_KEYBOARD_LAYOUT );
#endif
#ifdef LOG_INPUT
struct tm* newTime;
time_t aclock;
@ -487,6 +493,18 @@ InputManager* Input::getManager()
return( smManager );
}
//------------------------------------------------------------------------------
void Input::attemptSwitchToKeyboardLayout( U32 layout )
{
const auto lang = MAKELANGID( layout, SUBLANG_DEFAULT );
std::wstringstream ss;
ss << std::hex << lang;
const auto hexLang = ss.str().c_str();
ActivateKeyboardLayout( LoadKeyboardLayout(
hexLang, KLF_ACTIVATE | KLF_REPLACELANG
), KLF_REORDER );
}
#ifdef LOG_INPUT
//------------------------------------------------------------------------------
void Input::log( const char* format, ... )

View file

@ -458,8 +458,12 @@ bool ActionMap::createEventDescriptor(const char* pEventString, EventDescriptor*
}
// Now we need to map the key string to the proper KEY code from event.h
//
AssertFatal(dStrlen(pObjectString) != 0, "Error, no key was specified!");
AssertFatal(
dStrlen( pObjectString ) > 0,
"Error, no key was specified!\n"
"Review file 'scripts/client/config.cs' and remove symbols"
" which is not latin. Or delete this file."
);
if (dStrlen(pObjectString) == 1)
{

View file

@ -148,6 +148,13 @@
/// texture manager.
#define TORQUE_FRAME_SIZE 16 << 20
// Default keyboard layout for launching the game. It's fixed crash when a
// game running with the extend unicode keyboard (cyrillic, for example).
// Windows only.
// @see For choice language >
// http://msdn.microsoft.com/en-us/library/windows/desktop/dd318693%28v=vs.85%29.aspx
#define TORQUE_DEFAULT_KEYBOARD_LAYOUT LANG_ENGLISH
// Finally, we define some dependent #defines. This enables some subsidiary
// functionality to get automatically turned on in certain configurations.

View file

@ -169,6 +169,13 @@
/// texture manager.
#define TORQUE_FRAME_SIZE 16 << 20
// Default keyboard layout for launching the game. It's fixed crash when a
// game running with the extend unicode keyboard (cyrillic, for example).
// Windows only.
// @see For choice language >
// http://msdn.microsoft.com/en-us/library/windows/desktop/dd318693%28v=vs.85%29.aspx
#define TORQUE_DEFAULT_KEYBOARD_LAYOUT LANG_ENGLISH
// Finally, we define some dependent #defines. This enables some subsidiary
// functionality to get automatically turned on in certain configurations.