<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Hi Sergey Malenkov,<div class=""><br class=""><div class="">We can debate on how to treat the ALTGR_KEY, and can choose to include the behaviour as a system flag.</div><div class="">But, currently, with my fix, the code will behave exactly as in Java 1.8. Even there, when I pressed ALTGR key, after holding ALT key, I observed a KeyEvent 0 being sent.</div><div class=""><br class=""></div><div class="">I would suggest to re-look at my fix which fixes the current problem at hand, and perhaps we can move this discussion under a new bug.</div><div class=""><br class=""></div><div class="">Thanks,</div><div class="">Krishna<br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On 18-Mar-2019, at 8:02 PM, Sergey Malenkov <<a href="mailto:malenkov@gmail.com" class="">malenkov@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">Hi Sergey,</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">ALT_GRAPH_DOWN_MASK is not the only mask missing in JavaDoc. What is</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">about META_DOWN_MASK? What if the developer, who does not care about</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">ALT_GRAPH, forget about META too? Guess how your example will work on</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">Mac. What is about the WORA slogan?</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">I believe that the example in the javadoc is not entirely correct.</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">This is just a very simple example, related to the English locale on</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">Windows (and possibly on Linux). It should not be used in</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">multi-platform code.</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">On Sun, Mar 17, 2019 at 1:26 AM Sergey Bylokhov</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class=""><</span><a href="mailto:Sergey.Bylokhov@oracle.com" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">Sergey.Bylokhov@oracle.com</a><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">> wrote:</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br class="">On 16/03/2019 03:58, Sergey Malenkov wrote:<br class=""><blockquote type="cite" class="">Your example is synthetic and shows a problem in the one specific<br class="">case. I think if you introduce new mask, you have to use it in your<br class="">example too. If you add ALT_GRAPH_DOWN_MASK to 'offmask' your example<br class="">will not work (that's how processed all shortcuts in Swing and IDEA).<br class="">If you add it to 'onmask' the KeyEvent(new Button(), 0, 0,<br class="">ALT_GRAPH_DOWN_MASK, 0) will not work.<br class=""></blockquote><br class="">Your example is good as well, but it shows the opposite, if<br class="">ALT_GRAPH_DOWN_MASK was used as "onmask" or as "offmask" then it means<br class="">that this example tries to take care about altGr and it only<br class="">properly works after the fix. And if the code is unaware about the altGr<br class="">flag as in previous example it will be ignored.<br class=""><br class=""><blockquote type="cite" class="">Am I right that to support your specific case you have to find and fix<br class="">all Alt-based shortcuts in Swing, we should fix all Alt-based<br class="">shortcuts in all keymaps in our IDEs and we should notify all our<br class="">users that they have to fix all Alt-based shortcuts in their custom<br class="">keymaps? The brilliant example of backward compatibility!<br class=""></blockquote><br class="">I do not remember all changes which were integrated since initially it was done<br class="">~4 years ago. But Swing was updated by some changes after that, for example:<br class=""><a href="https://bugs.openjdk.java.net/browse/JDK-8194873" class="">https://bugs.openjdk.java.net/browse/JDK-8194873</a><br class=""><br class=""><blockquote type="cite" class=""><br class=""><blockquote type="cite" class="">So if the client will follow the spec below it should work as before, isn't it?:<br class="">https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/java/awt/event/InputEvent.html#getModifiersEx()<br class=""></blockquote><br class="">If a developer use this method as described his code will be broken<br class="">too, because good and attentive developer definitely added<br class="">ALT_GRAPH_DOWN_MASK to 'offmask'.<br class=""></blockquote><br class="">If the user wants to ignore all combinations with "Alternate Character Key"<br class="">then, as you pointed in the start of this thread, he should ignore both<br class="">"alt" since on macOS both alt keys are "Alternate Character Key".<br class=""><br class=""><blockquote type="cite" class=""><br class="">On Sat, Mar 16, 2019 at 1:27 AM Sergey Bylokhov<br class=""><Sergey.Bylokhov@oracle.com> wrote:<br class=""><blockquote type="cite" class=""><br class="">On 15/03/2019 05:54, Sergey Malenkov wrote:<br class=""><blockquote type="cite" class="">We have a major issue about unexpected AltGr in the keyboard layout<br class="">that should not have AltGr at all:<br class=""><a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__youtrack.jetbrains.com_issue_IDEA-2D206348&d=DwIFaQ&c=RoP1YumCXCgaWHvlZYR8PZh8Bv7qIrMUB65eapI_JnE&r=QF7AertWDY_M4hfHg_4S-iyX-aP0wtLYwZFgs0zfX_k&m=j-gQEy4UDmzd3Sa5zjEYskUw4CoYUZ9gDurLkGu1YOo&s=HcCKCq8FPyOoJEvT4qk59DJqCAiRB-BvECy_VCAdpqI&e=" class="">https://urldefense.proofpoint.com/v2/url?u=http-3A__youtrack.jetbrains.com_issue_IDEA-2D206348&d=DwIFaQ&c=RoP1YumCXCgaWHvlZYR8PZh8Bv7qIrMUB65eapI_JnE&r=QF7AertWDY_M4hfHg_4S-iyX-aP0wtLYwZFgs0zfX_k&m=j-gQEy4UDmzd3Sa5zjEYskUw4CoYUZ9gDurLkGu1YOo&s=HcCKCq8FPyOoJEvT4qk59DJqCAiRB-BvECy_VCAdpqI&e=</a><br class="">Why you decided to support AltGr for every keyboard layout? It really<br class="">breaks backward compatibility!<br class=""></blockquote><br class="">Even in your bug report the people complain that altGr key does not work, and<br class="">the only problem here is that it does not assigned by default.<br class="">But on the other side it is possible to set separate shortcuts<br class="">to the "Alt + Alt Graph + Enter"and "Alt + Enter":<br class=""><br class=""><blockquote type="cite" class="">I think the main client is Swing and pressed AltGr that looks like<br class="">'Alt+AltGr+' breaks all Alt-based shortcuts defined in<br class="">javax.swing.plaf.basic.BasicLookAndFeel#initComponentDefaults and<br class="">other places. Now, if you press "alt LEFT", the "moveColumnLeft"<br class="">action is performed only for the left Alt. And this also breaks a<br class="">backward compatibility.<br class=""></blockquote><br class="">The term "all" is not so critical, there are only few such shortcuts, and it is<br class="">a good thing that potentially we can set different shortcuts for each.<br class="">This is a bug that these places were not updated, it is easy to fix since this<br class="">is not exposed via public API.<br class="">But we will get the same result if we will use the AltGr mask only.<br class=""><br class=""><blockquote type="cite" class="">It is not backward compatible to use AltGr instead of right Alt in<br class="">both cases. Instead of 'Alt+key' you will get 'AltGr+key' or<br class="">'Alt+AltGr+key', which are not bound to any action.<br class=""></blockquote><br class="">It is compatible to the specification of InputEvent.getModifiersEx():<br class="">KeyEvent event = new KeyEvent(new Button(), 0, 0,<br class="">                               ALT_DOWN_MASK | ALT_GRAPH_DOWN_MASK, 0);<br class="">   int onmask =  ALT_DOWN_MASK;<br class="">   int offmask = CTRL_DOWN_MASK|SHIFT_DOWN_MASK;<br class="">   if ((event.getModifiersEx() & (onmask | offmask)) == onmask) {<br class="">     ...<br class="">   }<br class=""><br class="">The code above works before and after the change for altGr.<br class="">But it will stop working if we will use altGr only, and it will be hard to argue<br class="">why the ALT flag is not set while alt key is pressed(since on some keyboards this key is<br class="">marked as alt and on some other altGr).<br class=""><br class="">And as specially noted in the method above the code should not assume which<br class="">flags(and how many) were set by the actions, if such assumptions exists in<br class="">Swing itself they should be fixed as well.<br class=""><br class=""><blockquote type="cite" class=""><br class="">On Fri, Mar 15, 2019 at 9:27 AM Krishna Addepalli<br class=""><<a href="mailto:krishna.addepalli@oracle.com" class="">krishna.addepalli@oracle.com</a>> wrote:<br class=""><blockquote type="cite" class=""><br class="">Hi Sergey Malenkov,<br class=""><br class=""><blockquote type="cite" class="">'Alt+AltGr+Right' does nothing, because we do not assign this shortcut yet<br class=""></blockquote>In my personal experience, I did not find any instance, wherein a shortcut had left and right alt in it.<br class="">Although it is not impossible, it seems weird to define such shortcuts.<br class="">It would be helpful if you could point to some resources, wherein defining such shortcuts is acceptable.<br class=""><br class="">Thanks,<br class="">Krishna<br class=""><br class=""><blockquote type="cite" class="">On 14-Mar-2019, at 4:03 PM, Sergey Malenkov <<a href="mailto:malenkov@gmail.com" class="">malenkov@gmail.com</a>> wrote:<br class=""><br class="">I strongly don't like two masks for one key. If you press VK_ALT,<br class="">ALT_DOWN_MASK should be set. If you press VK_SHIFT then,<br class="">SHIFT_DOWN_MASK should be added to indicate that both keys are<br class="">pressed. And if you press VK_ALT_GRAPH, only ALT_GRAPH_DOWN_MASK<br class="">should be added. Otherwise, you can't distinguish the following key<br class="">strokes: 'AltGr+Right' and 'Alt+AltGr+Right'. But these keystrokes are<br class="">different and should invoke different actions. For example,<br class="">'Alt+Right' moves cursor to the next word<br class="">'Alt+Shift+Right' moves cursor to the next word AND adds all skipped<br class="">characters to selection<br class="">'Alt+AltGr+Right' does nothing, because we do not assign this shortcut yet<br class=""><br class="">On Thu, Mar 14, 2019 at 12:09 AM Sergey Bylokhov<br class=""><<a href="mailto:Sergey.Bylokhov@oracle.com" class="">Sergey.Bylokhov@oracle.com</a>> wrote:<br class=""><blockquote type="cite" class=""><br class="">On 13/03/2019 03:59, Sergey Malenkov wrote:<br class=""><blockquote type="cite" class="">I missed the "for ALT keys" in the bug title and thought that<br class="">"KeyEvent.getModifiers() returns inconsistent values" was about<br class="">incompatible behaviour on different platforms. In fact, JDK-8218917<br class="">should be renamed to something like “The right Alt key on Mac should<br class="">behave as Alt and must not break the left Alt key processing”.<br class=""></blockquote><br class="">But the "right Alt" should behave like a "left alt" already, it should use both flags:<br class="">the common alt(ALT_DOWN_MASK) and the altGr(ALT_GRAPH_DOWN_MASK).<br class=""><br class="">So if the client will follow the spec below it should work as before, isn't it?:<br class=""><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/java/awt/event/InputEvent.html#getModifiersEx()" class="">https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/java/awt/event/InputEvent.html#getModifiersEx()</a><br class=""><br class=""><blockquote type="cite" class="">On Wed, Mar 13, 2019 at 6:57 AM Sergey Bylokhov<br class=""><<a href="mailto:Sergey.Bylokhov@oracle.com" class="">Sergey.Bylokhov@oracle.com</a>> wrote:<br class=""><blockquote type="cite" class=""><br class="">On 12/03/2019 12:28, Sergey Malenkov wrote:<br class=""><blockquote type="cite" class="">Hi Sergey,<br class=""><br class="">1. macOS uses a regular Alt key as "Alternate Character Key". This is<br class="">the reason why JDK Toolkit defines Ctrl+Alt to select a mnemonic,<br class="">instead of simple Alt. See<br class=""><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__sites.google.com_site_malenkov_java_141229&d=DwIFaQ&c=RoP1YumCXCgaWHvlZYR8PZh8Bv7qIrMUB65eapI_JnE&r=QF7AertWDY_M4hfHg_4S-iyX-aP0wtLYwZFgs0zfX_k&m=j-gQEy4UDmzd3Sa5zjEYskUw4CoYUZ9gDurLkGu1YOo&s=Y6PcJ4DGp2cSnTLEvtsIdt55_u0F8VqL5LSA7vBPbkw&e=" class="">https://urldefense.proofpoint.com/v2/url?u=https-3A__sites.google.com_site_malenkov_java_141229&d=DwIFaQ&c=RoP1YumCXCgaWHvlZYR8PZh8Bv7qIrMUB65eapI_JnE&r=QF7AertWDY_M4hfHg_4S-iyX-aP0wtLYwZFgs0zfX_k&m=j-gQEy4UDmzd3Sa5zjEYskUw4CoYUZ9gDurLkGu1YOo&s=Y6PcJ4DGp2cSnTLEvtsIdt55_u0F8VqL5LSA7vBPbkw&e=</a><br class=""></blockquote><br class="">Right, but introducing this flag for the "left alt" could cause even more<br class="">issues, so this flag is set only for the right.<br class=""><br class=""><blockquote type="cite" class="">3. Regression was caused by adding AltGr to key processing on Mac. But<br class="">I found more issues with inconsistent key processing on different<br class="">platforms. See<span class="Apple-converted-space"> </span><a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__sites.google.com_site_malenkov_java_190312&d=DwIFaQ&c=RoP1YumCXCgaWHvlZYR8PZh8Bv7qIrMUB65eapI_JnE&r=QF7AertWDY_M4hfHg_4S-iyX-aP0wtLYwZFgs0zfX_k&m=j-gQEy4UDmzd3Sa5zjEYskUw4CoYUZ9gDurLkGu1YOo&s=Y7GZdeTQvRyIBxAsCDtaB8PZo9_GRVYIZZvn2VfCzJc&e=" class="">https://urldefense.proofpoint.com/v2/url?u=http-3A__sites.google.com_site_malenkov_java_190312&d=DwIFaQ&c=RoP1YumCXCgaWHvlZYR8PZh8Bv7qIrMUB65eapI_JnE&r=QF7AertWDY_M4hfHg_4S-iyX-aP0wtLYwZFgs0zfX_k&m=j-gQEy4UDmzd3Sa5zjEYskUw4CoYUZ9gDurLkGu1YOo&s=Y7GZdeTQvRyIBxAsCDtaB8PZo9_GRVYIZZvn2VfCzJc&e=</a><br class=""></blockquote><br class="">Not sure that CAPS_LOCK is related.<br class=""><br class=""><blockquote type="cite" class=""><br class=""><br class="">On Tue, Mar 12, 2019 at 4:17 AM Sergey Bylokhov<br class=""><<a href="mailto:Sergey.Bylokhov@oracle.com" class="">Sergey.Bylokhov@oracle.com</a>> wrote:<br class=""><blockquote type="cite" class=""><br class="">On 11/03/2019 17:37, Philip Race wrote:<br class=""><blockquote type="cite" class="">The debate is about AltGraph which an ancient MS-DOSism for<br class="">asking for an ALTernate GRAPHics bitmap font - all pre-dates windows<br class="">and I am sure has never been applicable to any MacOS.<br class=""></blockquote><br class="">It also about the "right alt" which is also know as "AltGraph". I guess currently<br class="">it is implemented as "right alt" on Linux/macOS/windows.<br class=""><br class="">BTW on linux it is also named as "Alternative Characters Key":<br class=""><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__help.ubuntu.com_community_ComposeKey&d=DwIFaQ&c=RoP1YumCXCgaWHvlZYR8PZh8Bv7qIrMUB65eapI_JnE&r=QF7AertWDY_M4hfHg_4S-iyX-aP0wtLYwZFgs0zfX_k&m=j-gQEy4UDmzd3Sa5zjEYskUw4CoYUZ9gDurLkGu1YOo&s=DvJtvBcerkulT3S417Vu6hQyXy7e0bI1bX9fInefV-A&e=" class="">https://urldefense.proofpoint.com/v2/url?u=https-3A__help.ubuntu.com_community_ComposeKey&d=DwIFaQ&c=RoP1YumCXCgaWHvlZYR8PZh8Bv7qIrMUB65eapI_JnE&r=QF7AertWDY_M4hfHg_4S-iyX-aP0wtLYwZFgs0zfX_k&m=j-gQEy4UDmzd3Sa5zjEYskUw4CoYUZ9gDurLkGu1YOo&s=DvJtvBcerkulT3S417Vu6hQyXy7e0bI1bX9fInefV-A&e=</a><br class=""><br class=""><blockquote type="cite" class="">So someone needs to properly explain why we would claim a Mac keyboard<br class="">is OK to generate a keycode it doesn't have and cause a slew of regressions<br class="">in the process ...><br class="">If Mac doesn't distinguish these two, we should generate the same keycode for both.<br class=""></blockquote><br class="">The macOS supports "right alt", otherwise it would not be possible to implement it in java:<br class=""><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__developer.apple.com_library_archive_technotes_tn2450_-5Findex.html&d=DwIFaQ&c=RoP1YumCXCgaWHvlZYR8PZh8Bv7qIrMUB65eapI_JnE&r=QF7AertWDY_M4hfHg_4S-iyX-aP0wtLYwZFgs0zfX_k&m=j-gQEy4UDmzd3Sa5zjEYskUw4CoYUZ9gDurLkGu1YOo&s=hD5wMxSuL3iN_tqTn0Cd5ULhp_bGzQl3fFnQQdNXNuU&e=" class="">https://urldefense.proofpoint.com/v2/url?u=https-3A__developer.apple.com_library_archive_technotes_tn2450_-5Findex.html&d=DwIFaQ&c=RoP1YumCXCgaWHvlZYR8PZh8Bv7qIrMUB65eapI_JnE&r=QF7AertWDY_M4hfHg_4S-iyX-aP0wtLYwZFgs0zfX_k&m=j-gQEy4UDmzd3Sa5zjEYskUw4CoYUZ9gDurLkGu1YOo&s=hD5wMxSuL3iN_tqTn0Cd5ULhp_bGzQl3fFnQQdNXNuU&e=</a><br class=""><br class=""><br class=""><blockquote type="cite" class="">One could suppose there is a difference else why two keys, but what is the right<br class="">thing to do here  that fixes all the problems. What exactly WAS the problem<br class="">with what was there in the first place ? And if changing it is correct why is it<br class="">causing regressions ?<br class=""></blockquote><br class="">Regressions were caused by the bugs in the fix implementation, or am I missed something?<br class=""><br class=""><br class=""><blockquote type="cite" class=""><br class="">-phil.<br class=""><br class=""><br class=""><br class="">On 3/12/19, 5:34 AM, Sergey Bylokhov wrote:<br class=""><blockquote type="cite" class="">Hi, Phil.<br class="">On 11/03/2019 07:43, Philip Race wrote:<br class=""><blockquote type="cite" class="">The reasoning that AltGraph might be useful to someone is a bit weak<br class="">and I don't think I'd want to support it via system property or build options.<br class=""><br class="">If its not a platform keyboard key, why do we need it ?<br class=""></blockquote><br class="">The "AltGraph" key is also commonly referred to as "Right Alt", and<br class="">it has been implemented on all platforms as a "Right Alt", it is convenient to<br class="">distinguish the left/right alts.<br class=""><br class=""></blockquote></blockquote><br class=""><br class="">--<br class="">Best regards, Sergey.<br class=""></blockquote><br class=""><br class=""><br class=""></blockquote><br class=""><br class="">--<br class="">Best regards, Sergey.<br class=""></blockquote><br class=""><br class=""><br class=""></blockquote><br class=""><br class="">--<br class="">Best regards, Sergey.<br class=""></blockquote><br class=""><br class=""><br class="">--<br class="">Best regards,<br class="">Sergey A. Malenkov<br class=""></blockquote><br class=""></blockquote><br class=""><br class=""></blockquote><br class=""><br class="">--<br class="">Best regards, Sergey.<br class=""></blockquote><br class=""><br class=""><br class=""></blockquote><br class=""><br class="">--<br class="">Best regards, Sergey.<br class=""></blockquote><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">--<span class="Apple-converted-space"> </span></span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">Best regards,</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">Sergey A. Malenkov</span></div></blockquote></div><br class=""></div></div></body></html>