Re: [kbd] [PATCH] src/libkeymap: add support for parsing more unicode values

Alexey Gladkov <[email protected]> Tue, 2 Mar 2021 01:47:27 +0100
Newsgroups dev.linux.lists.kbd
Message-ID <[email protected]>
On Mon, Mar 01, 2021 at 03:49:52PM +0100, Anisse Astier wrote:
> On Mon, Mar 01, 2021 at 03:09:39PM +0100, Alexey Gladkov wrote:
> > On Sat, Feb 27, 2021 at 03:36:11PM +0100, Anisse Astier wrote:
> > > The auto-generated (with ckbcomp) file fr-bepo_afnor did not load (even
> > > partially), because of an U+1f12f (copyleft symbol) that is wrongly
> > > parsed, generating this error message:
> > > 
> > > 	too many (160) entries on one line
> > > 
> > > Fix libkeymap so that the keymap can be parsed, even if the offending
> > > character won't be loaded because of the ushort limitation of the
> > > kb_value KDSKBENT uapi.
> > > 
> > > It's better to have the keymap partially loaded than not at all.
> > 
> > Nop. Partially keymap loading is very dangerous. You can get a completely
> > unusable console. The libkeymap shouldn't break the console if it is known
> 
> By partially, I meant that only a single character of a single key
> wouldn't load. I'm curious, what would be the implications here ? How
> could it break ?

In this particular case, nothing will happen. An unicode character will
not be loaded and the user will probably see a warning. And this approach
is the best way to do it.

> I tried loading this keymap, and didn't see any averse effect. The
> character was missing, and that's about it. Why wouldn't we want that ?

>From the point of view of keymap processing in the kernel, such a keymap
is not valid. I believe that the library should report the fact of an
error in the keymap as early as possible.

Speaking of such restrictions, I would like to remind you that libkeymap
also has a restriction on the number of keys, but technically libkeymap
could parse more keys.

> > in advance that the keymap is not correct. You should fix ckbcomp so that
> > it generates the correct keymap.
> > 
> 
> I thought about doing this too, but it would mean not recognizing a
> valid (albeit unsupported) unicode symbol. At least here the parsing
> works, even if this particular symbol isn't loaded because of kernel
> console limitations.
> 
> It feels weird to use the U+ unicode symbol notation, and then refuse to
> load 2/3rd of those.

>From the point of view of the kernel, unicode symbols greater than 0xf000
are not valid.

-- 
Rgrds, legion