Re: Keymaps in virtual consoles.
On 13/09/13 22:20, Steven Chamberlain wrote:
> kbdcontrol seems to be doing some ioctls which fail with ENOTTY even
> though I use "< /dev/console"
Actually the failing ioctl is:
> #define TIOCGETA _IOR('t', 19, struct termios) /* get termios struct */
I've no idea why that is being used, especially on fd=0x3 which is the
keymap file it just opened.
34119 kbdcontrol CALL ioctl(0x3,0x402c7413 ,0x7fffffffa980)
34119 kbdcontrol RET ioctl -1 errno 25 Inappropriate ioctl for device
The ioctl to set keyboard layout is:
> #define PIO_KEYMAP _IO('k', 7)
And it returns a success status.
34119 kbdcontrol CALL ioctl(0,0x20006b07 ,0x7fffffffb170)
34119 kbdcontrol RET ioctl 0
There is a visible effect of changing layout (like german.iso changes to
qwertz layout, fr.iso to azerty, and swedish.iso
There's some visible effect (like loading german.iso enables a qwertz
layout) but mostly characters render the same (swedish.iso).
swedish.iso enables the key right of P as 0xe5, the keys right of L as
0xf6 and 0xe4 - these seem to be the correct ASCII codes but none of
those are rendered. If you type these into xxd, the cursor doesn't even
move, but pressing ^D ^D you can see that something was typed.
If you do the same in vi, those characters don't render until you hit
enter a couple of times. For example, enable swedish.iso, type "p[" on
a US or UK keyboard, followed by <enter> <enter> and then you see "på"
which is correct, rendered properly in the default screen font.
So I think the initial problem is with configuration of the terminal.