• You are not logged in.
  • Index
  • General
  • Programmer symbols layout (like arensito)

    Programmer symbols layout (like arensito)

    • Started by Cyborg16
    • 8 Replies:
    • Reputation: 0
    • Registered: 05-Jun-2009
    • Posts: 8

    I'd previously been using dvorak, then tried colemak and looked at a few other layouts like arensito.. briefly, I decided to use colemak plus make my own third-level layout like arensito for programming symbols. I've not noticed many threads on this (one here: https://forum.colemak.com:80/viewtopic.php?id=387), so here's what I designed, which I've been using for several months now and find very good.

    Here is my current version, with international keys added (but optimised for programming). The blocks from left to right correspond to normal, shift, alt, shift+alt levels. Some of the international symbols are actually dead-keys applied to u or c.

     `1234567890-=    ¬!@£$%^&*()_+    ù¡ü¥€¤ûū·ŭ°─±    ‘’“”¢ųǔ÷×ưů↓↑
      qwfpgjluy;[]     QWFPGJLUY:{}     <{*& \|/}>     Æ ×·  °÷ Œ←→
      arstdhneio'#     ARSTDHNEIO"~     [(+=~:!-)]úũ     æ®ß™   ─ œüű
     \zcxvbkm,./        |ZXCVBKM<>?    |`'ç$  #ç"¿    ¦  ©   µ«»

    This was a modification on an older version (without international symbols). These were the original third-level (alt) layouts I came up with (I tried the left one but not the right one):

     < { / | \   & * } >           < { ( [     ] ) } >
     [ ( - = _ : ~ + ) ]           & + * = _   ~ / - |
     ` ' ! $     # ? "               ` ! $     # ? \

    I use AltGr to access the third-level; initially I found frequently using my thumb in this position uncomfortable, but after getting used to it it's been fine. On some keyboards with extra-long space bars this isn't comfortable though. Shifting the whole keyboard up a row like arensito I tried but didn't like.

    My idea was that I wanted brackets to be easy to use and symmetric, and the most common symbols available. You might notice the lack of ;, ,, 0-9, etc., but these are easy to access anyway and I don't type in a lot of numbers.

    If people are interested, I might give a more detailed rational of how I came to this layout, but at any rate I've found it reasonably easy to learn and fairly optimal for many keyboard uses.
    I find it very good for: typing (in English), programming in C/C++/D/Java
    I have found it a little lacking for typing a lot in foreign languages due to having to use dead-keys, but I'm not sure this problem is easily addressible in general. I've also found the absense of $ on the third-level slightly annoying for bash programming, which I might rectify at some point.

    Offline
    • 0
    • Reputation: 0
    • Registered: 05-Jun-2009
    • Posts: 8

    Not sure how to add attachments here, so here's my xkb file (configuration for linux). Put this in /usr/share/X11/xkb/symbols/cyborg16 (I use this name so it doesn't conflict with any shipped layout files), then set the layout using this command, or similar methods:

    setxkbmap -layout cyborg16,cyborg16 -variant colemak,basic -option -option grp:sclk_toggle,grp_led:caps,compose:menu

    This allows switching between colemak and qwerty layouts by pressing the scroll-lock key and indicates which is active with the caps-lock light (my laptop doesn't have a scroll-lock light and caps-lock won't work anyway, if colemak is the first layout).

    There's also a dvorak version, and a version with the right-hand shifted one key to the right, in order to make AltGr more comfortable to press (which kindof worked, but it is really confusing to switch between this and an ordinary keyboard layout). Note that they're also designed for a GB keyboard, but with @ above the 2 like on a US keyboard (a personal preference).

    I don't have configuration for windows/mac/etc., but maybe if other people like this colemak extension someone could have a go!

    Comments appreciated (please email if I don't respond).

    // $XKeyboardConfig: xkeyboard-config/symbols/progsyms 2008-10-15 svu Exp $
    
    // Difficulty to reach (under index finger: 1 - 8)
    // 1 2 3 4 5 6 7 8 9 0 - =
    // 4 2 2 2 5 8 4 2 2 4 6
    // 3 2 2 1 3 5 1 2 2 3 7
    // 6 3 3 3 6 5 4 4 4 8
    // no.   (of which are pairs, possibly with a lower valued key)
    // 1: 2  (1)  ( 1+0)
    // 2: 9  (4)  ( 5+1)
    // 3: 6  (1)  ( 6+5)
    // 4: 6  (5)  (11+1)
    // 5: 3  (1)  (12+2)
    // 6: 3  (0)  (12+5)
    // 7: 1  (0)  (12+6)
    // 8: 2  (2)  (14+4)
    
    // International plus programming keys (higher emphasis on progamming) The
    // brackets and common operators, and more useful dead keys, are on the third
    // level. Keys (with colemak layout, dead keys applied to u or c):
    
    // `1234567890-=    ¬!@£$%^&*()_+    ù¡ü¥€¤ûū·ŭ°─±    ‘’“”¢ųǔ÷×ưů↓↑
    //  qwfpgjluy;[]     QWFPGJLUY:{}     <{*& \|/}>     Æ ×·  °÷ Œ←→
    //  arstdhneio'#     ARSTDHNEIO"~     [(+=~:!-)]úũ     æ®ß™   ─ œüű
    // \zcxvbkm,./        |ZXCVBKM<>?    |`'ç$  #ç"¿    ¦  ©   µ«»
    
    partial alphanumeric_keys
    xkb_symbols "prog_intl" {
        name[Group1]="3rd-level symbols for programmers";
        
        key <TLDE> { [     NoSymbol,     NoSymbol,      dead_grave,       leftsinglequotemark    ] };
        key <AE01> { [     NoSymbol,     NoSymbol,      exclamdown,       rightsinglequotemark    ] };
        key <AE02> { [     NoSymbol,     NoSymbol,  dead_diaeresis,       leftdoublequotemark    ] };
        key <AE03> { [     NoSymbol,     NoSymbol,             yen,       rightdoublequotemark    ] };
        key <AE04> { [     NoSymbol,     NoSymbol,        EuroSign,       cent    ] };
        key <AE05> { [     NoSymbol,     NoSymbol,        currency,       dead_ogonek    ] };
        key <AE06> { [     NoSymbol,     NoSymbol, dead_circumflex,       dead_caron    ] };
        key <AE07> { [     NoSymbol,     NoSymbol,     dead_macron,       division    ] };
        key <AE08> { [     NoSymbol,     NoSymbol,  periodcentered,       multiply    ] };
        key <AE09> { [     NoSymbol,     NoSymbol,      dead_breve,       dead_horn    ] };
        key <AE10> { [     NoSymbol,     NoSymbol,          degree,       dead_abovering    ] };
        key <AE11> { [     NoSymbol,     NoSymbol,       0x1002212,       downarrow    ] };
        key <AE12> { [     NoSymbol,     NoSymbol,       plusminus,       uparrow    ] };
        
        key <AD01> { [     NoSymbol,     NoSymbol,            less,       AE    ] };
        key <AD02> { [     NoSymbol,     NoSymbol,       braceleft,       NoSymbol    ] };
        key <AD03> { [     NoSymbol,     NoSymbol,        asterisk,       multiply    ] };
        key <AD04> { [     NoSymbol,     NoSymbol,       ampersand,       periodcentered    ] };
        key <AD05> { [     NoSymbol,     NoSymbol,        NoSymbol,       NoSymbol    ] };
        key <AD06> { [     NoSymbol,     NoSymbol,       backslash,       NoSymbol    ] };
        key <AD07> { [     NoSymbol,     NoSymbol,             bar,       degree    ] };
        key <AD08> { [     NoSymbol,     NoSymbol,           slash,       division    ] };
        key <AD09> { [     NoSymbol,     NoSymbol,      braceright,       NoSymbol    ] };
        key <AD10> { [     NoSymbol,     NoSymbol,         greater,       OE    ] };
        key <AD11> { [     NoSymbol,     NoSymbol,        NoSymbol,       leftarrow    ] };
        key <AD12> { [     NoSymbol,     NoSymbol,        NoSymbol,       rightarrow    ] };
        
        key <AC01> { [     NoSymbol,     NoSymbol,     bracketleft,       ae    ] };
        key <AC02> { [     NoSymbol,     NoSymbol,       parenleft,       registered    ] };
        key <AC03> { [     NoSymbol,     NoSymbol,            plus,       ssharp    ] };
        key <AC04> { [     NoSymbol,     NoSymbol,           equal,       trademark] };
        key <AC05> { [     NoSymbol,     NoSymbol,      asciitilde,       NoSymbol ] };
        key <AC06> { [     NoSymbol,     NoSymbol,           colon,       NoSymbol ] };
        key <AC07> { [     NoSymbol,     NoSymbol,          exclam,       0x1002212    ] };
        key <AC08> { [     NoSymbol,     NoSymbol,           minus,       0x1002212    ] };
        key <AC09> { [     NoSymbol,     NoSymbol,      parenright,       NoSymbol ] };
        key <AC10> { [     NoSymbol,     NoSymbol,    bracketright,       oe    ] };
        key <AC11> { [     NoSymbol,     NoSymbol,      dead_acute,       dead_diaeresis    ] };
        key <BKSL> { [     NoSymbol,     NoSymbol,      dead_tilde,       dead_doubleacute    ] };
        
        key <AB01> { [     NoSymbol,     NoSymbol,           grave,       NoSymbol    ] };
        key <AB02> { [     NoSymbol,     NoSymbol,      apostrophe,       NoSymbol    ] };
        key <AB03> { [     NoSymbol,     NoSymbol,        ccedilla,       copyright    ] };
        key <AB04> { [     NoSymbol,     NoSymbol,          dollar,       NoSymbol ] };
        key <AB07> { [     NoSymbol,     NoSymbol,      numbersign,       mu    ] };
        key <AB08> { [     NoSymbol,     NoSymbol,    dead_cedilla,       guillemotleft    ] };
        key <AB09> { [     NoSymbol,     NoSymbol,        quotedbl,       guillemotright    ] };
    };
    
    // Older version of above (not quite the same; no international keys).
    // Adds third-level symbols:    // Alternative (not implemented):
    // < { / | \   & * } >          // < { ( [     ] ) } >
    // [ ( - = _ : ~ + ) ]          // & + * = _   ~ / - |
    // ` ' ! $     # ? "            //   ` ! $     # ? \ 
    partial alphanumeric_keys
    xkb_symbols "progsyms" {
        name[Group1]="3rd-level symbols for programmers";
        
        key <AD01> { [     NoSymbol,     NoSymbol,            less,       NoSymbol ] };
        key <AD02> { [     NoSymbol,     NoSymbol,       braceleft,       NoSymbol ] };
        key <AD03> { [     NoSymbol,     NoSymbol,           slash,       NoSymbol ] };
        key <AD04> { [     NoSymbol,     NoSymbol,             bar,       NoSymbol ] };
        key <AD05> { [     NoSymbol,     NoSymbol,       backslash,       NoSymbol ] };
        key <AD06> { [     NoSymbol,     NoSymbol,        NoSymbol,       NoSymbol ] };
        key <AD07> { [     NoSymbol,     NoSymbol,       ampersand,       NoSymbol ] };
        key <AD08> { [     NoSymbol,     NoSymbol,        asterisk,       NoSymbol ] };
        key <AD09> { [     NoSymbol,     NoSymbol,      braceright,       NoSymbol ] };
        key <AD10> { [     NoSymbol,     NoSymbol,         greater,       NoSymbol ] };
        
        key <AC01> { [     NoSymbol,     NoSymbol,     bracketleft,       NoSymbol ] };
        key <AC02> { [     NoSymbol,     NoSymbol,       parenleft,       NoSymbol ] };
        key <AC03> { [     NoSymbol,     NoSymbol,           minus,       NoSymbol ] };
        key <AC04> { [     NoSymbol,     NoSymbol,           equal,       NoSymbol ] };
        key <AC05> { [     NoSymbol,     NoSymbol,      underscore,       NoSymbol ] };
        key <AC06> { [     NoSymbol,     NoSymbol,           colon,       NoSymbol ] };
        key <AC07> { [     NoSymbol,     NoSymbol,      asciitilde,       NoSymbol ] };
        key <AC08> { [     NoSymbol,     NoSymbol,            plus,       NoSymbol ] };
        key <AC09> { [     NoSymbol,     NoSymbol,      parenright,       NoSymbol ] };
        key <AC10> { [     NoSymbol,     NoSymbol,    bracketright,       NoSymbol ] };
        
        key <AB01> { [     NoSymbol,     NoSymbol,           grave,       NoSymbol ] };
        key <AB02> { [     NoSymbol,     NoSymbol,      apostrophe,       NoSymbol ] };
        key <AB03> { [     NoSymbol,     NoSymbol,          exclam,       NoSymbol ] };
        key <AB04> { [     NoSymbol,     NoSymbol,          dollar,       NoSymbol ] };
        key <AB07> { [     NoSymbol,     NoSymbol,      numbersign,       NoSymbol ] };
        key <AB08> { [     NoSymbol,     NoSymbol,        question,       NoSymbol ] };
        key <AB09> { [     NoSymbol,     NoSymbol,        quotedbl,       NoSymbol ] };
    };
    
    
    // All the following were stolen from gb, with at and quotedbl swapped.
    
    partial alphanumeric_keys
    xkb_symbols "colemak" {
        include "us(colemak)"
        include "cyborg16(prog_intl)"
        name[Group1]="United Kingdom - Colemak and progsyms";
        
        key <AE02>  { [         2,         at ] };
        key <AE03>  { [         3,   sterling ] };
        key <AE04>  { [         4,     dollar, EuroSign ] };
        
        key <AC11>  { [apostrophe,   quotedbl ] };
        key <TLDE>  { [     grave,    notsign ] };
        
        key <BKSL>  { [numbersign, asciitilde ] };
        key <LSGT>  { [ backslash,        bar,          bar,    brokenbar ] };
    
        key <CAPS> { [    BackSpace,    BackSpace,       BackSpace,        BackSpace ] };
        
        include "level3(ralt_switch_multikey)"
    };
    
    partial alphanumeric_keys
    xkb_symbols "dvorak" {
        include "us(dvorak)"
        include "cyborg16(prog_intl)"
        
        name[Group1]="United Kingdom - Dvorak and progsyms";
        
        key <AE02>  { [         2,         at ] };
        key <AE03>  { [         3,   sterling ] };
        key <AE04>  { [         4,     dollar, EuroSign ] };
        
        key <AD01> { [ apostrophe,  quotedbl        ] };
        
        key <TLDE>  { [     grave,    notsign ] };
        
        key <BKSL>  { [numbersign, asciitilde ] };
        key <LSGT>  { [ backslash,        bar,          bar,    brokenbar ] };
        
        include "level3(ralt_switch_multikey)"
    };
    
    partial default alphanumeric_keys
    xkb_symbols "basic" {
        include "cyborg16(prog_intl)"
        include "latin"
        
        name[Group1]="United Kingdom - with progsyms";
        
        key <AE02>  { [         2,         at ] };
        key <AE03>  { [         3,   sterling ] };
        key <AE04>  { [         4,     dollar, EuroSign ] };
        
        key <AC11>  { [apostrophe,   quotedbl ] };
        key <TLDE>  { [     grave,    notsign ] };
        
        key <BKSL>  { [numbersign, asciitilde ] };
        key <LSGT>  { [ backslash,        bar,          bar,    brokenbar ] };
        
        include "level3(ralt_switch_multikey)"
    };
    
    
    // These have the right hand shifted one key right, in an attempt to make the
    // thumb alt key easier to press. It turned out not to be a good idea though..
    
    partial alphanumeric_keys
    xkb_symbols "progsyms_shift" {
        name[Group1]="3rd-level symbols for programmers shifted";
        
        key <AD01> { [     NoSymbol,     NoSymbol,            less,       NoSymbol ] };
        key <AD02> { [     NoSymbol,     NoSymbol,       braceleft,       NoSymbol ] };
        key <AD03> { [     NoSymbol,     NoSymbol,           slash,       NoSymbol ] };
        key <AD04> { [     NoSymbol,     NoSymbol,             bar,       NoSymbol ] };
        key <AD05> { [     NoSymbol,     NoSymbol,       backslash,       NoSymbol ] };
        key <AD06> { [     NoSymbol,     NoSymbol,        NoSymbol,       NoSymbol ] };
        key <AD07> { [     NoSymbol,     NoSymbol,        NoSymbol,       NoSymbol ] };
        key <AD08> { [     NoSymbol,     NoSymbol,       ampersand,       NoSymbol ] };
        key <AD09> { [     NoSymbol,     NoSymbol,        asterisk,       NoSymbol ] };
        key <AD10> { [     NoSymbol,     NoSymbol,      braceright,       NoSymbol ] };
        key <AD11> { [     NoSymbol,     NoSymbol,         greater,       NoSymbol ] };
        
        key <AC01> { [     NoSymbol,     NoSymbol,     bracketleft,       NoSymbol ] };
        key <AC02> { [     NoSymbol,     NoSymbol,       parenleft,       NoSymbol ] };
        key <AC03> { [     NoSymbol,     NoSymbol,           minus,       NoSymbol ] };
        key <AC04> { [     NoSymbol,     NoSymbol,           equal,       NoSymbol ] };
        key <AC05> { [     NoSymbol,     NoSymbol,      underscore,       NoSymbol ] };
        key <AC06> { [     NoSymbol,     NoSymbol,        NoSymbol,       NoSymbol ] };
        key <AC07> { [     NoSymbol,     NoSymbol,           colon,       NoSymbol ] };
        key <AC08> { [     NoSymbol,     NoSymbol,      asciitilde,       NoSymbol ] };
        key <AC09> { [     NoSymbol,     NoSymbol,            plus,       NoSymbol ] };
        key <AC10> { [     NoSymbol,     NoSymbol,      parenright,       NoSymbol ] };
        key <AC11> { [     NoSymbol,     NoSymbol,    bracketright,       NoSymbol ] };
        
        key <AB01> { [     NoSymbol,     NoSymbol,           grave,       NoSymbol ] };
        key <AB02> { [     NoSymbol,     NoSymbol,      apostrophe,       NoSymbol ] };
        key <AB03> { [     NoSymbol,     NoSymbol,          exclam,       NoSymbol ] };
        key <AB04> { [     NoSymbol,     NoSymbol,          dollar,       NoSymbol ] };
        key <AB05> { [     NoSymbol,     NoSymbol,        NoSymbol,       NoSymbol ] };
        key <AB06> { [     NoSymbol,     NoSymbol,        NoSymbol,       NoSymbol ] };
        key <AB07> { [     NoSymbol,     NoSymbol,        NoSymbol,       NoSymbol ] };
        key <AB08> { [     NoSymbol,     NoSymbol,      numbersign,       NoSymbol ] };
        key <AB09> { [     NoSymbol,     NoSymbol,        question,       NoSymbol ] };
        key <AB10> { [     NoSymbol,     NoSymbol,        quotedbl,       NoSymbol ] };
    };
    
    
    // All the following were stolen from gb, with at and quotedbl swapped.
    
    partial alphanumeric_keys
    xkb_symbols "gbcolemak_shift" {
        include "us"
        include "cyborg16(progsyms_shift)"
        name[Group1]="United Kingdom - Colemak shifted";
        
        // Alphanumeric section
        key <TLDE> { [     grave,    notsign,          bar,          bar ] };
        key <AE01> { [            1,       exclam,      exclamdown,      onesuperior ] };
        key <AE02> { [         2,         at,  twosuperior,    oneeighth ] };
        key <AE03> { [         3,   sterling, threesuperior,    sterling ] };
        key <AE04> { [         4,     dollar,     EuroSign,   onequarter ] };
        key <AE05> { [            5,      percent,        EuroSign,              yen ] };
        key <AE06> { [            6,  asciicircum,         hstroke,          Hstroke ] };
        key <AE07> { [            7,    ampersand,             eth,              ETH ] };
        key <AE08> { [            8,     asterisk,           thorn,            THORN ] };
        key <AE09> { [            9,    parenleft,  leftsinglequotemark,  leftdoublequotemark ] };
        key <AE10> { [            0,   parenright, rightsinglequotemark,  rightdoublequotemark ] };
        key <AE11> { [        minus,   underscore,          endash,           emdash ] };
        key <AE12> { [        equal,         plus,        multiply,         division ] };
        
        key <AD01> { [            q,            Q,      adiaeresis,       Adiaeresis ] };
        key <AD02> { [            w,            W,           aring,            Aring ] };
        key <AD03> { [            f,            F,          atilde,           Atilde ] };
        key <AD04> { [            p,            P,          oslash,         Ooblique ] };
        key <AD05> { [            g,            G,     dead_ogonek,       asciitilde ] };
        key <AD06> { [numbersign, asciitilde,   dead_grave,   dead_breve ] };
        key <AD07> { [            j,            J,         dstroke,          Dstroke ] };
        key <AD08> { [            l,            L,         lstroke,          Lstroke ] };
        key <AD09> { [            u,            U,          uacute,           Uacute ] };
        key <AD10> { [            y,            Y,      udiaeresis,       Udiaeresis ] };
        key <AD11> { [    semicolon,        colon,      odiaeresis,       Odiaeresis ] };
        key <AD12> { [        slash,     question,    questiondown,       asciitilde ] };
        
        key <AC01> { [            a,            A,          aacute,           Aacute ] };
        key <AC02> { [            r,            R,      dead_grave,       asciitilde ] };
        key <AC03> { [            s,            S,          ssharp,       asciitilde ] };
        key <AC04> { [            t,            T,      dead_acute, dead_doubleacute ] };
        key <AC05> { [            d,            D,  dead_diaeresis,       asciitilde ] };
        key <AC06> { [  bracketleft,    braceleft,   guillemotleft,        0x1002039 ] };
        key <AC07> { [            h,            H,      dead_caron,       asciitilde ] };
        key <AC08> { [            n,            N,          ntilde,           Ntilde ] };
        key <AC09> { [            e,            E,          eacute,           Eacute ] };
        key <AC10> { [            i,            I,          iacute,           Iacute ] };
        key <AC11> { [            o,            O,          oacute,           Oacute ] };
        key <BKSL> { [apostrophe,   quotedbl, dead_circumflex, dead_caron] };
        
        key <LSGT> { [ backslash,        bar,          bar,    brokenbar ] };
        key <AB01> { [            z,            Z,              ae,               AE ] };
        key <AB02> { [            x,            X, dead_circumflex,       asciitilde ] };
        key <AB03> { [            c,            C,        ccedilla,         Ccedilla ] };
        key <AB04> { [            v,            V,              oe,               OE ] };
        key <AB05> { [            b,            B,      dead_breve,       asciitilde ] };
        key <AB06> { [ bracketright,   braceright,  guillemotright,        0x100203a ] };
        key <AB07> { [            k,            K,  dead_abovering,       asciitilde ] };
        key <AB08> { [            m,            M,     dead_macron,       asciitilde ] };
        key <AB09> { [        comma,         less,    dead_cedilla,       asciitilde ] };
        key <AB10> { [       period,      greater,   dead_abovedot,       asciitilde ] };
        
        key <CAPS> { [    BackSpace,    BackSpace,       BackSpace,        BackSpace ] };
        key <SPCE> { [        space,        space,           space,     nobreakspace ] };
        
        include "level3(ralt_switch)"
    };
    partial alphanumeric_keys
    xkb_symbols "colemak_shift" {
        include "cyborg16(gbcolemak_shift)"
        include "cyborg16(progsyms_shift)"
        name[Group1]="United Kingdom - Colemak and progsyms shifted";
        
        key <BKSL> { [apostrophe,   quotedbl, dead_circumflex, dead_caron] };
        
        include "level3(ralt_switch_multikey)"
    };
    Last edited by Cyborg16 (05-Jun-2009 15:07:34)
    Offline
    • 0
    • Reputation: 0
    • Registered: 17-Mar-2008
    • Posts: 192

    Mine looks like this these days:

      $ { } \   1 + [ ]
    @ * : / "   0 = ( ) ; !
      ~ | & #   _ - < >

    It's mainly been used for C++ and Python. It's been stable for a goodly while now, and I haven't found any major flaws.

    A big difference between my layout and yours is is that I keep related symbols on the same side. I prefer this since I use two different keys to activate it for left and right (like shift), which means alternating between the two sides is uncomfortable.

    Offline
    • 0
    • Reputation: 0
    • Registered: 08-Mar-2008
    • Posts: 303

    I used to use

    9 7 5 3 % $ 2 4 6 8
    / = * 1 \ _ 0 : ; #
    < > ^ + | @ [ ] { }

    I find this layout very easy to remember. All the math-related keys are on the left. However, I don't use this layout anymore. I found that it took too long to press an extra key, and I think it's easier to just reach to a key that's farther away than to press a special button. This layout was certainly more comfortable, but it was a lot slower.

    Offline
    • 0
    • Reputation: 0
    • Registered: 17-Mar-2008
    • Posts: 192

    I find this layout very easy to remember. All the math-related keys are on the left. However, I don't use this layout anymore. I found that it took too long to press an extra key, and I think it's easier to just reach to a key that's farther away than to press a special button. This layout was certainly more comfortable, but it was a lot slower.

    When left in their Qwerty/Colemak position, most (but not all) of the symbols used in my layout require a shift and reaching out. Most of the remaining ones require a reach.

    In my AltGr layout, in essence I still require the shift, but I no longer need to reach. Basically, I've either taken away a reach or traded a reach for a shift.

    Not having to reach makes it easier to touch type without having to look at the keys. But the real clincher is that if you place the symbols carefully you'll often get to type a run of a few keys which amortises the cost of the shift. Just a few examples of this would be:

    ->
    ();
    [0]
    = 0;
    /* */

    My subjective feeling is that for code this layout has bought me at as much if not more comfort and speed than switching to Colemak. If you're not a coder, I don't think that I'd bother with anything like this.

    Last edited by tomlu (07-Jun-2009 08:35:27)
    Offline
    • 0
    • Reputation: 210
    • From: Viken, Norway
    • Registered: 13-Dec-2006
    • Posts: 5,343
    tomlu said:

    I use two different keys to activate it for left and right (like shift), which means alternating between the two sides is uncomfortable.

    So, closing BBCode and HTML tags isn't too nice with your layout? Maybe you don't need those much? Or do you find it easy enough to let go of the shift keys to produce slashes? I guess that's no problem... but then why have slashes in your layout at all (apart from the nice ':/' roll)?

    I think I'd rather have the fourth set of brackets on the number row than on the other hand, myself. The least used one, of course.

    Last edited by DreymaR (08-Jun-2009 13:24:48)

    *** Learn Colemak in 2–5 steps with Tarmak! ***
    *** Check out my Big Bag of Keyboard Tricks for Win/Linux/TMK... ***

    Offline
    • 0
    • Reputation: 0
    • Registered: 27-Apr-2008
    • Posts: 166
    tomlu said:

    My subjective feeling is that for code this layout has bought me at as much if not more comfort and speed than switching to Colemak. If you're not a coder, I don't think that I'd bother with anything like this.

    Actually, I'm not a coder and I think everyone can benefit from using an AltGr layout. The problem I've got now is that since switching to Linux I'm back to the horrible reaching for the number row to access symbols.

    Surely someone must know an easy way to remap /? and \| to become AltGr on Linux???

    "It is an undoubted truth, that the less one has to do, the less time one finds to do it in." - Earl of Chesterfield

    Offline
    • 0
    • Reputation: 0
    • Registered: 05-Jun-2009
    • Posts: 8
    tomlu said:

    A big difference between my layout and yours is is that I keep related symbols on the same side. I prefer this since I use two different keys to activate it for left and right (like shift), which means alternating between the two sides is uncomfortable.

    I went for symmetry over grouping by side, so things like [], /* */, () are also very easy, with the one provision that I have both hands on the keyboard when typing symbols on the left side (since I only use the AltGr key for this, leaving Alt usable for standard shortcuts). Interesting that you included 0 and 1 in the layout though; I discounted numbers on the grounds of not being so useful and taking up a lot of space (and being easy to reach anyway), but I guess your layout does make combinations like [0] easier.

    simonh, try looking at xmodmap; I'm pretty sure it should be possible to make those additional AltGr keys.

    /> and /] aren't quite rolls with my layout but they work.. they certainly weren't taken into consideration when designing the layout though. Some of these were prioritised though:

    ==
    !=
    := (makefiles)
    ~= (array concatenation in D)
    /*  */

    I guess these are a few of the things my layout could be improved for then:

    [/  />
    #
    \'  \"
    x[1] = x[0];

    I was also thinking of putting ä, ö & ü on the forth-level since AltGr+2, a is tedious (purely because I've started learning German; any language-specific additions are probably going to be biased unfortunately).

    Offline
    • 0
    • Reputation: 0
    • Registered: 08-Mar-2008
    • Posts: 303
    tomlu said:

    My subjective feeling is that for code this layout has bought me at as much if not more comfort and speed than switching to Colemak. If you're not a coder, I don't think that I'd bother with anything like this.

    They are definitely comfortable, but I find them to be far too slow to be really effective.

    Offline
    • 0
      • Index
      • General
      • Programmer symbols layout (like arensito)