keyboard: Handle symbolic OSK key codes as explicitly invalid

`key` is an empty string in this case, causing `charCodeAt(0)` to return
`NaN`, which when passed to `Clutter.unicode_to_keysym` now generates an
error in gjs >= 1.67.3:

```
JS ERROR: Error: Argument wc: value is out of range for uint32
```

And the symbolic keys like Backspace, Enter and Caps Lock would have their
presses ignored.

Just skip the call to `charCodeAt` that will fail and allow
`Clutter.unicode_to_keysym` to return its usual error flag.

Fixes: https://bugs.launchpad.net/bugs/1918738
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1758>
This commit is contained in:
Daniel van Vugt 2021-03-12 14:45:19 +08:00 committed by Marge Bot
parent c5b18ee66a
commit 1f0e4b58ab

View File

@ -327,7 +327,7 @@ var Key = GObject.registerClass({
} }
_getKeyval(key) { _getKeyval(key) {
let unicode = key.charCodeAt(0); let unicode = key.length ? key.charCodeAt(0) : undefined;
return Clutter.unicode_to_keysym(unicode); return Clutter.unicode_to_keysym(unicode);
} }