Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Broken arrow keys for browser access to proxmox and ESXi



On Sat, 3 Jan 2026, David Brownlee wrote:

More information.

- Disabling wayland in gtk3 and rebuilding all packages does not
resolve the issue


Yeah, that wasn't it. I think what's happening is, actually, this:

On NetBSD (recent-ish -HEAD), and, also its close sister, OpenBSD-7.7:

```
$ setxkbmap -print
xkb_keymap {
	xkb_keycodes  { include "xfree86+aliases(qwerty)"	};
	xkb_types     { include "complete"	};
	xkb_compat    { include "complete"	};
	xkb_symbols   { include "pc+us+ctrl(swapcaps)+terminate(ctrl_alt_bksp)"	};
	xkb_geometry  { include "pc(pc104)"	};
};

$ fgrep -m1 DOWN /usr/X11R7/lib/X11/xkb/keycodes/xfree86
    <DOWN> = 104;

$ xev -event keyboard
[...]
KeyPress event, serial 28, synthetic NO, window 0x1600001,
    root 0x50e, subw 0x0, time 103222, (89,89), root:(960,600),
    state 0x0, keycode 104 (keysym 0xff54, Down), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False
[...]

$ ```

Note that the keycode for ArrowDown is 104 (0x68).

But, on Linux (Ubuntu 24.04.3) and FreeBSD-14.3 both of which use evdev:

```
$ setxkbmap -print
xkb_keymap {
	xkb_keycodes  { include "evdev+aliases(qwerty)"	};
	xkb_types     { include "complete"	};
	xkb_compat    { include "complete"	};
	xkb_symbols   { include "pc+us+inet(evdev)+ctrl(swapcaps)+terminate(ctrl_alt_bksp)"	};
	xkb_geometry  { include "pc(pc104)"	};
};

$ fgrep -m1 DOWN /usr/X11R7/lib/X11/xkb/keycodes/evdev	# checking on NetBSD here
	<DOWN> = 116;

$ xev -event keyboard
[...]
KeyPress event, serial 28, synthetic NO, window 0x1400001,
    root 0x4b2, subw 0x1400002, time 12865061, (21,19), root:(234,130),
    state 0x0, keycode 116 (keysym 0xff54, Down), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False
[...]

$
```

And, what evdev keycode is 104 (ie. ArrowDown in wscons)?
```
$ fgrep 104 /usr/X11R7/lib/X11/xkb/keycodes/evdev
	<KPEN> = 104;

$
```

It's KPEN (KeyPad Enter)--QED. And, in the Pale Moon UXP sources:

https://repo.palemoon.org/MoonchildProductions/UXP/src/branch/master/widget/NativeKeyToDOMCodeName.h#L356

we see (hex value):

```
CODE_MAP_X11(ArrowDown,                 0x0074)
```

which matches (only) the evdev scancode as stated here:

https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_code_values#code_values_on_linux_x11


So, it's a "scancode" mismatch--a Linuxism, ultimately.

Fix?

1. Patching the browser source(s) would be one way. (I only checked the
Pale Moon sources--Firefox was 600 MB+; don't even want to know how large
Chrome is!) You can try Pale Moon immediately, then use that as a guide
to figure out where the Firefox equilavent is. Chrome, I leave to someone
else :).

2. Make the kernel generate evdev-compatible scancodes (then use the
evdev keycodes in Xorg) if requested (`wsconsctl -w encoding=us.evdev`)?

HTH,

-RVP


Home | Main Index | Thread Index | Old Index