You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@guacamole.apache.org by "Mike Jumper (Jira)" <ji...@apache.org> on 2021/08/18 23:36:00 UTC

[jira] [Comment Edited] (GUACAMOLE-925) Add Russian keyboard support for RDP

    [ https://issues.apache.org/jira/browse/GUACAMOLE-925?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17401405#comment-17401405 ] 

Mike Jumper edited comment on GUACAMOLE-925 at 8/18/21, 11:35 PM:
------------------------------------------------------------------

{quote}
Since all systems are now Unicode-compatible, I think there's no need to add more layouts explicitly. Just [Ctrl]-sequences should be fixed for Unicode-layout. 
{quote}

This is not possible - it's just not how Unicode events work within Windows. The reason that pure Unicode events cannot be used with Ctrl for keyboard shortcuts is that Windows simply does not process keyboard shortcuts from Unicode events. It cannot work that way. There is no way for it to work.

Keyboard shortcuts can only with traditional key events, which requires that the configured keyboard layout (within the Guacamole connection) matches the keyboard layout configured within the RDP session. This should happen automatically if the keyboard layout selected within Guacamole is supported by the installation of Windows. That said, if a user later changes the keyboard layout within the session, the identities of remote keys will suddenly not match up with what Guacamole has been configured to expect, and the wrong events will be sent.

From the relevant section of the FAQ ([https://guacamole.apache.org/faq/#does-guacamole-support-my-keyboard-layout]), the absolute ultimate solution to providing perfect key events is to specifically support the keyboard layout in question, _but this is not usually necessary_. As long as _any_ supported keyboard layout is selected, the keys within that keyboard layout will be usable with keyboard shortcuts involving Ctrl, etc., and Unicode will be used automatically and only for keys that are absent from that keyboard layout.

From the above:

"... *This does not mean that your RDP server must have the same keyboard layout as the client machine.* It only means that Guacamole must have a keyboard layout definition for the layout used by the RDP server. If a user attempts to use a keyboard with a different layout, Guacamole will translate pressed keys as necessary to match the layout of the RDP server. If the user attempts to press keys which are not present in the keyboard layout of the RDP server, Guacamole will send those keys in the form of Unicode events. ..."

For example, if you are using a Russian keyboard locally and have configured Guacamole and Windows to us a US English layout, the following would happen for various key combinations:


||Local Keys||Remote Events||
| Ctrl+C | Traditional key press and release events for "Ctrl" and "C" |
| ю | Unicode event "ю" |

The only Ctrl shortcuts that would not work in this sort of configuration would be things like "Ctrl+ю".

{quote}
I recently upgraded version from 1.0 to 1.3 and the problem remains exactly as it was
{quote}

Specific support for Russian keyboard layout has not been implemented, hence this JIRA issue for adding that layout. You won't find it in any past release nor in current git. If this issue is closed as completed, you build the version noted in "Fix Version" or from git,  and you don't see support for Russian layouts, _then_ something is wrong.

To all happening across this JIRA issue because they are looking to use a Russian keyboard, things really should already work:

# Don't modify the source (unless you are intending to test the contributed keyboard layout)
# Configure your Guacamole connection to use a supported keyboard layout like US English (the default). *The layout does not need to match your local users' layouts.* It only needs to match the layout of the RDP server, and that much should happen automatically as long as the layout is supported by the server (which it should be).
# Type whatever you wish. Ctrl shortcuts that use keys defined on the US English keyboard will use traditional keyboard events and work as expected. Typing Russian/Cyrillic characters will leverage Unicode events and work as expected.

If there is something specific to the Russian layout that means the above actually cannot work for users leveraging Russian keyboards locally, please let us know.


was (Author: mike.jumper):
{quote}
Since all systems are now Unicode-compatible, I think there's no need to add more layouts explicitly. Just [Ctrl]-sequences should be fixed for Unicode-layout. 
{quote}

This is not possible - it's just not how Unicode events work within Windows. The reason that pure Unicode events cannot be used with Ctrl for keyboard shortcuts is that Windows simply does not process keyboard shortcuts from Unicode events. It cannot work that way. There is no way for it to work.

Keyboard shortcuts can only with traditional key events, which requires that the configured keyboard layout (within the Guacamole connection) matches the keyboard layout configured within the RDP session. This should happen automatically if the keyboard layout selected within Guacamole is supported by the installation of Windows. That said, if a user later changes the keyboard layout within the session, the identities of remote keys will suddenly not match up with what Guacamole has been configured to expect, and the wrong events will be sent.

From the relevant section of the FAQ ([https://guacamole.apache.org/faq/#does-guacamole-support-my-keyboard-layout]), the absolute ultimate solution to providing perfect key events is to specifically support the keyboard layout in question, _but this is not usually necessary_. As long as _any_ supported keyboard layout is selected, the keys within that keyboard layout will be usable with keyboard shortcuts involving Ctrl, etc., and Unicode will be used automatically and only for keys that are absent from that keyboard layout.

From the above:

"... **This does not mean that your RDP server must have the same keyboard layout as the client machine.** It only means that Guacamole must have a keyboard layout definition for the layout used by the RDP server. If a user attempts to use a keyboard with a different layout, Guacamole will translate pressed keys as necessary to match the layout of the RDP server. If the user attempts to press keys which are not present in the keyboard layout of the RDP server, Guacamole will send those keys in the form of Unicode events. ..."

For example, if you are using a Russian keyboard locally and have configured Guacamole and Windows to us a US English layout, the following would happen for various key combinations:


||Local Keys||Remote Events||
| Ctrl+C | Traditional key press and release events for "Ctrl" and "C" |
| ю | Unicode event "ю" |

The only Ctrl shortcuts that would not work in this sort of configuration would be things like "Ctrl+ю".

{quote}
I recently upgraded version from 1.0 to 1.3 and the problem remains exactly as it was
{quote}

Specific support for Russian keyboard layout has not been implemented, hence this JIRA issue for adding that layout. You won't find it in any past release nor in current git. If this issue is closed as completed, you build the version noted in "Fix Version" or from git,  and you don't see support for Russian layouts, _then_ something is wrong.

To all happening across this JIRA issue because they are looking to use a Russian keyboard, things really should already work:

# Don't modify the source (unless you are intending to test the contributed keyboard layout)
# Configure your Guacamole connection to use a supported keyboard layout like US English (the default). **The layout does not need to match your local users' layouts.** It only needs to match the layout of the RDP server, and that much should happen automatically as long as the layout is supported by the server (which it should be).
# Type whatever you wish. Ctrl shortcuts that use keys defined on the US English keyboard will use traditional keyboard events and work as expected. Typing Russian/Cyrillic characters will leverage Unicode events and work as expected.

If there is something specific to the Russian layout that means the above actually cannot work for users leveraging Russian keyboards locally, please let us know.

> Add Russian keyboard support for RDP
> ------------------------------------
>
>                 Key: GUACAMOLE-925
>                 URL: https://issues.apache.org/jira/browse/GUACAMOLE-925
>             Project: Guacamole
>          Issue Type: Improvement
>          Components: RDP
>    Affects Versions: 1.0.0
>            Reporter: Roman Adyev
>            Priority: Minor
>         Attachments: SCREEN.jpg, apache_guacamole_Russian_layouts.txt, image-2021-01-04-14-42-50-393.png, ru_ru_qwerty.keymap
>
>
> Hello, dear support team!
> I'm using Unicode layout because Russian layout isn't presented there, but with Unicode layout I can't send keyboard shortcuts to remote RDP machine (CTRL + C for example).
> If I switch Unicode to English layout in connection settings, I can do keyboard shortcuts but unfortunately some signs doesn't match when I use RU layout, for example instead of period sign I got Russian letter "ю". 
> The keyboard layouts on remote and local machine are identical, that's 100%, tested many times on different clean windows 10 installs, on work, on VMs, on friend's PCs, etc. The issue always the same.
> As I can see Russian layout isn't presented in Guacamole connection settings by itself so it would be highly appreciated if you can suggest any workaround for Russian users.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)