> Date: Thu, 29 Sep 2016 16:09:09 +0200
> From: Theo Buehler <t...@math.ethz.ch>
> 
> On Thu, Sep 29, 2016 at 02:19:43PM +0200, Mark Kettenis wrote:
> > This diff adds a WSKBDIO_GETENCODINGS ioctl and uses it to print a
> > list of supported encodings like the old kvm groveling code did.  The
> > ioctl will clamp the number of entries that are returns to the number
> > that was passed in.  This means that if the number returned is the
> > same as the number passed in, there might be more entries and you
> > probably want to retry with a larger buffer.  The new implementation
> > does this.
> > 
> > Waring; this did not go through a make release yet.  And that might be
> > relevant, since this code gets included in the ramdisks.
> > 
> > Thoughts?
> > 
> 
> amd64 release builds fine with this patch. I tested it on both a normal
> system and with bsd.rd, works fine.  I like the fact that extended
> keyboard encodings are now also listed in bsd.rd.
> 
> There is one change of behavior: previously, if a non-root user ran
> kbd -l, it would exit with status 1 and print the error message:
> 
> kbd: kvm_openfiles: /dev/mem: permission denied
> 
> which gave at least some indication that it must be run as root.
> 
> Now it fails silently with exit code 0 without printing anything since
> opening the /dev/wskbd?  devices fails, as they are owned by root:wheel
> with permissions 600.

If you log in on the console, it actually works for non-root users as
well, at least for the primary keyboard.  This is because login(1)
modifies the permissions according to /etc/fbtab.  Now if you have
both pckbd(4) and ukbd(4), it will probably only show the encodings
for pckbd(4), unless you change /etc/fbtab to also change the
permissions on /dev/wskbd1.  But at that point we're quickly entering
the realm where kbd(8) simply isn't the appropriate tools to manage
things.

Now if you log in through xdm, you will in all likelyhood get an empty
list.  But X has its own idea about keyboard mappings anyway.  It only
initializes its settings based on the wscons settings.  But it never
changes the wscons settings if you manipulate the X mappings.

Cheers,

Mark

Reply via email to