• You are not logged in.

    A Programmer's Colemak Layout, with full theory and experimentation.

    • Started by Akiva
    • 18 Replies:
    • Reputation: 2
    • From: Leafland
    • Registered: 17-Sep-2013
    • Posts: 32

    Some time ago I made this thread:

    https://forum.colemak.com/topic/2138-a- … k-welcome/

    Well after a year of playing with it, I have published my results on a stackexchange post, in which I detail out just about all the theory and experiments I have had with my radical ideas. Take a read if you are interested. One of the most interesting experiments was reversing ( ) to ) (

    http://stackoverflow.com/a/43695677/2158002

    I have just switched again to this layout (Mentioned in the post):

    Sqo8B.png

    Would love some feedback, questions, and suggestions if you have any.

    Thanks!

    Offline
    • 1
    • Reputation: 117
    • From: UK
    • Registered: 14-Apr-2014
    • Posts: 978
    Akiva said:

    I have just switched again to this layout (Mentioned in the post):

    https://i.stack.imgur.com/Sqo8B.png

    Would love some feedback, questions, and suggestions if you have any.

    Thanks!


    Hmm, this is interesting, what you seem to have got is something that provides symbols, navigation keys, and virtual numeric keypad, using the four main layers. I definitely think it's better with numpad being in the usual pattern, rather than the reversed version. This does cause the navigation keys to be on the left though, which for some reason feels wrong - but I'm not sure why I think that, since games use WASD (WARS) all the time.

    Wondering why you didn't go down the route of using DreymaR's Extend layer? This also has the benefit of making easier cut/copy/paste, reducing the need to relocate control. I also a fan of DreymaR's "Extend+space" for Return, but I can see why O might be a reasonable choice.

    Regarding reversal of brackets, to me it's a non-issue as most programmer's editors will auto-fill in the closing bracket for you.

    Your left shift is in the normal place but your right shift has moved to the apostrophe key? Isn't it weird for them to be assymetrical? I think Shift is so important that it belongs as a thumb key. I am currently using AltGr as my Shift key, and I don't use either of the pinky-shifts any more. I am probably even more anti-pinky for modifiers than you!

    Last edited by stevep99 (29-Apr-2017 19:05:21)

    Using Colemak-DH with Seniply.

    Offline
    • 0
    • Reputation: 2
    • From: Leafland
    • Registered: 17-Sep-2013
    • Posts: 32

    This does cause the navigation keys to be on the left though, which for some reason feels wrong

    It really does on the left hand, and I think it is due to the fact that the layer above homerow is shifted in the wrong direction. I'm going to give it a week and see if it still awful, and then I am going to experiment with:

    a=left
    r=right
    s=up
    t=down

    If I do not like that, then I might think of doing a numlock mod where numbers and directional keys are on the right. The other solution would be to get a proper matrix grid keyboard but I am afraid thinkpad users would be out of luck with that.

    Wondering why you didn't go down the route of using DreymaR's Extend layer? This also has the benefit of making easier cut/copy/paste, reducing the need to relocate control. I also a fan of DreymaR's "Extend+space" for Return,

    I never ended up looking at them; horrible I know. Sell them to me; why should I use them?

    but I can see why O might be a reasonable choice.

    O is a mighty choice.

    Your left shift is in the normal place but your right shift has moved to the apostrophe key? Isn't it weird for them to be assymetrical?

    Day two, not weird at all, I already am used to it and absolutely love it, to the point where I am going to consider swapping shift and capslock(backspace). I try not using apostrophes much in the first place, because contractions such as "isn't" and "don't" are not proper in formal english. It's easy enough to find anyways since it is just shifted one over anyway.

    I think Shift is so important that it belongs as a thumb key. I am currently using AltGr as my Shift key

    Wow, I must ask then if you get any thumb pains at all? I honestly think my spacebar is too big, and am considering getting a japanese keyboard which condenses it so my thumbs would not have to curl in so much. I honestly do get pains with my keyboard, but a few dollars can rectify that.

    Offline
    • 0
    • Reputation: 117
    • From: UK
    • Registered: 14-Apr-2014
    • Posts: 978

    Extend: Well DreymaR can probably sell it better, but as I am a total convert, I will try:

    What I like is that it gives you all the most common non-character functions on one layer. It means, you can have the navigation on the right-hand side, in the natural position (UNEI), plus the associated paging functions etc as you already have in your AltGr layer. But, on the left hand side, you can also define cut/copy/paste on XCV. Since Extend is better position than Control, this drastically reduces the need to access that key. I also define Extend-A for select all and Extend-F for find.

    Then, and for me this bit is ingenious: By setting Extend-S to Shift and Extend-T to Ctrl, you can use these keys in combination with the arrow keys. So, to select the previous word you could do Extend-S-T-N. Then if you want to move that word, still holding Extend, it's X to cut, UNEI to move to the new position, and V to paste. Proper word editing without ever leaving the home position, and no need to access Shift or Control keys at any point!

    I have my Extend key defined on LeftAlt, which I access with my thumb, but others use CapsLock.

    I don't have any problems with AltGr, but then my keyboard has sensibly placed Alt keys.  Definitely a keyboard with accessible thumb keys is a boon.

    Also, if you want to make AltGr more accessible, you could always also consider the Wide Mod. This would probably suit you quite well, as you are happy to move lots of stuff around.

    Last edited by stevep99 (30-Apr-2017 15:38:10)

    Using Colemak-DH with Seniply.

    Offline
    • 0
    • Reputation: 2
    • From: Leafland
    • Registered: 17-Sep-2013
    • Posts: 32

    A Wide mod would be excellent, however the thinkpad trackpoint does not move, unfortunately.

    I am definitely having trouble with wads, but only in slight middle finger strain. I have a good solution though. VI is actually ←↑↓→  I think I will do that, and place home and end on wf, and escape on q.

    Lately I have been thinking whether it possible to turn the spacebar into an altgr, with the idea that a press and hold will turn it into a modifier key. Sounds tough though to implement.

    Offline
    • 0
    • Reputation: 214
    • From: Viken, Norway
    • Registered: 13-Dec-2006
    • Posts: 5,364

    It's amazing how much work some people do without doing a little research. ;-)

    I'm selling Extend at great length in the Extend Extra Extreme topic. Have a gander please.

    Since Space is by far the most common character typed, I advocate against trying to dual-role that key. As mentioned, I use it as Enter in my Extend layer (reserving O for Backspace). But that's okay since it doesn't interfere with normal typing in any way.

        Extend-ANSI-NoWi-Linux_90d.png?raw=1

    Last edited by DreymaR (02-May-2017 09:06:30)

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

    Offline
    • 0
    • Reputation: 2
    • From: Leafland
    • Registered: 17-Sep-2013
    • Posts: 32

    It's amazing how much work some people do without doing a little research. ;-)

    Horrid I know.

    Definitely a lot there I plan to take from, and might actually eliminate my need for putting navigation on the left hand if the numpad can be delegated to the extended layer (Although I still have one more experiment I will be trying). Thanks for all your work on this, and hopefully I can help with documentation.

    Two short questions (Before I delve into the modifier key madness)

    • XKB is incapable as far as I know with implementing key combos. Is this true, and if yes, how are you achieving the extended cut copy and past (plus others)? Is it delegating ext as a control modifier simultaneously?
    • Is extended considered as Level 5?

    Also an interesting prospect I am bouncing around in my head. With the abandonment of Unity by ubuntu, there is a good chance that I will be making it on the team which sees to the project's completion (Yunit). The input boxes need to be programmed, and if I could get my hands on it, there are a lot of prospects in terms of keyboard shortcuts and macros (Vim's find functionality for example would be amazing) that could be embedded into the system...


    This does cause the navigation keys to be on the left though, which for some reason feels wrong

    Quick update: HomeRow control keys also suck. Now I am experimenting with:

    s=left
    t=right
    p=up
    c=down

    So far, this feels really good.

    Offline
    • 0
    • Reputation: 214
    • From: Viken, Norway
    • Registered: 13-Dec-2006
    • Posts: 5,364

    Yes, I've implemented Extend as level5–8 key mappings. The Caps–Extend modifier is a level5 shift key (a switch modifier, in xkb terms).

    Not sure what you mean by key combos, but the Extend-modifiers work. The exception to this is if chords get too fat (e.g., the tetrachord Ext+S+T+N), in which case it may fail. Trichords seem entirely unproblematic on the whole.

    If you mean ligatures/strings by "key combos", then indeed that's not easy. But Undo/Cut/Copy/Paste are all just modified key strokes. I started out with the multimedia Undo/Cut/Copy/Paste keys, but those are poorly implemented in most apps so now I just send Ctrl+Z/X/C/V which works well.

    I use an arrow cross for navigation, which is what gamers prefer on the whole. It also lends itself to useful positions for Home/End which are very useful keys for a vimmer outside Vim. Adding PgDn/Up and Back/Del on the sides and homerow modifiers on the other hand makes the nav block very powerful. So that's good. ;-)

    Last edited by DreymaR (04-May-2017 14:21:23)

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

    Offline
    • 0
    • Reputation: 2
    • From: Leafland
    • Registered: 17-Sep-2013
    • Posts: 32

    Yes, I've implemented Extend as level5–8 key mappings. The Caps–Extend modifier is a level5 shift key (a switch modifier, in xkb terms).

    Fascinating, you must have spent quite a bit, neck deep in documentation.

    As for key combos, I am most curious how you are achieving

    ctrl + shift + left

    pressing just two keys.

    As for what I am using now, I am curious whether it is possible to alter shift so that, when pressed alone, it acts as a BackSpace, but when held and used to press another key, it acts as a key modifier (And after release, will not perform backspace).

    Any clue on the feasibility of that idea?

    Last edited by Akiva (05-May-2017 00:03:00)
    Offline
    • 0
    • Reputation: 214
    • From: Viken, Norway
    • Registered: 13-Dec-2006
    • Posts: 5,364

    To press Ctrl+Shift+Left, I'll press Caps+S+T+N which is a higher number of keys! But more convenient to me as they're all on the home position (except Caps, technically).

    However, it's possible to map a given key press to any modified key so Ctrl+Shift+Left could be sent by a single key if so desired! My symbols/extend file is full of such arcane incantations. Beware ye who enter.

    Dual-role keys aren't easy with XKB, albeit popular in other implementations. But you could map level1 of a key to a key press (BackSpace) and higher levels to other key presses such as Shift or Level5_switch or what-have-you. However, usually that's not very convenient. stevep99 had a topic a little back about using the Space key to double as AltGr, and some interesting insights came out of that but it quickly gets involved (Shift+Space would ideally be AltGr – but what about the Shift state then?). :-)

    Last edited by DreymaR (05-May-2017 12:10:10)

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

    Offline
    • 0
    • Reputation: 117
    • From: UK
    • Registered: 14-Apr-2014
    • Posts: 978
    DreymaR said:

    stevep99 had a topic a little back about using the Space key to double as AltGr, and some interesting insights came out of that but it quickly gets involved (Shift+Space would ideally be AltGr – but what about the Shift state then?). :-)

    The idea there was to define the AltGr key to be Shift (using right thumb), and then:

    1. press thumb Shift  -> hold Space -> release Shift : tapping any key gives layer 3.
    2. hold thumb Shift -> hold Space : tapping any key gives layer 4.

    Normal space function unaffected.

    It works, but it's not as nice as having a split-space keyboard.

    Last edited by stevep99 (06-May-2017 15:22:08)

    Using Colemak-DH with Seniply.

    Offline
    • 0
    • Reputation: 2
    • From: Leafland
    • Registered: 17-Sep-2013
    • Posts: 32

    However, it's possible to map a given key press to any modified key so Ctrl+Shift+Left could be sent by a single key if so desired! My symbols/extend file is full of such arcane incantations. Beware ye who enter.

    I should look at that right away.

    Dual-role keys aren't easy with XKB, albeit popular in other implementations. But you could map level1 of a key to a key press (BackSpace) and higher levels to other key presses such as Shift or Level5_switch or what-have-you.

    I see, like a step modifier. Might be interesting for a finger roll keyboard... geepers... just think how far you could go with that...

    Anyway, when you say not easy, would you even know where to start?


    It works, but it's not as nice as having a split-space keyboard.

    I'm thinking I will be going with japanese keyboards until thinkpad gets a grid based layout:New-Laptop-keyboard-for-Lenovo-ThinkPad-X230-X230i-X230t-T530-T530i-T430-T430i-T430s-T430si-L430.jpg

    Offline
    • 0
    • Reputation: 0
    • Registered: 23-May-2017
    • Posts: 2

    I am just starting with colemak. your changes in general seem to make sense to me (being a  developer).
    I especially like the WASD idea.
    I am not sure yet about the idea to swap ( and ). As someone mentioned already, with most editors will insert the ) anyway.
    But my major concern is the placement of the - . I work a lot in unix terminals and  - is frequently needed.
    The need t press it with the pinky finger plus a modifier seems too complicated to me.
    Will give it a try anyway :-)

    Offline
    • 0
    • Reputation: 214
    • From: Viken, Norway
    • Registered: 13-Dec-2006
    • Posts: 5,364

    Check out Extend too. I suppose that by "the WASD idea" you mean the nav cross, which is similar to the Extend one except his doesn't have home position modifiers which really vitalize the concept!

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

    Offline
    • 0
    • Reputation: 2
    • From: Leafland
    • Registered: 17-Sep-2013
    • Posts: 32

    All right, I am going to give myself some feedback, as it has come time to revamp and reflect.  This will be brief, as I will make a new thread and obsolete this one.

    A new keyboard:

    thinkpad-x230-keyboard-1.jpg

    means it is time to redo everything.

    First, the directional keys on the left hand.

    WARS - Failure. Requires the hand shift, not good.
    FRST - Failure. That middle finger will start to hurt. Acceptable maybe if you happen to have a grid keyboard.
    PSCT - Pretty good, surprisingly, but annoying with vim, as down was too close to the paste button. (v)

    If you are intent on using the left hand, PSCT is very comfortable, after adjusting to it about after a week. All directional keys will thus be handled with the index and middle finger.

    Second; the shift keys

    ' was turned into a shift, and I loved it. Eventually I turned caps into a shift as well, and moved backspace down to the shift key. Worked well.

    I found a git project that turned the space key into a control when held down, but just a space when pressed.

    I plan to use that code to work on turning the space into a level 3 modifier key instead, and the capslock and ' keys into backspace when tapped, and shift while held. I will then turn the shift keys into control keys.

    Third, the Number Pad

    On the right hand, definitely easier to navigate. I might keep it there, but delegate it to a higher modifier key. The thinkpad i bought seems to have a decent layout for it already mapped on the keys on the right hand.

    @Dreymar
    st were left and right. with alt shift, they became home and end. Decent, but inconsistent results on apps for some reason. The left hand was interesting, but it was better to have them on the right hand after all.

    @kohlerm
    Swapping the () makes sense when you consider that you roll your fingers pinky to thumb the easiest. After I got used to it, I could not do without it. Placing the {} a shift above was also practical.

    I was surprised that you dont like the dash position. For me, I use a lot of _, but having the dash there works for me as well. in either case, moving the equals away to the edge has worked well for me. I ended up putting the / back on the 7, and making the 3 into the '

    having the */ bigram is just too valuable for my commenting needs :-)

    Okay all, stay tuned for my next thread.


    For anyone reading this, the take away from this layout experiment is:

    - The only directional key layout that is sound on the left hand is PSCT, otherwise the right hand is better suited for this.
    - Shift Keys on ' and Capslock are amazing.

    Offline
    • 0
    • Reputation: 117
    • From: UK
    • Registered: 14-Apr-2014
    • Posts: 978
    Akiva said:

    For anyone reading this, the take away from this layout experiment is:

    - The only directional key layout that is sound on the left hand is PSCT, otherwise the right hand is better suited for this.
    - Shift Keys on ' and Capslock are amazing.

    Interesting findings. I'm surprised WARS is so bad given that pattern is so standard in gaming. I suppose the left hand shift from the normal home position is not really a factor in gaming. But anyway, I agree having arrows on the right is better!

    Regarding Shift, I still think you can't beat having Shift on a thumb key (one of the Alts). But ' and CapsLock is an interesting option, which I've considered previously.  Instead of Shift, I think these keys might be good as AltGr (selectors for third and fourth levels), especially if defining programmer/symbols. It would also make it easy to do Shift+AltGr combos with thumb and pinkie.

    Last edited by stevep99 (02-Jul-2017 17:23:42)

    Using Colemak-DH with Seniply.

    Offline
    • 1
    • Reputation: 2
    • From: Leafland
    • Registered: 17-Sep-2013
    • Posts: 32
    stevep99 said:
    Akiva said:

    For anyone reading this, the take away from this layout experiment is:

    - The only directional key layout that is sound on the left hand is PSCT, otherwise the right hand is better suited for this.
    - Shift Keys on ' and Capslock are amazing.

    Interesting findings. I'm surprised WARS is so bad given that pattern is so standard in gaming. I suppose the left hand shift from the normal home position is not really a factor in gaming. But anyway, I agree having arrows on the right is better!

    Regarding Shift, I still think you can't beat having Shift on a thumb key (one of the Alts). But ' and CapsLock is an interesting option, which I've considered previously.  Instead of Shift, I think these keys might be good as AltGr (selectors for third and fourth levels), especially if defining programmer/symbols. It would also make it easy to do Shift+AltGr combos with thumb and pinkie.

    Yeah WARS is just awful due to the upper row being shifted left, because your fingers have a proclivity to stretch up and inwards. I think with Gaming, people just bare through it, although at this point, I am often now remapping my WARS in gaming to PSCT. I just like it that much.


    That is a very interesting suggestion, moving shift to the thumb and altgr to the pinkys....

    I will have to try that, because, if I can successfully get the space bar to dual function as a modifier key, uppercase will be even nicer as I will not have to shift my pinkies. The drawback though will be that I will lose directional keys...

    We will see.

    Offline
    • 0
    • Reputation: 214
    • From: Viken, Norway
    • Registered: 13-Dec-2006
    • Posts: 5,364

    I think WARS works well enough for my second Extend layer, since it makes it easier to hold down the modifier (I use Tab for now) while navigating with the same hand. Keep in mind that the second layer is a NumPad layer, so navigation is secondary but still necessary on that layer.

    Last edited by DreymaR (03-Jul-2017 09:06:11)

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

    Offline
    • 0
    • Reputation: 2
    • From: Vienna
    • Registered: 09-Apr-2017
    • Posts: 24

    Can somebody add a feature for saving threads without having to post a reply? I'd prefer not to use browser bookmarks...

    ;)

    Offline
    • 1