<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:PMingLiU;
        panose-1:2 1 6 1 0 1 1 1 1 1;}
@font-face
        {font-family:Tunga;
        panose-1:0 0 4 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"\@PMingLiU";}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Plain Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.PlainTextChar
        {mso-style-name:"Plain Text Char";
        mso-style-priority:99;
        mso-style-link:"Plain Text";
        font-family:"Calibri",sans-serif;}
span.EmailStyle19
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
span.EmailStyle20
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.EmailStyle21
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link="#0563C1" vlink="#954F72"><div class=WordSection1><p class=MsoNormal><span style='color:#1F497D'>Hi Sergey\Semyon, Please do the review for the below bug.<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Thanks and regards,<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Shashi<o:p></o:p></span></p><p class=MsoNormal><a name="_MailEndCompose"><span style='color:#1F497D'><o:p> </o:p></span></a></p><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b>From:</b> Shashidhara Veerabhadraiah <br><b>Sent:</b> Thursday, September 21, 2017 2:14 PM<br><b>To:</b> Sergey Bylokhov <sergey.bylokhov@oracle.com>; Semyon Sadetsky <semyon.sadetsky@oracle.com>; awt-dev@openjdk.java.net<br><b>Subject:</b> Re: <AWT Dev> [10] JDK-8148344: Java robot keypress should be able to use extended key code characters as ? ? ?.<o:p></o:p></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span style='color:#1F497D'>Hi All, Please find the updated webrev containing a new test that is added to test out the software changes that were made under this enhancement.<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><a href="http://cr.openjdk.java.net/~sveerabhadra/8148344/webrev.02/">http://cr.openjdk.java.net/~sveerabhadra/8148344/webrev.02/</a><o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Thanks and regards,<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Shashi<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b>From:</b> Shashidhara Veerabhadraiah <br><b>Sent:</b> Thursday, September 21, 2017 11:37 AM<br><b>To:</b> Sergey Bylokhov <<a href="mailto:sergey.bylokhov@oracle.com">sergey.bylokhov@oracle.com</a>>; Semyon Sadetsky <<a href="mailto:semyon.sadetsky@oracle.com">semyon.sadetsky@oracle.com</a>>; <a href="mailto:awt-dev@openjdk.java.net">awt-dev@openjdk.java.net</a><br><b>Subject:</b> Re: <AWT Dev> [10] JDK-8148344: Java robot keypress should be able to use extended key code characters as ? ? ?.<o:p></o:p></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoPlainText>Hi Sergey, I was able to input the surrogate pairs and got the required output as shown below:<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText><img border=0 width=1038 height=179 id="Picture_x0020_3" src="cid:image003.jpg@01D34F0B.BE5A7470"><o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Below is the output after we input the surrogate pairs:<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText><img border=0 width=109 height=63 id="Picture_x0020_1" src="cid:image004.png@01D34F0B.BE5A7470"><o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Thanks and regards,<o:p></o:p></p><p class=MsoPlainText>Shashi<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>-----Original Message-----<br>From: Sergey Bylokhov <br>Sent: Thursday, September 14, 2017 11:33 PM<br>To: Shashidhara Veerabhadraiah <<a href="mailto:shashidhara.veerabhadraiah@oracle.com">shashidhara.veerabhadraiah@oracle.com</a>>; Semyon Sadetsky <<a href="mailto:semyon.sadetsky@oracle.com">semyon.sadetsky@oracle.com</a>>; <a href="mailto:awt-dev@openjdk.java.net">awt-dev@openjdk.java.net</a><br>Subject: Re: <AWT Dev> [10] JDK-8148344: Java robot keypress should be able to use extended key code characters as ? ? ?.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>The java uses UTF16, I guess this new api should use it also, and we should check that the surrogate pairs will be supported.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>On 9/14/17 03:56, Shashidhara Veerabhadraiah wrote:<o:p></o:p></p><p class=MsoPlainText>> Hi Sergey, Yes it represents the Unicode code point. The encoding is same as the window characteristic which is UTF 8 as implemented in Java.<o:p></o:p></p><p class=MsoPlainText>> <o:p></o:p></p><p class=MsoPlainText>> Thanks and regards,<o:p></o:p></p><p class=MsoPlainText>> Shashi<o:p></o:p></p><p class=MsoPlainText>> <o:p></o:p></p><p class=MsoPlainText>> -----Original Message-----<o:p></o:p></p><p class=MsoPlainText>> From: Sergey Bylokhov<o:p></o:p></p><p class=MsoPlainText>> Sent: Wednesday, September 13, 2017 5:22 AM<o:p></o:p></p><p class=MsoPlainText>> To: Shashidhara Veerabhadraiah <o:p></o:p></p><p class=MsoPlainText>> <<a href="mailto:shashidhara.veerabhadraiah@oracle.com"><span style='color:windowtext;text-decoration:none'>shashidhara.veerabhadraiah@oracle.com</span></a>>; Semyon Sadetsky <o:p></o:p></p><p class=MsoPlainText>> <<a href="mailto:semyon.sadetsky@oracle.com"><span style='color:windowtext;text-decoration:none'>semyon.sadetsky@oracle.com</span></a>>; <a href="mailto:awt-dev@openjdk.java.net"><span style='color:windowtext;text-decoration:none'>awt-dev@openjdk.java.net</span></a><o:p></o:p></p><p class=MsoPlainText>> Subject: Re: <AWT Dev> [10] JDK-8148344: Java robot keypress should be able to use extended key code characters as ? ? ?.<o:p></o:p></p><p class=MsoPlainText>> <o:p></o:p></p><p class=MsoPlainText>> Hi, Shashi.<o:p></o:p></p><p class=MsoPlainText>> One initial question:<o:p></o:p></p><p class=MsoPlainText>> What is an int parameter of these methods means, is it a "Unicode code point"? What encoding utf8/utf16 should be used?<o:p></o:p></p><p class=MsoPlainText>> <o:p></o:p></p><p class=MsoPlainText>> On 9/8/17 02:50, Shashidhara Veerabhadraiah wrote:<o:p></o:p></p><p class=MsoPlainText>>> Hi, I have updated the Webrev to accommodate the comments and here is <o:p></o:p></p><p class=MsoPlainText>>> the new Webrev:<o:p></o:p></p><p class=MsoPlainText>>><o:p> </o:p></p><p class=MsoPlainText>>> <a href="http://cr.openjdk.java.net/~sveerabhadra/8148344/webrev.01/"><span style='color:windowtext;text-decoration:none'>http://cr.openjdk.java.net/~sveerabhadra/8148344/webrev.01/</span></a><o:p></o:p></p><p class=MsoPlainText>>><o:p> </o:p></p><p class=MsoPlainText>>> I have separated the /_Unicode_/ keys input via java robot as a new <o:p></o:p></p><p class=MsoPlainText>>> set of /_public_/ api’s (this is in similar fashion as how the <o:p></o:p></p><p class=MsoPlainText>>> platform offers the Unicode keys input into the system) and this has <o:p></o:p></p><p class=MsoPlainText>>> been tested on all the platforms using the test file similar to the <o:p></o:p></p><p class=MsoPlainText>>> attached file in the bug. A more proper test file would be put for <o:p></o:p></p><p class=MsoPlainText>>> review in the subsequent reviews.<o:p></o:p></p><p class=MsoPlainText>>><o:p> </o:p></p><p class=MsoPlainText>>> Thanks and regards,<o:p></o:p></p><p class=MsoPlainText>>><o:p> </o:p></p><p class=MsoPlainText>>> Shashi<o:p></o:p></p><p class=MsoPlainText>>><o:p> </o:p></p><p class=MsoPlainText>>> *From:* Sergey Bylokhov<o:p></o:p></p><p class=MsoPlainText>>> *Sent:* Wednesday, August 30, 2017 2:33 AM<o:p></o:p></p><p class=MsoPlainText>>> *To:* Shashidhara Veerabhadraiah<o:p></o:p></p><p class=MsoPlainText>>> <<a href="mailto:shashidhara.veerabhadraiah@oracle.com"><span style='color:windowtext;text-decoration:none'>shashidhara.veerabhadraiah@oracle.com</span></a>><o:p></o:p></p><p class=MsoPlainText>>> *Cc:* <a href="mailto:awt-dev@openjdk.java.net"><span style='color:windowtext;text-decoration:none'>awt-dev@openjdk.java.net</span></a><o:p></o:p></p><p class=MsoPlainText>>> *Subject:* Re: <AWT Dev> [10] JDK-8148344: Java robot keypress should <o:p></o:p></p><p class=MsoPlainText>>> be able to use extended key code characters as ? ? ?.<o:p></o:p></p><p class=MsoPlainText>>><o:p> </o:p></p><p class=MsoPlainText>>> Hi, Shashi.<o:p></o:p></p><p class=MsoPlainText>>><o:p> </o:p></p><p class=MsoPlainText>>> This is part of this fix, to figure out how it will work for external <o:p></o:p></p><p class=MsoPlainText>>> applications. As you said this functionally can be useful for an <o:p></o:p></p><p class=MsoPlainText>>> onscreen keyboards, which virtually can have any possible keys, but <o:p></o:p></p><p class=MsoPlainText>>> we should check how the applications will react on such keys:<o:p></o:p></p><p class=MsoPlainText>>>    - Will the application get some kind of keyPress/Release?<o:p></o:p></p><p class=MsoPlainText>>>    - Will the application get some keyCode for such event?<o:p></o:p></p><p class=MsoPlainText>>>    - Is it possible to get autorepeat for such keys?(between<o:p></o:p></p><p class=MsoPlainText>>> press/release)<o:p></o:p></p><p class=MsoPlainText>>><o:p> </o:p></p><p class=MsoPlainText>>> Depending from the answers above we can enhance existed robot API or <o:p></o:p></p><p class=MsoPlainText>>> provide a new one:<o:p></o:p></p><p class=MsoPlainText>>> like Robot.keyType(char)/etc<o:p></o:p></p><p class=MsoPlainText>>><o:p> </o:p></p><p class=MsoPlainText>>> ----- <a href="mailto:shashidhara.veerabhadraiah@oracle.com"><span style='color:windowtext;text-decoration:none'>shashidhara.veerabhadraiah@oracle.com</span></a><o:p></o:p></p><p class=MsoPlainText>>> <<a href="mailto:shashidhara.veerabhadraiah@oracle.com"><span style='color:windowtext;text-decoration:none'>mailto:shashidhara.veerabhadraiah@oracle.com</span></a>> wrote:<o:p></o:p></p><p class=MsoPlainText>>>><o:p> </o:p></p><p class=MsoPlainText>>><o:p> </o:p></p><p class=MsoPlainText>>>><o:p> </o:p></p><p class=MsoPlainText>>><o:p> </o:p></p><p class=MsoPlainText>>>><o:p> </o:p></p><p class=MsoPlainText>>><o:p> </o:p></p><p class=MsoPlainText>>> Hi Sergey, I was only able to add short cut keys in the Microsoft <o:p></o:p></p><p class=MsoPlainText>>> word but not as a system wide short cut key. There was no mechanism <o:p></o:p></p><p class=MsoPlainText>>> that I could find to add a short cut key for a Unicode char!! Can you <o:p></o:p></p><p class=MsoPlainText>>> please tell me the steps to do the same if you are aware of?<o:p></o:p></p><p class=MsoPlainText>>><o:p> </o:p></p><p class=MsoPlainText>>> Thanks and regards,<o:p></o:p></p><p class=MsoPlainText>>><o:p> </o:p></p><p class=MsoPlainText>>> shashi<o:p></o:p></p><p class=MsoPlainText>>><o:p> </o:p></p><p class=MsoPlainText>>>><o:p> </o:p></p><p class=MsoPlainText>>><o:p> </o:p></p><p class=MsoPlainText>>> *From:*Sergey Bylokhov<o:p></o:p></p><p class=MsoPlainText>>>> *Sent:* Tuesday, August 22, 2017 8:34 PM<o:p></o:p></p><p class=MsoPlainText>>>> *To:* Shashidhara Veerabhadraiah<o:p></o:p></p><p class=MsoPlainText>>>> <shashidhara.veerabhadraiah@oracle.com<o:p></o:p></p><p class=MsoPlainText>>> <<a href="mailto:shashidhara.veerabhadraiah@oracle.com"><span style='color:windowtext;text-decoration:none'>mailto:shashidhara.veerabhadraiah@oracle.com</span></a>>><o:p></o:p></p><p class=MsoPlainText>>>> *Cc:* <a href="mailto:awt-dev@openjdk.java.net"><span style='color:windowtext;text-decoration:none'>awt-dev@openjdk.java.net</span></a> <<a href="mailto:awt-dev@openjdk.java.net"><span style='color:windowtext;text-decoration:none'>mailto:awt-dev@openjdk.java.net</span></a>><o:p></o:p></p><p class=MsoPlainText>>>> *Subject:* Re: <AWT Dev> [10] JDK-8148344: Java robot keypress <o:p></o:p></p><p class=MsoPlainText>>>> should be<o:p></o:p></p><p class=MsoPlainText>>> able to use extended key code characters as ? ? ?.<o:p></o:p></p><p class=MsoPlainText>>><o:p> </o:p></p><p class=MsoPlainText>>> Hi, Shashi.<o:p></o:p></p><p class=MsoPlainText>>>> Can you check how this Robot API will work when the application will have a shortcut for such key? Will such shortcuts will work after this fix?<o:p></o:p></p><p class=MsoPlainText>>>><o:p> </o:p></p><p class=MsoPlainText>>>> ----- <a href="mailto:shashidhara.veerabhadraiah@oracle.com"><span style='color:windowtext;text-decoration:none'>shashidhara.veerabhadraiah@oracle.com</span></a><o:p></o:p></p><p class=MsoPlainText>>> <<a href="mailto:shashidhara.veerabhadraiah@oracle.com"><span style='color:windowtext;text-decoration:none'>mailto:shashidhara.veerabhadraiah@oracle.com</span></a>> wrote:<o:p></o:p></p><p class=MsoPlainText>>>>><o:p> </o:p></p><p class=MsoPlainText>>><o:p> </o:p></p><p class=MsoPlainText>>>><o:p> </o:p></p><p class=MsoPlainText>>><o:p> </o:p></p><p class=MsoPlainText>>>><o:p> </o:p></p><p class=MsoPlainText>>><o:p> </o:p></p><p class=MsoPlainText>>> Hi All, Please review fix for the /_enhancement_/ wherein the robot <o:p></o:p></p><p class=MsoPlainText>>> key press of non-ascii were interpreted as question marks.<o:p></o:p></p><p class=MsoPlainText>>><o:p> </o:p></p><p class=MsoPlainText>>> Issue: The robot key press events was handling only the ascii inputs <o:p></o:p></p><p class=MsoPlainText>>> and ignored the other Unicode inputs. Either it was throwing illegal <o:p></o:p></p><p class=MsoPlainText>>> argument exception in windows or does nothing on the mac for those <o:p></o:p></p><p class=MsoPlainText>>> Unicode inputs.<o:p></o:p></p><p class=MsoPlainText>>><o:p> </o:p></p><p class=MsoPlainText>>> Solution and fix: The platform specific api’s was unable handle the <o:p></o:p></p><p class=MsoPlainText>>> non-ascii inputs. I have modified the api’s to accept the non-ascii <o:p></o:p></p><p class=MsoPlainText>>> inputs and correspondingly send the message to the window to print <o:p></o:p></p><p class=MsoPlainText>>> the non-ascii characters as well. Below is the picture of how the <o:p></o:p></p><p class=MsoPlainText>>> non-ascii inputs are considered and printed onto the window.<o:p></o:p></p><p class=MsoPlainText>>><o:p> </o:p></p><p class=MsoPlainText>>> The solution spans across windows and mac platform and still in <o:p></o:p></p><p class=MsoPlainText>>> search of a solution for the Linux platform. The solution implements <o:p></o:p></p><p class=MsoPlainText>>> key scanning only upon existing valid ascii key was /_not_/ found and <o:p></o:p></p><p class=MsoPlainText>>> assumes it as Unicode key and sends the event to event queue to be <o:p></o:p></p><p class=MsoPlainText>>> processed as Unicode keys. Different formats are being used by <o:p></o:p></p><p class=MsoPlainText>>> different platform implementation of Unicode. For ex., per the below <o:p></o:p></p><p class=MsoPlainText>>> Unicode list, in the case of windows and mac, the key input can take <o:p></o:p></p><p class=MsoPlainText>>> decimal values whereas on Linux it can only take the Code values.<o:p></o:p></p><p class=MsoPlainText>>><o:p> </o:p></p><p class=MsoPlainText>>> On Linux, I was able to get the KeySym of Unicode keys but was unable <o:p></o:p></p><p class=MsoPlainText>>> to fake the key event as there was no mechanism available for the <o:p></o:p></p><p class=MsoPlainText>>> same(which sends the key event to window). Please let me know if <o:p></o:p></p><p class=MsoPlainText>>> there is any such mechanism available to simulate Unicode key events <o:p></o:p></p><p class=MsoPlainText>>> on Linux platform. Hence I think to raise a bug for the Linux <o:p></o:p></p><p class=MsoPlainText>>> platform and close this JDK-8148344 bug.<o:p></o:p></p><p class=MsoPlainText>>><o:p> </o:p></p><p class=MsoPlainText>>> Enhancement id: <a href="https://bugs.openjdk.java.net/browse/JDK-8148344"><span style='color:windowtext;text-decoration:none'>https://bugs.openjdk.java.net/browse/JDK-8148344</span></a><o:p></o:p></p><p class=MsoPlainText>>><o:p> </o:p></p><p class=MsoPlainText>>> Webrev: <a href="http://cr.openjdk.java.net/~sveerabhadra/8148344/webrev.00/"><span style='color:windowtext;text-decoration:none'>http://cr.openjdk.java.net/~sveerabhadra/8148344/webrev.00/</span></a><o:p></o:p></p><p class=MsoPlainText>>><o:p> </o:p></p><p class=MsoPlainText>>> Thanks and regards,<o:p></o:p></p><p class=MsoPlainText>>><o:p> </o:p></p><p class=MsoPlainText>>> Shashi<o:p></o:p></p><p class=MsoPlainText>>><o:p> </o:p></p><p class=MsoPlainText>> <o:p></o:p></p><p class=MsoPlainText>> <o:p></o:p></p><p class=MsoPlainText>> --<o:p></o:p></p><p class=MsoPlainText>> Best regards, Sergey.<o:p></o:p></p><p class=MsoPlainText>> <o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>--<o:p></o:p></p><p class=MsoPlainText>Best regards, Sergey.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p></div></body></html>