<AWT Dev> [9] Review request for 8028617: Dvorak keyboard mapping not honored when ctrl key pressed

Anthony Petrov anthony.petrov at oracle.com
Wed May 28 18:04:14 UTC 2014


Hi Anton,

Thank you for your hard work. The updated fix looks fine to me.

--
best regards,
Anthony

On 5/28/2014 9:56 PM, anton nashatyrev wrote:
> Hello,
>
>      I've checked my old fix and found a problem: the dead keys don't
> work in the passive client: the KEY_TYPED event doesn't contain the
> composed char (e.g. contains 'o' instead of 'ô').
>
>      Please take a look at the new fix. I've added both 'characters' and
> 'charactersIgnoringModifiers' to the NSEvent. The latter is now only
> used for calculating a VK_ keyCode. For this fix I've checked all the
> KeyEvent reg tests (auto + manual), tried different combinations you've
> suggested with the im/IMFTest, tried different input methods for Japan
> and Chinese locales.
>
>      BTW those double symbols sometimes arise when typing via VNC; with
> the directly connected keyboard this is not reproducible.
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-8028617
> The fix: http://cr.openjdk.java.net/~anashaty/8028617/9/webrev.01/
> <http://cr.openjdk.java.net/%7Eanashaty/8028617/9/webrev.01/>
>
> Thanks!
> Anton.
>
> On 27.05.2014 15:35, Anthony Petrov wrote:
>> Hi Anton,
>>
>> Interesting. I'm not sure if 'oô' looks very good, however, I agree
>> that 'ôô' isn't much better. I suggest to file a follow-up issue to
>> fix IMs on Mac.
>>
>> What I'm mostly concerned about is how Shift behaves after your fix?
>> If on FR keyboard you press '[', Shift+'o', what characters does this
>> produce? And what was before your fix? If you still can type the
>> capital 'Ô' character, then it's fine.
>>
>> Also, on a DE keyboard, could you try pressing [ and ' keys both w/
>> and w/o Shift? They should produce the characters üÜ and äÄ
>> correspondingly. Also, on the DE keyboard, the _ key is very
>> interesting. W/o Shift it produces 'ß', while with Shift pressed it
>> should produce '?'. Also, "=" is a dead key on the DE keyboard. You
>> might want to play with it as well.
>>
>> --
>> best regards,
>> Anthony
>>
>> On 5/27/2014 2:30 PM, anton nashatyrev wrote:
>>> Hi Anthony,
>>>
>>>      yes, when using dead keys the behavior changes after the fix.
>>>
>>> In the text field when pressing '[', 'o' on FR keyboard:
>>> before the fix: 'ôô'
>>> after the fix: 'oô'
>>>
>>> I suppose that both cases are not correct (in the first we get
>>> duplicated character). Hope to talk to you offline on how to handle both
>>> problems.
>>>
>>> Thanks!
>>> Anton.
>>>
>>> On 23.05.2014 20:14, Anthony Petrov wrote:
>>>> On 5/23/2014 8:04 PM, anton nashatyrev wrote:
>>>>>      could you please point me to the i18n tests you have mentioned?
>>>>
>>>> test/java/awt/im ...? In both open and closed repos.
>>>>
>>>>
>>>>>      from non-English I'd tested only Russian locale. Do you have in
>>>>> mind some special cases for other locales?
>>>>
>>>> No, RU isn't a particularly interesting layout in this respect. Please
>>>> try at least DE and FR keyboards. The Q, Y, and Z keys are exchanged
>>>> on those. They support special characters on OEM keys (such as -=[];"/
>>>> etc.) Also, they support dead keys. E.g. on a FR kbd, try pressing [
>>>> and then some other character key. Also try AltGr+7 and then again
>>>> some other character key. After pressing a dead key, try to press a
>>>> letter key with the Shift modifier. Etc.
>>>>
>>>> --
>>>> best regards,
>>>> Anthony
>>>>
>>>>>
>>>>> Thanks!
>>>>> Anton.
>>>>>
>>>>> On 23.05.2014 19:44, Anthony Petrov wrote:
>>>>>> Thanks for confirming that. I'm OK with the fix then.
>>>>>>
>>>>>> However, I also suggest to run some i18n tests and also try some
>>>>>> non-English keyboard layouts (DE, FR, JP, etc.) with special
>>>>>> characters and dead keys to ensure they aren't broken.
>>>>>>
>>>>>> --
>>>>>> best regards,
>>>>>> Anthony
>>>>>>
>>>>>> On 5/23/2014 7:39 PM, anton nashatyrev wrote:
>>>>>>> Anthony,
>>>>>>>
>>>>>>>      yes, the CapsLock works for me as well.
>>>>>>>
>>>>>>> Thanks!
>>>>>>> Anton
>>>>>>>
>>>>>>> On 23.05.2014 19:35, Anthony Petrov wrote:
>>>>>>>> Hi Anton,
>>>>>>>>
>>>>>>>> If you activate the CAPS LOCK mode and type some characters, will
>>>>>>>> those be presented as capital letters in Swing/AWT's text fields
>>>>>>>> and
>>>>>>>> text areas after your fix? (see [1] for a related FX bug)
>>>>>>>>
>>>>>>>> [1] https://javafx-jira.kenai.com/browse/RT-16616
>>>>>>>>
>>>>>>>> --
>>>>>>>> best regards,
>>>>>>>> Anthony
>>>>>>>>
>>>>>>>> On 5/23/2014 7:14 PM, anton nashatyrev wrote:
>>>>>>>>> Hello,
>>>>>>>>>      could you please review the following fix:
>>>>>>>>>
>>>>>>>>> fix: http://cr.openjdk.java.net/~anashaty/8028617/9/webrev.00/
>>>>>>>>> <http://cr.openjdk.java.net/%7Eanashaty/8028617/9/webrev.00/>
>>>>>>>>> bug: https://bugs.openjdk.java.net/browse/JDK-8028617
>>>>>>>>>
>>>>>>>>>      Problem: Dvorak keyboard mapping not honored when Ctrl key
>>>>>>>>> pressed
>>>>>>>>>
>>>>>>>>>      Evaluation:
>>>>>>>>>          The problem is in the
>>>>>>>>> AWTView.m:deliverJavaKeyEventHelper():
>>>>>>>>> for taking a character we use NSEvent::characters which works fine
>>>>>>>>> until
>>>>>>>>> the Ctrl modifier is pressed. In this case the 'charaters' returns
>>>>>>>>> empty
>>>>>>>>> string. The typed character is then calculated via key code using
>>>>>>>>> the
>>>>>>>>> standard keyboard layout. Of course that doesn't work for any
>>>>>>>>> other
>>>>>>>>> layout including DVORAK.
>>>>>>>>>
>>>>>>>>>      Fix: We should use NSEvent::charactersIgnoringModifiers
>>>>>>>>> property
>>>>>>>>> instead (especially taking into account that
>>>>>>>>> sun.lwawt.macosx.event.NSEvent constructor parameter name is
>>>>>>>>> 'charactersIgnoringModifiers')
>>>>>>>>>
>>>>>>>>> Thanks!
>>>>>>>>> Anton.
>>>>>>>
>>>>>
>>>
>


More information about the awt-dev mailing list