Patch: ToUnicodeEx Win95


Subject: Patch: ToUnicodeEx Win95
From: Andrew Dunbar (hippietrail@yahoo.com)
Date: Thu Jun 14 2001 - 09:42:00 CDT


This should get Abi up and running again on Windows 95. Thanks for
the tips guys. It also contains a fix for a unicode keymap bug I
accidentally introduced a few days ago.

Andrew Dunbar.

-- 
http://linguaphile.sourceforge.net

Index: src/af/ev/win/ev_Win32Keyboard.cpp =================================================================== RCS file: /cvsroot/abi/src/af/ev/win/ev_Win32Keyboard.cpp,v retrieving revision 1.26 diff -u -r1.26 ev_Win32Keyboard.cpp --- src/af/ev/win/ev_Win32Keyboard.cpp 2001/06/11 12:23:27 1.26 +++ src/af/ev/win/ev_Win32Keyboard.cpp 2001/06/14 14:28:01 @@ -165,11 +165,19 @@ /*****************************************************************/ ev_Win32Keyboard::ev_Win32Keyboard(EV_EditEventMapper * pEEM) - : EV_Keyboard(pEEM) + : EV_Keyboard(pEEM), + m_hKeyboardLayout(0), + m_iconv((UT_iconv_t)-1), + m_bIsUnicodeInput(false) { - m_hKeyboardLayout = 0; - m_iconv = (UT_iconv_t)-1; - m_bIsUnicodeInput = false; + HINSTANCE hInstUser; + if (hInstUser = LoadLibrary("USER32.DLL")) + { + m_pToUnicodeEx = reinterpret_cast<int (*)(UINT,UINT,CONST PBYTE,LPWSTR,int,UINT,HKL)> + (GetProcAddress(hInstUser, "ToUnicodeEx")); + FreeLibrary(hInstUser); + } + remapKeyboard(GetKeyboardLayout(0)); } @@ -561,7 +569,7 @@ } EV_EditMethod * pEM; - EV_EditEventMapperResult result = m_pEEM->Keystroke(EV_EKP_PRESS|ems|b,&pEM); + EV_EditEventMapperResult result = m_pEEM->Keystroke(EV_EKP_PRESS|ems|charData[0],&pEM); switch (result) { @@ -648,7 +656,10 @@ LPWSTR pwszBuff, int cchBuff) { if (m_bIsUnicodeInput) - return ToUnicodeEx(nVirtKey,wScanCode,lpKeyState,pwszBuff,cchBuff,0,m_hKeyboardLayout); + { + UT_ASSERT(m_pToUnicodeEx); + return (*m_pToUnicodeEx)(nVirtKey,wScanCode,lpKeyState,pwszBuff,cchBuff,0,m_hKeyboardLayout); + } else return ToAsciiEx(nVirtKey,wScanCode,lpKeyState,pwszBuff,0,m_hKeyboardLayout); }; Index: src/af/ev/win/ev_Win32Keyboard.h =================================================================== RCS file: /cvsroot/abi/src/af/ev/win/ev_Win32Keyboard.h,v retrieving revision 1.15 diff -u -r1.15 ev_Win32Keyboard.h --- src/af/ev/win/ev_Win32Keyboard.h 2001/06/01 18:05:18 1.15 +++ src/af/ev/win/ev_Win32Keyboard.h 2001/06/14 14:28:02 @@ -52,6 +52,10 @@ WCHAR b, EV_EditModifierState ems); int _scanCodeToChars(UINT nVirtKey, UINT wScanCode, CONST PBYTE lpKeyState, LPWSTR pwszBuff, int cchBuff); + + int (*m_pToUnicodeEx)(UINT wVirtKey, UINT wScanCode, + CONST PBYTE lpKeyState, LPWSTR pwszBuff, int cchBuff, + UINT wFlags, HKL dwhkl); HKL m_hKeyboardLayout; UT_iconv_t m_iconv; /* Selected translation to Unicode */ bool m_bIsUnicodeInput; Index: src/af/xap/win/xap_Win32EncodingManager.cpp =================================================================== RCS file: /cvsroot/abi/src/af/xap/win/xap_Win32EncodingManager.cpp,v retrieving revision 1.5 diff -u -r1.5 xap_Win32EncodingManager.cpp --- src/af/xap/win/xap_Win32EncodingManager.cpp 2001/06/11 12:23:39 1.5 +++ src/af/xap/win/xap_Win32EncodingManager.cpp 2001/06/14 14:28:13 @@ -55,6 +55,8 @@ LanguageISOName = "en"; LanguageISOTerritory = NULL; + XAP_EncodingManager::initialize(); + // Unicode Encoding Name // TODO Does NT use UCS-2BE internally on non-Intel CPUs? NativeUnicodeEncodingName = getUCS2LEName(); @@ -91,7 +93,6 @@ LanguageISOTerritory = szTerritory; } - XAP_EncodingManager::initialize(); describe(); };

_________________________________________________________ Do You Yahoo!? Get your free @yahoo.com address at http://mail.yahoo.com



This archive was generated by hypermail 2b25 : Thu Jun 14 2001 - 09:39:26 CDT