• You are not logged in.

    Colemak on OpenSolaris

    • Started by semihc
    • 10 Replies:
    • Reputation: 0
    • From: Australia
    • Registered: 16-Nov-2009
    • Posts: 6

    Dear Forum members,

    I'm trying to install Colemak keyboard layout on OpenSolaris as described by the Unix install page here: https://colemak.com/Unix

    OpenSolaris is a newer version of Solaris (10) designed to run on (Intel/AMD) x86 architecture but not confined to it. The OpenSolaris project page can be accessed from here:
    http://www.opensolaris.org

    When I try to install Colemak layout on OpenSolaris instance (v2009.06), I observed following errors:

    $ pwd
    /export/home/semihc/colemak-1.0
    # pfexec is similar to sudo
    $ pfexec cp xorg/colemak /usr/X11/share/X11/xkb/symbols/colemak
    # Ensuing errors seem to be coming from setxkbmap
    $ setxkbmap -v colemak && xset r 66
    Warning! Multiple definitions of keyboard layout
             Using command line, ignoring X server
    Trying to build keymap using the following components:
    keycodes:   xfree86+aliases(qwerty)
    types:      complete
    compat:     complete
    symbols:    pc/pc(pc105)+pc/colemak+sun/solaris(defaults)
    geometry:   pc(pc105)
    Error loading new keyboard description
    $

    After which keyboard layout stays on Qwerty. Any help to resolve this problem will be greatly appreciated.

    Regards,
    Semih

    Offline
    • 0
    • Reputation: 23
    • From: Belgium
    • Registered: 26-Feb-2008
    • Posts: 480

    The error indicates the file is not found.  Depending on your version of X11, you may instead have to copy xfree86/colemak to symbols/pc/colemak instead (different source and destination! - if symbols/pc is a dir rather than a file on your system).

    More recent versions of X.org (with xkeyboard-config instead of xkbdata) already include the Colemak layout, but as a variant of the US layout rather than a layout on its own, so in that case use "setxkbmap us(colemak)" instead, without installing any additional file.  You can check the symbols/us file to see whether it already includes Colemak.

    If none of these work, you should at least be able to use the xmodmap version?

    Online
    • 0
    • Reputation: 0
    • From: Australia
    • Registered: 16-Nov-2009
    • Posts: 6

    Hi,

    There is no "-version" flag but from man page I infer that xmodmap's version
    is 1.0.3

    I also truss'ed setxkbmap and the log file indicates that it first checks
    following file:
    ...
    open("/usr/X11/share/X11/xkb/rules/xorg", O_RDONLY) = 4
    ...

    The truss log is same regardless of colemak keyboard layout file is copied onto
    /usr/X11/share/X11/xkb/symbols directory. My guess is the "xorg" file is
    being checked by setxkbmap first. It may be necessary to modify this file
    before installing "colemak" file.

    Later on, I have noticed that I can switch to Colemak layout via:

    $ setxkbmap us; xmodmap xmodmap/xmodmap.colemak && xset r 66

    Then switch back to to US-Qwerty layout via:

    $ setxkbmap us; xset -r 66

    These two commands can be put into scripts and provide a workaround for the
    time being. It would be nice to have setxkbmap method working nevertheless.


    Regards,
    Semih Cemiloglu

    Offline
    • 0
    • Reputation: 23
    • From: Belgium
    • Registered: 26-Feb-2008
    • Posts: 480

    You shouldn't have to modify any other files, you just have to put the colemak layout file in the right place.  Tracing setxkbmap won't help find that location though, as it's not reading the layout file directly, only instructing the X server to do so.

    But have you checked whether your "symbols" directory has a "pc" subdir?  If so, according to your setxkbmap -v output, your X server is using those layouts instead.  Just put the xfree86 version of the colemak layout file there (the one that includes "pc/us(basic)" not "us(basic)").

    Once you have Colemak working with setxkbmap, you can easily switch between Qwerty and Colemak in a variety of ways.  I use eg.:
    setxkbmap -option 'grp:ctrls_toggle,grp_led:scroll' colemak,us
    to toggle layouts by pressing both Ctrl keys, with the Scroll lock led as a layout indicator.

    You can put all this in your system-wide X.org configuration file as well, in the keyboard InputDevice section.

    Online
    • 0
    • Reputation: 0
    • From: Australia
    • Registered: 16-Nov-2009
    • Posts: 6

    Hi,

    I did copy colemak file into symbols directory via:
    semihc@giant$ pfexec cp -p xfree86/colemak /usr/X11/share/X11/xkb/symbols/colemak

    The X11 log file contains a version indicator:
    from Xorg.log file
    ...
    SUNWxorg-server package version: 6.9.0.5.11.11100,REV=0.2009.05.07
    SUNWxorg-graphics-ddx package version: 6.9.0.5.11.11100,REV=0.2009.04.02
    SUNWxorg-mesa package version: 6.9.0.5.11.11100,REV=0.2009.04.02

    I also notice that every time I issue "setxkbmap colemak" command following entry is written into Xorg.log file:

    (EE) Error loading keymap /tmp/server-0.xkm


    Further experiments with setxkbmap yielded nothing:

    # This works
    semihc@giant:~$ setxkbmap -v us
    Warning! Multiple definitions of keyboard layout
             Using command line, ignoring X server
    Trying to build keymap using the following components:
    keycodes:   sun(type6_usb)+aliases(qwerty)
    types:      complete
    compat:     complete
    symbols:    sun/us(type6)+sun/solaris(defaults)+sun/solaris(defaults)
    geometry:   sun(type6)

    # Dvorak layout works
    semihc@giant:~$ setxkbmap -v dvorak
    Warning! Multiple definitions of keyboard layout
             Using command line, ignoring X server
    Trying to build keymap using the following components:
    keycodes:   sun(type6_usb)+aliases(qwerty)
    types:      complete
    compat:     complete
    symbols:    sun/us(type6)+dvorak(sundeadkeys)+sun/solaris(defaults)
    geometry:   sun(type6)
    semihc@giant:~$ setxkbmap -v us
    Warning! Multiple definitions of keyboard layout
             Using command line, ignoring X server
    Trying to build keymap using the following components:
    keycodes:   sun(type6_usb)+aliases(qwerty)
    types:      complete
    compat:     complete
    symbols:    sun/us(type6)+sun/solaris(defaults)+sun/solaris(defaults)
    geometry:   sun(type6)

    # Experimenting with -print flag
    semihc@giant:~$ setxkbmap -v colemak -print
    Warning! Multiple definitions of keyboard layout
             Using command line, ignoring X server
    Trying to build keymap using the following components:
    keycodes:   sun(type6_usb)+aliases(qwerty)
    types:      complete
    compat:     complete
    symbols:    sun/us(type6)+colemak(sundeadkeys)+sun/solaris(defaults)
    geometry:   sun(type6)
    xkb_keymap {
            xkb_keycodes  { include "sun(type6_usb)+aliases(qwerty)"        };
            xkb_types     { include "complete"      };
            xkb_compat    { include "complete"      };
            xkb_symbols   { include "sun/us(type6)+colemak(sundeadkeys)+sun/solaris(defaults)"      };
            xkb_geometry  { include "sun(type6)"    };
    };

    # This does NOT work
    semihc@giant:~/colemak-1.0$ setxkbmap -v colemak
    Warning! Multiple definitions of keyboard layout
             Using command line, ignoring X server
    Trying to build keymap using the following components:
    keycodes:   sun(type6_usb)+aliases(qwerty)
    types:      complete
    compat:     complete
    symbols:    sun/us(type6)+colemak(sundeadkeys)+sun/solaris(defaults)
    geometry:   sun(type6)
    Error loading new keyboard description
    semihc@giant:~/colemak-1.0$



    I'm not sure what X server expects to find.

    Regards,
    Semih

    Offline
    • 0
    • Reputation: 23
    • From: Belgium
    • Registered: 26-Feb-2008
    • Posts: 480

    Can you check whether you have more keymap files (us, dvorak, ... the ones that you can switch to) in subdirectories of /usr/X11/share/X11/xkb/symbols?
    ls /usr/X11/share/X11/xkb/symbols/*/dvorak

    Look specifically for a "pc" subdirectory, and put the xfree86/colemak file there.

    But note that you are using a different configuration now than in your initial post:

     $ setxkbmap -v colemak
     Warning! Multiple definitions of keyboard layout
              Using command line, ignoring X server
     Trying to build keymap using the following components:
    -keycodes:   xfree86+aliases(qwerty)
    +keycodes:   sun(type6_usb)+aliases(qwerty)
     types:      complete
     compat:     complete
    -symbols:    pc/pc(pc105)+pc/colemak+sun/solaris(defaults)
    -geometry:   pc(pc105)
    +symbols:    sun/us(type6)+colemak(sundeadkeys)+sun/solaris(defaults)
    +geometry:   sun(type6)
     Error loading new keyboard description
     $

    On an x86 PC style workstation you should use the former setup.

    Online
    • 0
    • Reputation: 0
    • From: Australia
    • Registered: 16-Nov-2009
    • Posts: 6

    Hi,

    In the first post, I was connecting to the OpenSolaris host from a Windows machine via Putty. Then I realized that I cannot even switch to Dvorak. Thus, I switched to Gnome desktop on which I can successfully use Dvorak, i.e., "setxkbmap dvorak". In the remaining posts I used Gnome desktop.

    Regarding Dvorak files:

    semihc@giant$ pwd
    /usr/X11/share/X11/xkb
    semihc@giant$ find . -name "dvorak" -exec ls -l  {} \;
    -r--r--r-- 1 root bin 585 2009-05-15 01:51 ./keymap/sgi/dvorak
    -r--r--r-- 1 root bin 15300 2009-05-15 01:51 ./symbols/pc/dvorak
    -r--r--r-- 1 root bin 15300 2009-05-15 01:51 ./symbols/dvorak

    # No difference in between these two:
    semihc@giant$ diff ./symbols/pc/dvorak ./symbols/dvorak

    semihc@giant$ cat symbols/dvorak

    // $XdotOrg: xc/programs/xkbcomp/symbols/dvorak,v 1.2 2004/04/23 19:54:52 eich Exp $
    // $Xorg: dvorak,v 1.3 2000/08/17 19:54:42 cpqbld Exp $

    // symbols definition for a very simple dvorak layout.
    // It has basically the alphanumeric keys, punctuation,
    // one shift key, one control key and caps lock. It
    // uses the punctuation keys configurations common on PC
    // keyboards (e.g. key <ABO9> is { [ period greater ] })

    // $XFree86: xc/programs/xkbcomp/symbols/dvorak,v 3.10 2003/08/08 06:27:09 dawes Exp $

    //
    // CDDL HEADER START
    //
    // The contents of this file are subject to the terms of the
    // Common Development and Distribution License (the "License").
    // You may not use this file except in compliance with the License.
    //
    // You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
    // or http://www.opensolaris.org/os/licensing.
    // See the License for the specific language governing permissions
    // and limitations under the License.
    //
    // When distributing Covered Code, include this CDDL HEADER in each
    // file and include the License file at src/OPENSOLARIS.LICENSE.
    // If applicable, add the following below this CDDL HEADER, with the
    // fields enclosed by brackets "[]" replaced with your own identifying
    // information: Portions Copyright [yyyy] [name of copyright owner]
    //
    // CDDL HEADER END
    //

    partial default alphanumeric_keys
    xkb_symbols "basic" {

        include "srvr_ctrl(xfree86)"

        name[Group1]= "Dvorak";
        key <ESC>  {    [ Escape            ]    };

        // Alphanumeric section
        key <TLDE> {    [       grave,    asciitilde    ],
                [  dead_grave,    dead_tilde    ]    };

        key <AE01> {    [        1,    exclam         ]    };
        key <AE02> {    [        2,    at        ]    };
        key <AE03> {    [        3,    numbersign    ]    };
        key <AE04> {    [        4,    dollar        ]    };
        key <AE05> {    [        5,    percent        ]    };
        key <AE06> {    [        6,    asciicircum    ],
                [ dead_circumflex, dead_circumflex ]    };
        key <AE07> {    [        7,    ampersand    ]    };
        key <AE08> {    [        8,    asterisk    ]    };
        key <AE09> {    [        9,    parenleft    ],
                [  dead_grave            ]    };
        key <AE10> {    [        0,    parenright    ]    };
        key <AE11> {    [ bracketleft,    braceleft    ]    };
        key <AE12> {    [ bracketright,    braceright    ],
                [  dead_tilde            ]    };
        key <BKSP> {
        type="CTRL+ALT",
        symbols[Group1]= [ BackSpace,    Terminate_Server ]
        };

        key  <TAB> {    [       Tab,    ISO_Left_Tab    ]    };
        key <AD01> {    [  apostrophe,    quotedbl    ],
                [  dead_acute,    dead_diaeresis    ]     };
        key <AD02> {    [    comma,    less        ],
                [ dead_cedilla,    dead_caron    ]    };
        key <AD03> {    [      period,    greater        ],
                [ dead_abovedot, periodcentered ]    };
        key <AD04> {    [        p,    P        ]    };
        key <AD05> {    [        y,    Y        ]    };
        key <AD06> {    [        f,    F        ]    };
        key <AD07> {    [        g,    G        ]    };
        key <AD08> {    [        c,    C        ]    };
        key <AD09> {    [        r,    R        ]    };
        key <AD10> {    [        l,    L        ]    };
        key <AD11> {    [    slash,    question    ]    };
        key <AD12> {    [    equal,    plus        ]    };
        key <RTRN> {    [ Return            ]    };

        key <CAPS> {    [    Caps_Lock        ]    };
        key <AC01> {    [        a,    A         ]    };
        key <AC02> {    [        o,    O        ]    };
        key <AC03> {    [        e,    E        ]    };
        key <AC04> {    [        u,    U        ]    };
        key <AC05> {    [        i,    I        ]    };
        key <AC06> {    [        d,    D        ]    };
        key <AC07> {    [        h,    H        ]    };
        key <AC08> {    [        t,    T        ]    };
        key <AC09> {    [        n,    N        ]    };
        key <AC10> {    [        s,    S        ]    };
        key <AC11> {    [    minus,    underscore    ]    };

        key <LFSH> {    [    Shift_L            ]    };
        key <AB01> {    [   semicolon,    colon         ],
                [ dead_ogonek, dead_doubleacute ]    };
        key <AB02> {    [        q,    Q        ]    };
        key <AB03> {    [        j,    J        ]    };
        key <AB04> {    [        k,    K        ]    };
        key <AB05> {    [        x,    X        ]    };
        key <AB06> {    [        b,    B        ]    };
        key <AB07> {    [        m,    M        ]    };
        key <AB08> {    [        w,    W        ]    };
        key <AB09> {    [        v,    V        ]    };
        key <AB10> {    [        z,    Z        ]    };
        key <BKSL> {    [   backslash,    bar        ]    };

        key <LCTL> {    [      Control_L        ]    };
        key <SPCE> {    [      space            ]    };
        // End alphanumeric section

        // begin modifier mappings
        modifier_map Shift  { Shift_L };
        modifier_map Lock   { Caps_Lock };
        modifier_map Control{ Control_L };
    };

    // Norwegian Dvorak
    partial alphanumeric_keys
    xkb_symbols "no" {
        include "dvorak(basic)"

        key <TLDE> {    [      bar,    section        ],
                [   brokenbar,     paragraph    ]    };

        key <AE01> {    [        1,    exclam         ],
                [  exclamdown,    onesuperior    ]    };
        key <AE02> {    [        2,    quotedbl    ],
                [       at,    twosuperior    ]    };
        key <AE03> {    [        3,    numbersign    ],
                [    sterling,    threesuperior    ]    };
        key <AE04> {    [        4,    dollar        ],
                [    currency,    onequarter    ]    };
        key <AE05> {    [        5,    percent        ],
                [     onehalf,    onehalf        ]    };
        key <AE06> {    [        6,    ampersand    ],
                [ threequarters, threequarters    ]    };
        key <AE07> {    [        7,    slash        ],
                [   braceleft,    division    ]    };
        key <AE08> {    [        8,    parenleft    ],
                [ bracketleft            ]    };
        key <AE09> {    [        9,    parenright    ],
                [ bracketright            ]    };
        key <AE10> {    [        0,    equal        ],
                [  braceright            ]    };
        key <AE11> {    [     plus,    question    ],
                [   plusminus,    questiondown    ]    };
        key <AE12> {    [   backslash,    grave        ],
                [  dead_acute,    dead_grave    ]    };

        key <AD01> {    [       aring,    Aring        ],
                [  braceright,    bracketright    ]    };
        key <AD02> {    [    comma,    semicolon    ],
                [ dead_cedilla,    cedilla        ]    };
        key <AD03> {    [      period,    colon        ],
                [ periodcentered        ]    };
        key <AD04> {    [        p,    P        ],
                [       thorn,    THORN        ]    };
        key <AD05> {    [        y,    Y        ],
                [         yen            ]    };
        key <AD06> {    [        f,    F        ],
                [ ordfeminine            ]    };
        key <AD08> {    [        c,    C        ],
                [    ccedilla,    copyright    ]    };
        key <AD09> {    [        r,    R        ],
                [  registered            ]    };
        key <AD11> {    [  apostrophe,    asterisk    ],
                [ dead_circumflex,    acute    ]    };
        key <AD12> {    [  asciitilde,    asciicircum    ],
                [ dead_diaeresis, dead_tilde    ]    };

        key <AC03> {    [        e,    E        ],
                [    EuroSign,    cent        ]    };
        key <AC05> {    [        i,    I        ],
                [    idotless,    Iabovedot    ]    };
        key <AC06> {    [        d,    D        ],
                [      eth,    ETH        ]    };
        key <AC10> {    [        s,    S        ],
                [      ssharp            ]    };
        key <AC11> {    [    minus,    underscore    ],
                [      hyphen,    diaeresis    ]    };

        key <AB01> {    [       ae,    AE         ],
                [   braceleft,    bracketleft    ]    };
        key <AB05> {    [        x,    X        ],
                [    multiply            ]    };
        key <AB07> {    [        m,    M        ],
                [       mu            ]    };
        key <BKSL> {    [     less,    greater        ],
                [ guillemotleft, guillemotright    ]    };

        key <SPCE> {    [     space,    space        ],
                [ nobreakspace,    nobreakspace    ]    };

        key <LSGT> {    [    oslash,    Ooblique    ],
                [       bar,    backslash    ]    };

    };

    // Swedish Dvorak
    partial alphanumeric_keys
    xkb_symbols "se" {
        include "dvorak(no)"

        key <TLDE> {    [     section,    onehalf        ]    };

        key <AE04> {    [        4,    currency    ],
                [      dollar,  onequarter    ]    };
        key <AE11> {    [        plus,    question    ],
                [   backslash,  questiondown    ]    };
        key <AE12> {    [  dead_acute,  dead_grave    ],
                [  backslash,    grave        ]    };

        key <AD01> {    [  odiaeresis,  Odiaeresis    ],
                [  braceright,  bracketright    ]    };
        key <AD02> {    [       aring,    Aring        ]    };
        key <AD03> {    [  adiaeresis,    Adiaeresis    ]    };
        key <AD11> {    [           q,    Q           ]    };
        key <AD12> {    [ dead_diaeresis, dead_circumflex],
                [ dead_tilde, asciicircum    ]    };

        key <AB01> {    [     comma,    semicolon    ],
                [ dead_cedilla, cedilla        ]    };
        key <AB02> {    [    period,    colon        ],
                [ periodcentered        ]    };

        key <BKSL> {    [      less,    greater        ],
                [       bar,    brokenbar    ]    };

        key <LSGT> {    [ apostrophe,   asterisk    ],
                [       bar,    backslash    ]    };

    };
    // Swedish Dvorak alias
    partial alphanumeric_keys
    xkb_symbols "sv" {
        include "dvorak(se)"
    };


    // Dvorak (UK) keymap (by odaen) allowing the usage of
    // the £ and ? key and swapping the @ and " keys.

    partial alphanumeric_keys
    xkb_symbols "gb" {
        include "dvorak(basic)"

        key <BKSL> {    [  numbersign,  asciitilde    ]    };
        key <AE02> {    [        2,  quotedbl    ],
                [ twosuperior,  NoSymbol    ]    };
        key <AE03> {    [        3,  sterling    ],
                [ threesuperior, NoSymbol    ]    };
        key <AE04> {    [        4,  dollar        ],
                [    EuroSign,  NoSymbol    ]    };
        key <LSGT> {    [   backslash,  bar        ]    };
        key <AD01> {    [  apostrophe,  at        ]    };
    };

    // Keymap Dvorak pour le Français
    // par Josselin Mouette <josselin.mouette@ens-lyon.org>.

    partial alphanumeric_keys modifier_keys
    xkb_symbols "fr" {

        include "dvorak(basic)"

        name[Group1]= "French dvorak";

        key <TLDE>  {       [              oe,              OE      ],
                            [              ae,              AE      ]       };
        key <AE01>  {       [           slash,               1      ],
                            [       ampersand,     onesuperior      ]       };
        key <AE02>  {       [            plus,               2      ],
                            [      asciitilde,     twosuperior      ]       };
        key <AE03>  {       [           minus,               3      ],
                            [      numbersign,   threesuperior      ]       };
        key <AE04>  {       [        asterisk,               4      ],
                            [            less,   guillemotleft      ]       };
        key <AE05>  {       [           equal,               5      ],
                            [         greater,  guillemotright      ]       };
        key <AE06>  {       [       backslash,               6      ],
                            [              at,         notsign      ]       };
        key <AE07>  {       [       parenleft,               7      ],
                            [ dead_circumflex,        multiply      ]       };
        key <AE08>  {       [           grave,               8      ],
                            [      dead_grave,        division      ]       };
        key <AE09>  {       [      parenright,               9      ],
                            [     asciicircum,       plusminus      ]       };
        key <AE10>  {       [        quotedbl,               0      ],
                            [  dead_diaeresis,  dead_diaeresis      ]       };
        key <AE11>  {       [     bracketleft,       braceleft      ],
                            [             bar,          degree      ]       };
        key <AE12>  {       [    bracketright,      braceright      ],
                            [         percent                       ]       };

        key <AD01>  {       [           colon,        question      ],
                            [        question,    questiondown      ]       };
        key <AD02>  {       [          agrave,          Agrave      ],
                            [           aring,           Aring      ]       };
        key <AD03>  {       [          eacute,          Eacute      ],
                            [        EuroSign,            cent      ]       };
        key <AD04>  {       [               g,               G      ],
                            [          oslash,        Ooblique      ]       };
        key <AD05>  {       [          period,          exclam      ],
                            [  periodcentered,      exclamdown      ]       };
        key <AD06>  {       [               h,               H      ],
                            [             eth,             ETH      ]       };
        key <AD07>  {       [               v,               V      ]       };
        key <AD08>  {       [               c,               C      ],
                            [       copyright,      registered      ]       };
        key <AD09>  {       [               m,               M      ],
                            [              mu,              mu      ]       };
        key <AD10>  {       [               k,               K      ],
                            [          dollar,          dollar      ]       };
        key <AD11>  {       [          egrave,          Egrave      ],
                            [        sterling,        sterling      ]       };
        key <AD12>  {       [               z,               Z      ],
                            [             yen                       ]       };

        key <AC01>  {       [               o,               O      ],
                            [     ocircumflex,     Ocircumflex      ]       };
        key <AC02>  {       [               a,               A      ],
                            [     acircumflex,     Acircumflex      ]       };
        key <AC03>  {       [               u,               U      ],
                            [     ucircumflex,     Ucircumflex      ]       };
        key <AC04>  {       [               e,               E      ],
                            [     ecircumflex,     Ecircumflex      ]       };
        key <AC05>  {       [               b,               B      ],
                            [          ssharp                       ]       };
        key <AC06>  {       [               f,               F      ]       };
        key <AC07>  {       [               s,               S      ]       };
        key <AC08>  {       [               t,               T      ],
                            [           thorn,           THORN      ]       };
        key <AC09>  {       [               n,               N      ],
                            [          ntilde,          Ntilde      ]       };
        key <AC10>  {       [               d,               D      ],
                            [         section                       ]       };
        key <AC11>  {       [               w,               W      ],
                            [       paragraph                       ]       };
        key <BKSL>  {       [          ugrave,          Ugrave      ],
                            [       masculine,     ordfeminine      ]       };

        key <LSGT>  {       [        ccedilla,        Ccedilla      ],
                            [        ccedilla,        Ccedilla      ]       };
        key <AB01>  {       [      apostrophe,      underscore      ],
                            [      dead_acute,          macron      ]       };
        key <AB02>  {       [               q,               Q      ],
                            [   guillemotleft,   guillemotleft      ]       };
        key <AB03>  {       [           comma,       semicolon      ],
                            [  guillemotright,  guillemotright      ]       };
        key <AB04>  {       [               i,               I      ],
                            [     icircumflex,     Icircumflex      ]       };
        key <AB05>  {       [               y,               Y      ],
                            [      ydiaeresis,      Ydiaeresis      ]       };
        key <AB06>  {       [               x,               X      ],
                            [      ediaeresis,      Ediaeresis      ]       };
        key <AB07>  {       [               r,               R      ],
                            [      udiaeresis,      Udiaeresis      ]       };
        key <AB08>  {       [               l,               L      ],
                            [      adiaeresis,      Adiaeresis      ]       };
        key <AB09>  {       [               p,               P      ],
                            [      odiaeresis,      Odiaeresis      ]       };
        key <AB10>  {       [               j,               J      ],
                            [      idiaeresis,      Idiaeresis      ]       };

        key <SPCE>  {       [           space,           space      ],
                            [    nobreakspace,    nobreakspace      ]       };
        key <RALT>  {       [     Mode_switch,       Multi_key      ]       };
    };

    partial alphanumeric_keys
    xkb_symbols "Sundeadkeys" {
            include "dvorak(basic)"
    };

    partial alphanumeric_keys
    xkb_symbols "sundeadkeys" {
            include "dvorak(Sundeadkeys)"
    };

    semihc@giant$ cat ./keymap/sgi/dvorak

    // $Xorg: dvorak,v 1.3 2000/08/17 19:54:40 cpqbld Exp $
    default xkb_keymap "indy" {
        xkb_keycodes    { include "sgi/indy(universal)"        };
        xkb_types        { include "default"            };
        xkb_compatibility    { include "default"            };
        xkb_symbols     { include "us(pc_universal)+dvorak"    };
        xkb_geometry    { include "sgi/indy(pc101)"        };
    };
    xkb_keymap "indigo" {
        xkb_keycodes    { include "sgi/indigo"        };
        xkb_types        { include "default"        };
        xkb_compatibility    { include "default"        };
        xkb_symbols     { include "us(pc101)+dvorak"    };
        xkb_geometry    { include "sgi/indigo(pc101)"    };
    };


    HTH, Regards,
    Semih

    Offline
    • 0
    • Reputation: 23
    • From: Belgium
    • Registered: 26-Feb-2008
    • Posts: 480

    But there is a difference between the two colemak files:

    --- xorg/colemak    2006-11-07 11:42:54.000000000 +0100
    +++ xfree86/colemak    2006-11-07 11:43:18.000000000 +0100
    @@ -1,9 +1,9 @@
    -// Colemak symbols for xkb on X.Org Server 7.x
    +// Colemak symbols for xkb on XFree86 and X.Org server 6.x (old)
     // 2006-01-01 Shai Coleman, https://colemak.com/ . Public domain.
     
     partial default alphanumeric_keys
     xkb_symbols "basic" {
    -    include "us(basic)"
    +    include "pc/us(basic)"
         name[Group1]= "Colemak";
     
         // Alphanumeric section

    The former should go into the "symbols" directory, the latter in the "symbols/pc" subdirectory.  Can you put each file in the proper location and try?

    (the Dvorak files don't differ because they don't include the US layout, they're coded from scratch.)

    Online
    • 0
    • Reputation: 0
    • From: Australia
    • Registered: 16-Nov-2009
    • Posts: 6

    Hi,

    I had done what you have suggested, here is the log:


    $ pfexec find /usr/X11/share/X11/xkb/symbols -name "colemak" -exec rm {} \;
    $ pfexec cp -p xorg/colemak /usr/X11/share/X11/xkb/symbols
    $ pfexec cp -p xfree86/colemak /usr/X11/share/X11/xkb/symbols/pc
    $ setxkbmap -v colemak
    Warning! Multiple definitions of keyboard layout
             Using command line, ignoring X server
    Trying to build keymap using the following components:
    keycodes:   sun(type6_usb)+aliases(qwerty)
    types:      complete
    compat:     complete
    symbols:    sun/us(type6)+colemak(sundeadkeys)+sun/solaris(defaults)
    geometry:   sun(type6)
    Error loading new keyboard description


    By looking to messages returned, I'm guessing setxkbmap is looking for sun-type6 keyboard definitions.
    After this point  I noticed that there exists "/usr/X11/share/X11/xkb/symbols/sun" directory,
    similar to "pc" directory.

    I copied colemak file there (sun subdirectory), still got the same error. I also tried to change the line
      include "pc/us(basic)"
    to
      include "sun/us(basic)"
    as well. I still got the same error.

    Following is the
    "us" file in "/usr/X11/share/X11/xkb/symbols/sun" directory:

    Regards,
    Semih

    // $XdotOrg: $
    //
    // Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
    //
    // Permission is hereby granted, free of charge, to any person obtaining a
    // copy of this software and associated documentation files (the
    // "Software"), to deal in the Software without restriction, including
    // without limitation the rights to use, copy, modify, merge, publish,
    // distribute, and/or sell copies of the Software, and to permit persons
    // to whom the Software is furnished to do so, provided that the above
    // copyright notice(s) and this permission notice appear in all copies of
    // the Software and that both the above copyright notice(s) and this
    // permission notice appear in supporting documentation.
    //
    // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
    // OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
    // HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
    // INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
    // FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
    // NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
    // WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
    //
    // Except as contained in this notice, the name of a copyright holder
    // shall not be used in advertising or otherwise to promote the sale, use
    // or other dealings in this Software without prior written authorization
    // of the copyright holder.
    //
    // $TOG: us /main/5 1998/02/10 13:45:06 kaleb $
    // Sun: @(#)us    1.5    03/04/21 SMI
    //
    //Copyright 1996, 1998  The Open Group
    //
    //All Rights Reserved.
    //
    //The above copyright notice and this permission notice shall be
    //included in all copies or substantial portions of the Software.
    //
    //THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
    //EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    //MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
    //IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
    //OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
    //ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
    //OTHER DEALINGS IN THE SOFTWARE.
    //
    //Except as contained in this notice, the name of The Open Group shall
    //not be used in advertising or otherwise to promote the sale, use or
    //other dealings in this Software without prior written authorization
    //from The Open Group.
    //

    //
    // CDDL HEADER START
    //
    // The contents of this file are subject to the terms of the
    // Common Development and Distribution License (the "License").
    // You may not use this file except in compliance with the License.
    //
    // You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
    // or http://www.opensolaris.org/os/licensing.
    // See the License for the specific language governing permissions
    // and limitations under the License.
    //
    // When distributing Covered Code, include this CDDL HEADER in each
    // file and include the License file at src/OPENSOLARIS.LICENSE.
    // If applicable, add the following below this CDDL HEADER, with the
    // fields enclosed by brackets "[]" replaced with your own identifying
    // information: Portions Copyright [yyyy] [name of copyright owner]
    //
    // CDDL HEADER END
    //


    // Symbols shared by all Sun Keyboard layouts
    xkb_symbols "sunbasic" {
        include "srvr_ctrl(xfree86)"
        include "srvr_ctrl(stdkeypad)"
        include "us(basic)"

        key <RTSH> { [ Shift_R        ]            };
        key <LALT> { [ Alt_L        ]            };
        key <ALGR> { [ Mode_switch        ]            };
        key <LMTA> { [ Meta_L        ]            };
        key <RMTA> { [ Meta_R        ]            };
        key <RCTL> { [ Control_R        ]            };
        key <COMP> { [ Multi_key        ]            };
        // End alphanumeric section

        // Begin "Function" section
        key <FK01> { [ F1            ]            };
        key <FK02> { [ F2            ]            };
        key <FK03> { [ F3            ]            };
        key <FK04> { [ F4            ]            };
        key <FK05> { [ F5            ]            };
        key <FK06> { [ F6            ]            };
        key <FK07> { [ F7            ]            };
        key <FK08> { [ F8            ]            };
        key <FK09> { [ F9            ]            };
        key <FK10> { [ F10            ]            };
        key <FK11> { [ SunF36        ]            };
        key <FK12> { [ SunF37        ]            };
        key <STOP> { [ L1,    L1        ], [ SunStop    ]    };
        key <AGAI> { [ L2,    L2        ], [ SunAgain    ]    };
        key <PROP> { [ L3,    L3        ], [ SunProps    ]    };
        key <UNDO> { [ L4,    L4        ], [ SunUndo    ]    };
        key <FRNT> { [ L5,    L5        ], [ SunFront    ]    };
        key <COPY> { [ L6,    L6        ], [ SunCopy    ]    };
        key <OPEN> { [ L7,    L7        ], [ SunOpen    ]    };
        key <PAST> { [ L8,    L8        ], [ SunPaste    ]    };
        key <FIND> { [ L9,    L9        ], [ SunFind    ]    };
        key <CUT>  { [ L10,    L10        ], [ SunCut    ]    };
        // End "Function" section

        // Begin "Editing" section
        key <DELE> { [ Delete        ]            };
        key <HELP> { [ Help            ]            };

        // End "Editing" section, begin "Keypad"

        key <NMLK> {    [  Num_Lock, Pointer_EnableKeys        ]    };

        // This default section uses the same symbols as other XKB implementations
        // for greater compatibility & AccessX MouseKeys support, but it is
        // different than the traditional Sun key mappings that date back to the
        // Sun Type 2 keyboard, in which the right side numpad were "R" function
        // keys.  To restore the original behavior, comment out this section and
        // uncomment the section below that lists the R key mappings.
        key <KPDV> {    [  KP_Divide        ]    };
        key <KPMU> {    [  KP_Multiply        ]    };
        key <KPSU> {    [  KP_Subtract        ]    };

        key  <KP7> {    [  KP_Home,    KP_7    ]    };
        key  <KP8> {    [  KP_Up,    KP_8    ]    };
        key  <KP9> {    [  KP_Prior,    KP_9    ]    };
        key <KPAD> {    [      KP_Add        ]    };

        key  <KP4> {    [  KP_Left,    KP_4    ]    };
        key  <KP5> {    [  KP_Begin,    KP_5    ]    };
        key  <KP6> {    [  KP_Right,    KP_6    ]    };

        key  <KP1> {    [  KP_End,    KP_1    ]    };
        key  <KP2> {    [  KP_Down,    KP_2    ]    };
        key  <KP3> {    [  KP_Next,    KP_3    ]    };
        key <KPEN> {    [      KP_Enter    ]    };

        key  <KP0> {    [  KP_Insert,    KP_0    ]    };
        key <KPDL> {  [  KP_Delete,    KP_Decimal ]    };

    // End New Keypad section - Begin Sun traditional Keypad section

    //    key  <KP7> { [ R7,    R7        ], [ KP_7, Home        ] };
    //    key  <KP8> { [ Up, R8               ], [ KP_8               ] };
    //    key  <KP9> { [ R9,    R9        ], [ KP_9, Prior    ] };
    //    key <KPAD> { [ KP_Add        ]            };
    //
    //    key  <KP4> { [ Left, R10        ], [ KP_4        ] };
    //    key  <KP5> { [ R11,    R11        ], [ KP_5        ] };
    //    key  <KP6> { [ Right, R12        ], [ KP_6        ] };
    //
    //    key  <KP1> { [ R13,    R13        ], [ KP_1,    End    ] };
    //    key  <KP2> { [ Down, R14        ], [ KP_2        ] };
    //    key  <KP3> { [ R15,    R15        ], [ KP_3,    Next    ] };
    //    key <KPEN> { [ KP_Enter        ]            };
    //    key  <KP0> { [ KP_Insert, KP_Insert], [ KP_0        ]    };
    //    key <KPDL> { [ Delete, Delete    ], [ KP_Decimal ]    };

        // End "Keypad" section

        modifier_map Control{ Control_R };

    };

    // US/ASCII layout for a Type 4 Sun keyboard
    xkb_symbols "type4basic" {
        include "sun/us(sunbasic)"

        // A few alphanumeric keys are different
        key <AE04> { [ 4, dollar        ], [ EuroSign    ]    };
        key <AE05> { [ 5, percent        ], [ EuroSign    ]    };
        key <AD03> { [ e, E            ], [ EuroSign    ]    };

        key <LNFD> { [ Linefeed        ]            };

        // Begin "Editing" section
        key <PRSC> { [ R2,    R2        ], [ Print        ] };
        key <SCLK> { [ R3,    R3        ], [ Scroll_Lock, Break    ] };
        key <PAUS> { [ R1,    R1        ], [ Pause        ] };

        // End "Editing" section, begin "Keypad"
        key <KPEQ> { [ R4,    KP_Equal    ], [ KP_Equal        ] };

        // begin modifier mappings
        modifier_map Shift      { Shift_R, Shift_L };
        modifier_map Mod1       { Meta_L, Meta_R };
        modifier_map Mod2           { Num_Lock };
        modifier_map Mod3       { Mode_switch };
        modifier_map Mod4        { Alt_L };

    };

    xkb_symbols "type4" {
        include "sun/us(type4basic)"

        key <BKSL> { [ backslash, bar    ], [ brokenbar    ]    };
    };

    // US/ASCII layout for a Type 5 Sun keyboard
    xkb_symbols "type5basic" {
        include "sun/us(sunbasic)"

        // Begin "Editing" section
        key <PRSC> { [ R2, R2         ], [ Print, SunSys_Req    ]    };
        key <SCLK> { [ R3, R3        ], [ Scroll_Lock    ]    };
        key <PAUS> { [ R1, R1        ], [ Pause, Break    ]    };

        key <LEFT> { [ Left            ]            };
        key <RGHT> { [ Right        ]            };
        key <UP>   { [ Up            ]            };
        key <DOWN> { [ Down            ]            };

        key <DELE> { [ Delete        ]            };
        key <INS>  { [ Insert        ]            };
        key <PGUP> { [ Prior        ]            };
        key <PGDN> { [ Next            ]            };
        key <HOME> { [ Home            ]            };
        key <END>  { [ End            ]            };
        key <HELP> { [ Help            ]            };

        // End "Editing" section

        // begin "four keys up on the right"
        key <MUTE> { [ SunAudioMute,    SunVideoDegauss        ]    };
        key <VOL-> { [ SunAudioLowerVolume,    SunVideoLowerBrightness ]    };
        key <VOL+> { [ SunAudioRaiseVolume,    SunVideoRaiseBrightness    ]    };
        key <POWR> { [ SunPowerSwitch,    SunPowerSwitchShift    ]    };

        // begin modifier mappings
        modifier_map Shift          { Shift_R, Shift_L };
        modifier_map Mod1           { Alt_L };
        modifier_map Mod2           { Num_Lock };
        modifier_map Mod3           { Alt_R, Mode_switch };
        modifier_map Mod4           { Meta_L, Meta_R };
    };

    xkb_symbols "type5" {
        include "sun/us(type5basic)"

        // A few alphanumeric keys are different
        key <AE04> { [ 4, dollar        ], [ EuroSign    ]    };
        key <AE05> { [ 5, percent        ], [ EuroSign    ]    };
        key <AD03> { [ e, E            ], [ EuroSign    ]    };
        key <BKSL> { [ backslash, bar    ], [ brokenbar    ]    };
    };

    xkb_symbols "type6" {
        include "sun/us(type5)"
    };


    // US/ASCII layout for a Type 5 Sun keyboard
    xkb_symbols "type5hobobasic" {
        include "sun/us(type5basic)"
    };

    xkb_symbols "type5hobo" {
        include "sun/us(type5hobobasic)"

        // A few alphanumeric keys are different
        key <AE04> { [ 4, dollar        ], [ EuroSign     ]    };
        key <AE05> { [ 5, percent        ], [ EuroSign    ]    };
        key <AD03> { [ e, E            ], [ EuroSign    ]    };
        key <BKSL> { [ backslash, bar    ], [ brokenbar    ]    };

        // Here is the hobo keypad:

        key <AE07> { [ 7, ampersand    ], [ NoSymbol, NoSymbol    ], [ KP_7    ] };
        key <AE08> { [ 8, asterisk    ], [ NoSymbol, NoSymbol    ], [ KP_8    ] };
        key <AE09> { [ 9, parenleft    ], [ NoSymbol, NoSymbol    ], [ KP_9    ] };
        key <AE10> { [ 0, parenright], [ NoSymbol, NoSymbol    ], [ KP_Multiply] };

        key <AD07> { [ u, U        ], [ NoSymbol, NoSymbol    ], [ KP_4    ] };
        key <AD08> { [ i, I        ], [ NoSymbol, NoSymbol    ], [ KP_5    ] };
        key <AD09> { [ o, O        ], [ NoSymbol, NoSymbol    ], [ KP_6    ] };
        key <AD10> { [ p, P        ], [ NoSymbol, NoSymbol    ], [ KP_Subtract]};

        key <AC07> { [ j, J        ], [ NoSymbol, NoSymbol    ], [ KP_1    ] };
        key <AC08> { [ k, K        ], [ NoSymbol, NoSymbol    ], [ KP_2    ] };
        key <AC09> { [ l, L        ], [ NoSymbol, NoSymbol    ], [ KP_3    ] };
        key <AC10> { [ semicolon, colon], [ NoSymbol, NoSymbol], [ KP_Add    ] };

        key <RTRN> { [ Return    ], [ NoSymbol, NoSymbol], [ KP_Enter    ] };

        key <AB07> { [ m, M        ], [ NoSymbol, NoSymbol    ], [ KP_0    ] };

        key <AB09> { [ period, greater], [ NoSymbol, NoSymbol], [ KP_Decimal] };
        key <AB10> { [ slash, question], [ NoSymbol, NoSymbol], [ KP_Divide    ] };

    };

    xkb_symbols "pc101" {
        include "us(pc101)"
        key <RALT> { [ Mode_switch, Meta_R    ] };
    };

    xkb_symbols "pc102" {
        include "us(pc102)"
        key <RALT> { [ Mode_switch, Meta_R    ] };
    };

    xkb_symbols "pc104" {
        include "us(pc104)"
    };

    xkb_symbols "pc101currency" {

        key <AE04> { [ 4, dollar        ], [ EuroSign    ]    };
        key <AE05> { [ 5, percent        ], [ EuroSign    ]    };
        key <AD03> { [ e, E            ], [ EuroSign    ]    };
        key <BKSL> { [ backslash, bar    ], [ brokenbar            ]};
    };

    xkb_symbols "US101A_Sun" {

        key <AE04> { [ 4, dollar        ], [ EuroSign    ]    };
        key <AE05> { [ 5, percent        ], [ EuroSign    ]    };
        key <AD03> { [ e, E            ], [ EuroSign    ]    };
        key <BKSL> { [ backslash, bar    ], [ brokenbar            ]};

        // Begin "Editing" section
        key <PRSC> { [ L5, L5        ], [ Print, SunSys_Req         ]};
        key <SCLK> { [ L7, L7        ], [  Scroll_Lock        ]};
        key <PAUS> { [ L1, L1        ], [ Pause, Break         ]};
        key  <INS> { [ L8, L8        ], [  Insert            ]};
        key <HOME> { [ L6, L6        ], [  Home            ]};
        key <PGUP> { [ L3, L3        ], [  Prior            ]};


        key <DELE> { [ L10, L10        ], [ Delete            ]};
        key  <END> { [ L9, L9        ], [  End            ]};
        key <PGDN> { [ L4, L4        ], [  Next            ]};

        key   <UP> {    [  Up            ]    };
        key <LEFT> {    [  Left            ]    };
        key <DOWN> {    [  Down            ]    };
        key <RGHT> {    [  Right        ]    };

        key <KPDV> { [ R5, R5        ], [ KP_Divide    ]    };
        key <KPMU> { [ R6, R6        ], [ KP_Multiply    ]    };

        key  <KP7> { [ R7, KP_7        ], [ KP_7, Home        ]    };
        key  <KP8> { [ KP_Up, KP_8        ], [ KP_8        ]    };
        key  <KP9> { [ R9, KP_9        ], [ KP_9, Prior    ]    };
        key <KPAD> { [ KP_Add        ]                };

        key  <KP4> { [ KP_Left, KP_4    ], [ KP_4        ]    };
        key  <KP5> { [ R11,    KP_5        ], [ KP_5        ]    };
        key  <KP6> { [ KP_Right, KP_6    ], [ KP_6        ]    };

        key  <KP1> { [ R13,    KP_1        ], [ KP_1, End        ]    };
        key  <KP2> { [ KP_Down, KP_2    ], [ KP_2        ]    };
        key  <KP3> { [ R15,    KP_3        ], [ KP_3, Next        ]    };
        key <KPEN> { [ KP_Enter        ]                };

        key <LALT> { [ Meta_L        ]                };
        key <RALT> { [ Alt_L        ]                };
        key <RCTL> { [ Multi_key        ]                };
    };

    Offline
    • 0
    • Reputation: 23
    • From: Belgium
    • Registered: 26-Feb-2008
    • Posts: 480
     $ setxkbmap -v colemak
     Warning! Multiple definitions of keyboard layout
              Using command line, ignoring X server
     Trying to build keymap using the following components:
    -keycodes:   xfree86+aliases(qwerty)
    +keycodes:   sun(type6_usb)+aliases(qwerty)
     types:      complete
     compat:     complete
    -symbols:    pc/pc(pc105)+pc/colemak+sun/solaris(defaults)
    -geometry:   pc(pc105)
    +symbols:    sun/us(type6)+colemak(sundeadkeys)+sun/solaris(defaults)
    +geometry:   sun(type6)
     Error loading new keyboard description
     $

    Note that you're trying to load a layout variant called "sundeadkeys", which doesn't exist for colemak.  Could you try loading the "basic" variant (usually implied) explicitly:

    setxkbmap colemak basic

    If that still fails, could you try to go back to your initial pc/pc105 configuration?  I'm not sure colemak is compatible with the sun/type6 geometry spec.  (we could try to make it so, but let's try to get it work first.)

    Online
    • 0
    • Reputation: 0
    • From: Australia
    • Registered: 16-Nov-2009
    • Posts: 6

    Unfortunately I still get the same errors:


    # From xterm connected remotely via putty:
    semihc@giant$ setxkbmap -v colemak basic
    Warning! Multiple definitions of keyboard layout
             Using command line, ignoring X server
    Trying to build keymap using the following components:
    keycodes:   xfree86+aliases(qwerty)
    types:      complete
    compat:     complete
    symbols:    pc/pc(pc105)+pc/colemak(basic)+sun/solaris(defaults)
    geometry:   pc(pc105)
    Error loading new keyboard description

    # From GNOME desktop xterm:
    semihc@giant$ setxkbmap -v colemak basic
    Error loading new keyboard description
    Warning! Multiple definitions of keyboard layout
             Using command line, ignoring X server
    Trying to build keymap using the following components:
    keycodes:   sun(type6_usb)+aliases(qwerty)
    types:      complete
    compat:     complete
    symbols:    sun/us(type6)+colemak(sundeadkeys)+sun/solaris(defaults)
    geometry:   sun(type6)

    Regards,
    Semih

    Offline
    • 0