<AWT Dev> [8] Review request for 7197619 Using modifiers for the dead key detection on Windows
Alexander Scherbatiy
alexandr.scherbatiy at oracle.com
Wed Sep 19 06:42:39 PDT 2012
Could you review the updated fix:
http://cr.openjdk.java.net/~alexsch/7197619/webrev.01/
- The WindowsKeyToJavaChar method returns a char as it was before the fix
- ToAsciiEx is changed to ToUnicodeEx as it is suggested in the comment.
Thanks,
Alexandr.
On 9/14/2012 9:11 PM, Oleg Pekhovskiy wrote:
> Hi Alexander,
>
> here are my comments:
> 1. Why did you decide to make WindowsKeyToJavaChar void? Maybe it
> takes sense to leave signature closer to its original look?
> 2. Seems like WindowsKeyToJavaChar method could be simplifed
> (ToAsciiEx -> ToUnicodeEx, remove MultiByteToWideChar),
> like this:
>
> 3504 WORD wChar[2];
> 3505 UINT scancode = ::MapVirtualKey(wkey, 0);
> 3506 int converted = ::ToUnicodeEx(wkey, scancode, keyboardState,
> 3507&wChar, 2, 0, GetKeyboardLayout());
> 3508
> 3509 UINT translation;
> 3510 BOOL deadKeyFlag = (converted == 2);
> 3511
> 3512 // Dead Key
> 3513 if (converted< 0) {
> 3514 translation = java_awt_event_KeyEvent_CHAR_UNDEFINED;
> 3515 } else
> 3516 // No translation available -- try known conversions or else
> punt.
> 3517 if (converted == 0) {
> 3518 if (wkey == VK_DELETE) {
> 3519 translation = '\177';
> 3520 } else
> 3521 if (wkey>= VK_NUMPAD0&& wkey<= VK_NUMPAD9) {
> 3522 translation = '0' + wkey - VK_NUMPAD0;
> 3523 } else {
> 3524 translation = java_awt_event_KeyEvent_CHAR_UNDEFINED;
> 3525 }
> 3526 } else
> 3527 // the caller expects a Unicode character.
> 3528 if (converted> 0) {
> 3533 translation = wChar[0];
> 3534 }
>
>
> Thanks,
> Oleg
>
>
> 9/11/2012 5:24 PM, Alexander Scherbatiy wrote:
>>
>> bug: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7197619
>> webrev: http://cr.openjdk.java.net/~alexsch/7197619/webrev.00/
>>
>> Only a virtual key code is used for the dead key detection on Windows
>> in the current implementation.
>> This does not take into account that dead keys can be pressed with
>> modifiers like ctrl+alt+2 (caron dead key) on Hungarian keyboard.
>>
>> The fix gets isDeadKey flag and a character from the ToAsciiEx method
>> and uses them for the windows dead key to java key translation.
>>
>> Thanks,
>> Alexandr.
>>
>
More information about the awt-dev
mailing list