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.




Reply via email to