On Mon, Sep 14, 2009 at 18:28:27 -0300, Rogério Brito wrote:
> OK, now that I just sent the workaround in the earlier message, I dug in
> a little further.
> 
> The problem seems to be related to the embedded awk script in the
> configure script of the package.
> 
> In its stock version, when fed with my x configuration file, it prints
> nothing.

I have an xorg.conf, and get this output from the script:
XKBMODEL="pc104"
layout_priority=medium
XKBLAYOUT="dvorak"

This is the relevant section of xorg.conf:
Section "InputDevice"
        Identifier "Generic Keyboard"
        Driver "kbd"
        Option "CoreKeyboard"
        Option "XkbRules" "xfree86"
        Option "XkbModel" "pc104"
        Option "XkbLayout" "dvorak"
EndSection


> When I change
> 
> ,----
> | bin {
> |     $0 = tolower($0);
> |     sub("#.*","")
> |     xkb = "";
> | }
> `----
...

I don't have any line starting with "bin".  I've attached the awk script
I see on my system (I copied the awk_expr literal to a new script and
executed 'echo "$awk_expr" > FILE').

> The script does not understand when the section containing the keyboard
> has finished and, thus, it also gets the settings for the mouse and
> interprets them as the settings for the keyboard also (which is not
> always the right thing).

I don't see this behaviour, despite also having a mouse InputDevice
section with options after the keyboard section.

-- Michael
{
    $0 = tolower($0);
    sub("#.*","")
    xkb = "";
}

/^[ \t]*section[ \t]+"inputdevice"/,/^[ \t]*endsection/ {
    if ($1 == "option") {
        if ($2 == "\"xkbmodel\"") {
            xkb = "XKBMODEL";
        } else if ($2 == "\"xkblayout\"") {
            xkb = "XKBLAYOUT";
            print "layout_priority=medium";
        } else if ($2 == "\"xkbvariant\"") {
            xkb = "XKBVARIANT";
        } else if ($2 == "\"xkboptions\"") {
            xkb = "XKBOPTIONS"; 
        }
        $1 = "";
        $2 = "";
    }
}

xkb != "" && /^[ \t]*\"[^"]+\"[ \t]*$/ {
    sub("^[ \t]*\"", "");
    sub("\".*", "");
    gsub("[ \t]", "");
    if ($1 !~ /[()]/) {
        print xkb "=\"" $0 "\"";
    } else {
        if (xkb == "XKBLAYOUT" && $1 ~ /^[^()]+\([^()]+\)$/) {
            split($1, s, /[()]/);
            print "XKBLAYOUT=" s[1];
            print "XKBVARIANT=" s[2];
        }
    }
}

Attachment: signature.asc
Description: Digital signature

Reply via email to