Author |
Topic |
|
T-3
New Member
6 Posts |
Posted - May 03 2010 : 12:44:07 PM
|
I'm using (trying to use) VA with Visual Studio 2010 and the following problem arises: i have 2 keyboard layouts installed - English and Russian. And when VA is enabled then it is only possible to write text in Russian - there is absolutely no reaction on key pressings when English layout is active - not a good thing to leave with :). Disabling VA solves this problem. Playing with layouts - deleting, reinstalling, etc - didn't help in any way.
Thanks. |
Edited by - T-3 on May 06 2010 1:30:42 PM |
|
feline
Whole Tomato Software
United Kingdom
19024 Posts |
Posted - May 04 2010 : 1:53:40 PM
|
Which OS and version of VA are you using?
Using a winXP system with VS2010 and VA 1822 I have the following keyboard layouts installed:
Japanese, Chinese (PRC), English (United Kingdom), Polish, Russian
and so far I am not seeing any problems with changing the keyboard layout via the language bar, and typing in a different language. |
zen is the art of being at one with the two'ness |
|
|
T-3
New Member
6 Posts |
Posted - May 04 2010 : 6:13:34 PM
|
configuration is the same... XP SP3, VS2010, VA 1822, English and Russian - changing set of layouts to just one of them, or adding some, or removing both didn't help in any way. I can admire only russian letters if russian layout is installed and i cannot admire any if it is not :) |
|
|
T-3
New Member
6 Posts |
Posted - May 04 2010 : 7:57:51 PM
|
the trouble is somewhere nearby 0x1ED34B93 in VA_X.dll. /*in the following sample the 'S' key was used*/ Let's see what happens when the English layout is active. When the main dispatcher at 0x1EF8D445 receives a WM_KEYDOWN(Key=53, KeyData=1f0001), then it uses the call to SendMessageA at 0x1ED34B93 with WM_KEYDOWN(Key=53, KeyData=1f0001), so it's back to 0x1EF8D445 (WM_KEYDOWN, Key=53, KeyData=1f0001). Now at the same place the message WM_CHAR with a proper w- and lParam (Key=73 - this is 's', KeyData=1f0001), that for some strange reason "arrives" at 0x1EF8D445 with zero char-code (i.e. WM_CHAR, Key=0, KeyData=1f0001), so nothing is printed.
Now take a look on the Russian one. The main dispatcher at 0x1EF8D445 receives the same WM_KEYDOWN(Key=53, KeyData=1f0001), then sends the same WM_KEYDOWN(Key=53, KeyData=1f0001), and then receives it in the same manner as above (WM_KEYDOWN, Key=53, KeyData=1f0001). But no further call to WM_CHAR follows, and the letter ('++') is displayed. Hm, i'm really too lazy to do such a plenty of research, so i didn't look very deep in the inner recognition of letters.
Maybe too many messages are used in the first sample... i don't know. The simple delphi program (for 'w' character) >>SendMessage(Edit1.Handle, WM_CHAR, $77, $110001); worked fine. |
Edited by - T-3 on May 04 2010 7:59:49 PM |
|
|
feline
Whole Tomato Software
United Kingdom
19024 Posts |
Posted - May 05 2010 : 11:07:37 AM
|
Do you have the language bar showing? If so, is the language bar docked in the task bar, or is it floating? In the language bar settings do you have any key sequences defined to change input languages that might be a factor here?
If you load notepad at the same time as Visual Studio, can you change input language correctly in notepad? |
zen is the art of being at one with the two'ness |
|
|
T-3
New Member
6 Posts |
Posted - May 05 2010 : 11:56:43 AM
|
>Do you have the language bar showing? Yes, i do >If so, is the language bar docked in the task bar, or is it floating? Docked... Does it really matter? >In the language bar settings do you have any key sequences defined to change input languages that might be a factor here? Key combination to change language -- Alt+Shift, to change layout -- none. Changing to Ctrl+Shift caused nothing. >If you load notepad at the same time as Visual Studio, can you change input language correctly in notepad? Yes, i can. But i can change it inside vs -- and even some buttons like backspace or delete do work. Even if i create a new txt file in vs i can use any input language in it unlike cpp files. No matter how many languages i have installed -- russian, german, spanish, english(USA), english(Britain) -- the only one working with Visual Assist is russian. Or none of them -- if russian is not installed. |
|
|
T-3
New Member
6 Posts |
Posted - May 06 2010 : 1:29:16 PM
|
Resolved.
After deepening in SendMessageA -> ... -> Conversion routine in win32k.sys (forgot its name, arrgh) found an error in registry -- loosing HKLM\\System\\CurrentControlSet\\Control\\Nls\\CodePage\\1252 REG_SZ key. Added it, and everything's fine now.
Sorry for disturbing. |
|
|
sean
Whole Tomato Software
USA
2817 Posts |
Posted - May 06 2010 : 1:47:04 PM
|
Thanks for the update. A few of us tried but failed to repro on multiple systems. Do you have any idea how the error in the registry was introduced? |
|
|
T-3
New Member
6 Posts |
Posted - May 06 2010 : 2:27:46 PM
|
>Do you have any idea how the error in the registry was introduced? If i could know this... But absolutely no ideas :) I am surprised by the fact that other programs did work properly -- this conversion routine EngWideCharToMultiByte from win32k.sys must have always failed because of absence of this key, so all WM_CHAR'S in English couldn't work despite the fact they did |
|
|
|
Topic |
|
|
|