From version 4.14.0 of the ThinLinc client, some keys produce no key code at all. One example of this is the key for § and $, located below Escape. (One can use the 'xev' utility to verify this) We suspect that it was introduced in https://github.com/TigerVNC/tigervnc/commit/0d22c7bd365637889c05dc3ad08652a3e719c46a And that https://github.com/TigerVNC/tigervnc/commit/97f51df7013ac818ec3e3c94b6c07b1300de1acd should fix this.
Created attachment 1221 [details] Beautiful Macbook Keyboard
*** This bug has been marked as a duplicate of bug 7982 ***
*** Bug 7982 has been marked as a duplicate of this bug. ***
Tested the macOS client on 6 different ThinLinc versions: - 4.9.0 (worked) - 4.10.0 (blank client, bug 7539) - 4.12.1 (worked) - 4.13.0 (worked) - 4.14.0 (bug started showing) - 4.17.0post_3682 (fixed)
Testing: ======== I have looked through the backport of the upstream commit and the change that have been applied looks good, but there are "parts missing" which essentially makes the dead key move to another place on an ISO layout keyboard. When testing, the key to the left of the "1" key now is no longer dead, and the correct character is printed when e.g. typing in a terminal in a ThinLinc session. But the key between the left shift and "z" is now dead instead. It looks like this is because the upstream patch was not applied in its entirety. The patch consists of two parts: 1. A diff that causes the two keys ISO_Selection and ANSI_Grave switch places if an ISO layout is used, essentially compensating for the weird behavior on macOS. 2. A diff that adds a mapping for ISO_Selection on macOS systems. So to conclude, we are now swapping keys correctly when using ISO layout keyboards, but the dead key is still dead. This should be fixed by applying the 2'nd diff of the upstream commit.
Following up on comment 10, the suggested change to apply the second diff has been implemented in revision 41321. Tested on macOS M1 and x86 and works as expected.