Cool, got it 👍

Thank you everyone for the help 😊

On Monday, December 16, 2024 at 11:27:42 PM UTC+5:30 Jens wrote:

> The "charCode" property of keyboard events is deprecated for exactly the 
> reason you mentioned. Instead you should use the "key" property which is 
> available in keyup and keydown events and contains the character or a 
> description of the key being pressed. GWT SDK does not have a Java API to 
> access the "key" property so you have to either write your own helper 
> method using JSNI (pass in the native event and return they key property) 
> or use elemental2 + JsInterop base library to cast GWTs NativeEvent into 
> the elemental2 keyup/keydown event so you can access the "key" property 
> without JSNI.
>
> However ALT + / is still a bad shortcut for non-english people. I am 
> German and similar to Latin American keyboards character "/" is on the key 
> "7" and we have to press SHIFT + 7 to get a "/". So if your app uses 
> shortcut ALT + / and checks for ALT and for character "/" we actually have 
> to press ALT + (SHIFT + 7 = /). However on my German keyboard layout using 
> macOS that exact shortcut renders a backslash "\". So in your code you 
> would see that ALT is being pressed but the character (charCode/key 
> property) is "\" instead of "/" and the shortcut would not be accepted. 
> Even libraries for JS shortcuts like Mousetrap or hotkeys-js have trouble 
> to detect ALT + / on this keyboard layout on macOS.
>
> Your safest bet are CTRL / ALT + letters for shortcuts on the web. 
> Especially if users cannot customize shortcuts in your application you 
> should provide letter based shortcut alternatives if you want to stick to 
> common english shortcuts. So ALT+/ and ALT+s for accessing search for 
> example.
>
> -- J.
>
> Venky schrieb am Samstag, 14. Dezember 2024 um 13:26:46 UTC+1:
>
>> Thanks for the reply Jens,
>>
>> The issue that I am facing is with the '/', whose keycode is 191 in the 
>> standard keyboard layout and it is different in other keyboard layouts like 
>> the Latin American keyboard layout where the keycode for '/' is not 191. 
>> The keycode for the Alt key is same in almost all the keyboard layouts, so 
>> that is not the problem.
>> To check if the slash key is pressed along with the alt key I want to 
>> compare event.getNativeEvent().getCharCode() == '/' so that this is 
>> consistent in all keyboard layouts, but the issue is how do I check for 
>> this along with event.getNativeEvent().getAltKey() to know if both Alt + / 
>> are being pressed together.
>> The getCharCode() can be used only if there is a KeyPressEvent and 
>> getAltKeyCode() with KeyDownEvent or KeyUpEvent if I am not wrong, So how 
>> do I use them together.
>>
>>
>>
>>
>>
>> On Thursday, December 12, 2024 at 4:48:49 AM UTC+5:30 Jens wrote:
>>
>>> Usually you want to use the "key" property of the event as it is 
>>> independent of the physical location of the key. It contains the printable 
>>> character if the keyboard key produces one. If it doesn't it contains a 
>>> description like "shift".
>>>
>>> Depending on how international you have to be, you might also want to 
>>> think about keyboards that have two layouts: one with latin characters and 
>>> one with non-latin characters (arabic, ..). These keyboards usually have a 
>>> key to switch between both layouts and the layout with latin characters 
>>> usually matches the standard English keyboard layout, but it doesn't have 
>>> to. If you don't want to force your users to switch to latin mode before 
>>> using a keyboard shortcut you would need to detect if the "key" property 
>>> contains a non-latin character and if it does you should check "code" 
>>> instead of "key" property. You would use the "code" of the English layout, 
>>> assuming that the chance is high that the latin layout is indeed the 
>>> standard English layout.
>>>
>>> If you only support Chromium based browsers you can use the Keyboard 
>>> API: https://developer.mozilla.org/en-US/docs/Web/API/Keyboard_API
>>>
>>> -- J.
>>>
>>> Venky schrieb am Mittwoch, 11. Dezember 2024 um 22:38:11 UTC+1:
>>>
>>>> Hey community,
>>>>
>>>> I am working on a project where I want to introduce a keyboard shortcut 
>>>> for a particular action.
>>>>
>>>> private void shortcutKeyHandler() {
>>>>     Event.addNativePreviewHandler(new Event.NativePreviewHandler() {
>>>>         @Override
>>>>         public void onPreviewNativeEvent(Event.NativePreviewEvent 
>>>> event) {
>>>>           NativeEvent nativeEvent = event.getNativeEvent();
>>>>           if (event.getTypeInt() == Event.ONKEYDOWN && 
>>>> nativeEvent.getAltKey() && nativeEvent.getKeyCode() == 191 && 
>>>> !db.isShowing()) {
>>>>             nativeEvent.preventDefault();
>>>>             execute();
>>>>           } 
>>>>         } 
>>>>       });
>>>>     }
>>>>
>>>> In the code, I implemented a shortcut (Alt + /) to display a dialog 
>>>> box. While it works well with English keyboard layouts, the problem arises 
>>>> with other layouts where the Slash key (keycode 191) generates a different 
>>>> keycode.
>>>>
>>>> Is there some workaround with the help of JSNI?
>>>>
>>>> I would greatly appreciate any help in determining how to check the 
>>>> character code and verify if the Alt key is pressed.
>>>>
>>>> Thanks in advance 
>>>>
>>>

-- 
You received this message because you are subscribed to the Google Groups "GWT 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/google-web-toolkit/96cfc690-6307-466f-918b-6ae0229de0dbn%40googlegroups.com.

Reply via email to