detecting keyboard layout during boot
freebsd at edvax.de
Wed May 15 13:27:23 UTC 2013
On Wed, 15 May 2013 09:35:54 +0200, Matthias Apitz wrote:
> I have in /etc/rc.conf a line
> to set the keyboard to German; as the system in question is on an USB
> key for boot and sometimes used in other laptops with QWERTY layout, I
> would like to have it adapt itself to the actual layout without changing
> anything before booting in rc.conf and without asking the user to press
> a key ... is there some way to detect the actual keyboard layout
Basically, it's impossible, but it can be made possible by the
power of FreeBSD. :-)
Allow me to explain:
Depending on where the keyboard is attached, some connections
(AT 5 pin plug, PS/2 6 pin mini-plug) do not offer any means to
detect what keyboard is connected (or even _if_ a keyboard is
connected). This case usually applies to keyboards built into
laptops. You can see that in "dmesg | grep kbd".
% dmesg | grep kbd
kbd1 at kbdmux0
atkbdc0: <Keyboard controller (i8042)> at port 0x60,0x64 on isa0
atkbd0: <AT Keyboard> irq 1 on atkbdc0
kbd0 at atkbd0
ukbd0: <vendor 0x0430 Sun USB Keyboard, class 0/0,
rev 2.00/1.05, addr 5> on usbus1
kbd2 at ukbd0
You see: The AT keyboard controller is detected, kbd0 is available.
But there is no actual keyboard connected to that PS/2 port. Instead,
a Sun USB Type 7 keyboard (german layout) is being used here, as
But as you're asking about USB, there is a way. But this way
depends on how the manufacturer cooperates. Let's discuss that.
As you know, every USB device is characterized by two specific
USB numbers: vendor ID and product ID. In some cases, the product
ID is different regarding the language layout, but you need to
test that individually, no standard seems to exist.
Then, you can use the devd.conf file to select per this ID and
load the correct keyboard layout. This is done in the "rc.conf
stage". Prior to this stage, the "kernel stage", you can hardcode
layouts in the kernel config. Last time I checked this stopped
working, I have been told that the use of kbdmux is the reason
for this observation.
Those options would enable a german keyboard layout even in SUM.
Even adding a font for proper display has been possible:
Not sure if this is still supported. Using Umlauts and Eszett is
discouraged in filenames, and the blind knowledge of the US keyboard
layout is quite standard among sysadmins. :-)
As a summery: No soup for you! ;-)
Happy FreeBSD user since 4.0
Andra moi ennepe, Mousa, ...
More information about the freebsd-questions