Date: Wed, 1 Feb 2023 17:35:53 +0100 From: Stefan Esser <se@FreeBSD.org> To: Yuri <yuri@aetern.org> Cc: FreeBSD CURRENT <freebsd-current@freebsd.org> Subject: Re: vt and keyboard accents Message-ID: <60be58f2-c33d-5707-500b-1746c6fc3d67@FreeBSD.org> In-Reply-To: <70f53d17-46eb-c299-1a93-bf28858c1685@aetern.org> References: <70f53d17-46eb-c299-1a93-bf28858c1685@aetern.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Am 29.01.23 um 01:54 schrieb Yuri: > Looking into an issue with accents input for vt and cz (so > /usr/share/vt/keymaps/cz.kbd) keyboard where some of the accents are > working and other result weird unrelated characters output. > > Checking kbdcontrol -d output, there is an obvious difference with > keymap contents -- all mappings are trimmed down to 1 byte after reading: > > kbdcontrol: > dacu 180 ( 180 180 ) ( 'S' 'Z' ) ( 'Z' 'y' ) ( 's' '[' ) > ( 'z' 'z' ) ( 'R' 'T' ) ( 'A' 193 ) ( 'L' '9' ) > ( 'C' 006 ) ( 'E' 201 ) ( 'I' 205 ) ( 'N' 'C' ) > ( 'O' 211 ) ( 'U' 218 ) ( 'Y' 221 ) ( 'r' 'U' ) > ( 'a' 225 ) ( 'l' ':' ) ( 'c' 007 ) ( 'e' 233 ) > ( 'i' 237 ) ( 'n' 'D' ) ( 'o' 243 ) ( 'u' 250 ) > ( 'y' 253 ) > > keymap: > dacu 0xb4 ( 0xb4 0xb4 ) ( 'S' 0x015a ) ( 'Z' 0x0179 ) > ( 's' 0x015b ) > ( 'z' 0x017a ) ( 'R' 0x0154 ) ( 'A' 0xc1 ) > ( 'L' 0x0139 ) > ( 'C' 0x0106 ) ( 'E' 0xc9 ) ( 'I' 0xcd ) > ( 'N' 0x0143 ) > ( 'O' 0xd3 ) ( 'U' 0xda ) ( 'Y' 0xdd ) > ( 'r' 0x0155 ) > ( 'a' 0xe1 ) ( 'l' 0x013a ) ( 'c' 0x0107 ) > ( 'e' 0xe9 ) > ( 'i' 0xed ) ( 'n' 0x0144 ) ( 'o' 0xf3 ) > ( 'u' 0xfa ) > ( 'y' 0xfd ) > > Source of the problem is the following definition in sys/sys/kbio.h: > > struct acc_t { > u_char accchar; > u_char map[NUM_ACCENTCHARS][2]; > }; > > While the keymaps were converted to have the unicode characters for vt > in the commit below, the array to store them (map) was missed, or was > there a reason for this? > > --- > commit 7ba08f814546ece02e0193edc12cf6eb4d5cb8d4 > Author: Stefan Eßer <se@FreeBSD.org> > Date: Sun Aug 17 19:54:21 2014 +0000 > > Attempt at converting the SYSCONS keymaps to Unicode for use with > NEWCONS. > I have spent many hours comparing source and destination formats, > and hope > to have caught the most severe conversion errors. > --- > > I have tried the following patch and it allows me to enter all accents > documented in the keymap, though I must admit I'm not sure it does not > have hidden issues: > > diff --git a/sys/sys/kbio.h b/sys/sys/kbio.h > index 7f17bda76c5..fffeb63e226 100644 > --- a/sys/sys/kbio.h > +++ b/sys/sys/kbio.h > @@ -200,7 +200,7 @@ typedef struct okeymap okeymap_t; > > struct acc_t { > u_char accchar; > - u_char map[NUM_ACCENTCHARS][2]; > + int map[NUM_ACCENTCHARS][2]; > }; > I have extended the range of the map array entries to 16 bits, which is sufficient for all currently defined keymap entries, see commit 1e0853ee8403. Thanks for reporting! Regards, STefan
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?60be58f2-c33d-5707-500b-1746c6fc3d67>