One could end up with the wrong encoding in xenocara while having a ucc
authoranton <anton@openbsd.org>
Fri, 22 Oct 2021 04:59:31 +0000 (04:59 +0000)
committeranton <anton@openbsd.org>
Fri, 22 Oct 2021 04:59:31 +0000 (04:59 +0000)
commitfd87b50980a0940507b34e265fabe882b9801140
treea15a68fe529d27c5810e4318258d4946ff6c8c0d
parentcec950a18a5fb5d724b5f8a7d3908e671ed08d9d
One could end up with the wrong encoding in xenocara while having a ucc
keyboard attached and /etc/kbdtype being present. The advertised
encoding of a wsmux is a bit fragile as the last attached device will
dictate it. If this happens to be a ucc keyboard, KB_US will always be
the advertised encoding as its encoding is immutable and /etc/kbdtype is
ignored.

Instead, do not advertise the encoding for ucc devices when the parent
mux queries its attached devices. However, asking the device directly
(i.e. bypassing the mux) still returns the encoding as wsconsctl(8)
would otherwise report an error.

Thanks to landry@ for the report and testing.
sys/dev/wscons/wskbd.c