[arch-dev-public] [signoff] kbd-1.15.1

Allan McRae allan at archlinux.org
Sun Nov 15 19:24:44 EST 2009


Roman Kyrylych wrote:
> On Wed, Oct 14, 2009 at 12:10, Roman Kyrylych <roman.kyrylych at gmail.com> wrote:
>> On Wed, Oct 14, 2009 at 12:20, Allan McRae <allan at archlinux.org> wrote:
>>> Roman Kyrylych wrote:
>>>> On Wed, Oct 14, 2009 at 12:05, Roman Kyrylych <roman.kyrylych at gmail.com>
>>>> wrote:
>>>>> On Wed, Oct 14, 2009 at 06:29, Allan McRae <allan at archlinux.org> wrote:
>>>>>>  sudo /bin/loadkeys -q -u us
>>>>>> Password:
>>>>>> KDSKBENT: Invalid argument
>>>>>> failed to bind key 6 to value 61604
>>>>>> KDSKBENT: Invalid argument
>>>>>> failed to bind key 46 to value 61602
>>>>>> KDSKBDIACRUC: Invalid argument
>>>>>>
>>>>>> The 1.15 version of kbd works fine.
>>>>>>
>>>>> I'll investigate this.
>>>>> Did anyone experience a similar issue?
>>>>>
>>>> The keymap was not changed, but there were numerous changes in the parser.
>>>> Do you use UTF-8 locale?
>>> /etc/rc.conf:
>>> LOCALE="en_AU.UTF-8"
>>> KEYMAP="us"
>> I cannot reproduce the problem. :-/
> 
> Okay, found the reason.
>>From http://bugs.gentoo.org/289265 :
> "kbd 1.15 used to temporarily set the kbd_mode to unicode with loadkeys -u. kbd
> 1.15.1 doesn't. Changing the init script to run kbd_mode before loadkeys gets
> rid of the errors."
> 
> But in our rc.sysinit there is this code:
> if echo "$LOCALE" | /bin/grep -qi utf ; then
>         stat_busy "Setting Consoles to UTF-8 mode"
>         # UTF-8 consoles are default since 2.6.24 kernel
>         # this code is needed not only for older kernels,
>         # but also when user has set vt.default_utf8=0 but LOCALE is *.UTF-8.
>         for i in /dev/tty[0-9]*; do
>                 /usr/bin/kbd_mode -u < ${i}
>                 printf "\033%%G" > ${i}
>         done
>         # the $CONSOLE check helps us avoid this when running scripts from cron
>         echo 'if [ "$CONSOLE" = "" -a "$TERM" = "linux" -a -t 1 ];
> then printf "\033%%G"; fi' >>/etc/profile.d/locale.sh
>         stat_done
>         [ -n "$KEYMAP" ] && status "Loading Keyboard Map: $KEYMAP"
> /bin/loadkeys -q -u $KEYMAP
> else
>         stat_busy "Setting Consoles to legacy mode"
>         # make non-UTF-8 consoles work on 2.6.24 and newer kernels
>         for i in /dev/tty[0-9]*; do
>                 /usr/bin/kbd_mode -a < ${i}
>                 printf "\033%%@" > ${i}
>         done
>         # the $CONSOLE check helps us avoid this when running scripts from cron
>         echo 'if [ "$CONSOLE" = "" -a "$TERM" = "linux" -a -t 1 ];
> then printf "\033%%@"; fi' >>/etc/profile.d/locale.sh
>         stat_done
>         [ -n "$KEYMAP" ] && status "Loading Keyboard Map: $KEYMAP"
> /bin/loadkeys -q $KEYMAP
> fi
> 
> So it looks like the problem should not happen on Arch
> when you have 'utf' (case insensitive) in your LOCALE.
> 
> To Allan and everyone who have the "KDSKBENT: Invalid argument" issue:
> * does your system says 'Setting Consoles to UTF-8 mode' during boot?
> * what does the output of `kbd_mode` runned from a tty says?

I get the UTF-8 message during boot and kbd_mode says the keyboards is 
in UTF-8 mode.

But something has chnaged since I last looked at this.  I no longer get 
the KDSKBENT message, just

 > sudo /bin/loadkeys -q -u us
KDSKBDIACRUC: Invalid argument

I have no idea what changed... (new initscripts?)

Allan


More information about the arch-dev-public mailing list