• You are not logged in.

    SYMbol key modding for enthusiasts

    • Started by DreymaR
    • 6 Replies:
    • Reputation: 214
    • From: Viken, Norway
    • Registered: 13-Dec-2006
    • Posts: 5,364
    SYM – a symbol key mod for the enthusiasts!

    I feel that the semicolon gets a too good position in standard Colemak. It must be a remnant of the insane position it has in QWERTY that puts it inside the letter block so to speak, where it doesn't deserve to be. The three symbol keys that do deserve a position among the letters are period, comma and apostrophe/quote, since they occur frequently in text. Next up is the hyphen-minus that's quite common and too far away on the top row.

    Furthermore, by using the Wide mod I've already broken Shai's principle of leaving the symbol keys alone in the name of simplicity. The ANSI Wide mod moves the apostrophe up and the /? key to the lower middle, while the ISO Wide mod moves /? up; both move the brackets and plus/equals keys.

    My feeling is that a semicolon-slash-apostrophe-hyphen remap could be quite nice! Trying it out, it seems to make the apostrophe bigrams noticeably more comfy. It;s easier to stretch that pinky out upwards than opening the hand outwards, that;s my clear impression of what;s what.   ¯\_(ツ)_/¯

    But while we're at that... Let's take a closer look at punctuation vs letter frequencies in English!  ( のvの) c[_]

    On the McDickens letter frequency page we see the following relative frequencies for English, after the initial SPC e t a o i n s r h l d c u m:

    Excluding code: g f p w y ENT b , . v k ' " - x 0 j 1 q 2 z ) ( : ! ? 5 ; 3 4 9 / 8 6 7 [ ] ...
    Including code: f g p y w ENT b , . v k - " _ ' x ) ( ; 0 j 1 q = 2 : z / * ! ? $ 3 5 > { } ...

    It's clear that these punctuation keys are more common than the rare letters x j q z (having <0.16% usage each, all others having >0.8%).

    The below frequency estimates are based on the numbers on Wikipedia as well as the analysis used in SteveP99's keyboard layout analyzer based on, respectively, a Project Gutenberg book lexicon and the Linux source code base:

     B     CM    PD    V     K     QU    MN    X     J 
     bB    ,<    .>    vV    kK    '"    -_    xX    jJ
    1.5   1.2   1.3   1.0   0.8   1.0   0.5*  .15   .15   (Approx. % usage. The -_ key varies w/ coding, 0.3-0.8?)
    1.5   1.8   1.2   0.9   0.8   1.0   0.3   .14   .14   (SteveP's % usage, based on book analysis.)
    1.5   1.7   1.1   1.3   0.9   0.4   8.1   1.5   .06   (SteveP's % usage, based on code/documentation. Underscore is 7.2!)

    The semi-/colon (SC) and slash/question (SL) keys are more of a toss-up. These don't quite deserve their good positions when entering text, as frequencywise they are on par with or worse than several number row symbols – especially the parentheses. It's different for coding as particularly the semicolon is quite common in some languages. However, my impression is that the text-related symbols are more important for flow. I think people may be overreporting the importance of the semi-/colon, unless you type almost exclusively code. If you do so though, note the massive role that the underscore can play!

    Since backslash is handled differently on ISO and ANSI boards, doesn't have a really good position on either and has a different key cap size on the latter, I'm uncertain whether to include it in remaps. I feel that the brackets should be left alone since they serve many purposes in locale layouts and since they're cool in the middle of the keyboard using the Wide mod. If anyone still wants to improve their role, I suggest a simple brackets-parentheses swap. So in sum, my candidates for worse positions when promoting the more common symbol keys are:

     SC    SL    Q     Z     PL    BS
     ;:    /?    qQ    zZ    =+    \|
    .13   .16   .10   .08   .06?   --
    .29   .15   .10   .06   .00   .00    (Note the huge variation in SC frequency! SteveP reports 0.22+0.07 %.)
    1.4   0.6   0.3   0.2   0.9   0.2

    I've included the plus/equals (PL) key since even though it's quite rare in text, it goes to the middle of the board in the Wide mod and that's ugly and unintuitive. Maybe it could take MN's place, and SL or BS its old place? Then, PL would remain close to MN as it was before but just on a different row – like Dvorak's punctuation placements have it.

    The idea of a rotation mod to make symbol placements better was discussed both in a Q > ; > ' rotation topic and in another topic where it was suggested to make it more like the Dvorak symbol placements. I don't think that's a goal in itself, but it's clear to me that Mr. Dvorak saw the importance of the hyphen-minus key.

    As for Snth's idea of including the letter Q in a rotation with the quote key, I don't see any real benefit to making QU a roll. It's a comfortable bigram already, using a nice hand alternation. Even Snth has said he doesn't believe in it anymore.

    So, these cycles look interesting:

    For ISO boards, as two separate loops:
    QU > SC
    MN > SL > BS > PL
    
    For ISO boards, leaving SL alone:
    QU > SC > BS > PL > MN
    
    For ANSI boards, leaving BS alone:
    QU > SC > SL > PL > MN
    
    Optional addition: Swap parentheses and brackets
    () > [] (not a key swap so it's a bit harder to do with some implementations)

    Using vanilla Colemak, on an ortho board:

    6   7   8   9   0   =   \
    j   l   u   y   '   [   ]        Sym(QuMn) mod
    h   n   e   i   o   -   ;        (leaving the slash alone)
    k   m   ,   .   /   _____

    With the Wide mod, on a staggered ISO board:

      \   7   8   9   0   =
    [   j   l   u   y   '   -         Wide-Sym mod
     ]   h   n   e   i   o   ;        (both the quote and minus loops)
       /   k   m   ,   .   _____

    The full CurlAngleWideSym mod on an ANSI board, adding the parenthesis/bracket swap:

    1   2   3   4   5   6   /   7   8   9   0   =
      Q   W   F   P   B   (   J   L   U   Y   '   -   \         Cmk-CAWS-ANSI
       A   R   S   T   G   )   K   N   E   I   O                (w/ parentheses)
         X   C   D   V   Z   ;   M   H   ,   .

    Any insights and thoughts? I'm thinking this could be a "Symbol Rotation" mod on top of the other mods we use. Some optimizers might like it, while other Colemak users wouldn't bother. Is it time for Colemak-CAWS domination...?

    Warning: Bad joke inside. Consider CAWS and effect. You have been warned...

    Spoiler:

    FourGoodCAWs.jpg?raw=1

        Cmk-ISO-CurlAWideSym_90d-FShui_EPKL.png?raw=1
        Colemak-CAWS: The Sym symbol rotation together with the CurlAngleWide ergo mods on an ISO board.

    [edit 2020-03:]
    I tried this "Sym" mod out a little but at first I found it too confusing to be worth my effort. Maybe others will be far more enthusiastic! However, I've also tested the bang-for-buck version of it: Only the QU <> SC swap. That's a very light mod from standard Colemak, only moving one more key. In the spirit of the DH mod, it seeks to reduce lateral stretches while changing no fingerings. Heavy coders may not want to bother with it, but they should certainly consider the minus/underscore loop!

    [edit 2020-04:]
    I'm now using the full Sym mod and liking it. Both the apostrophe/quote and hyphen keys feel more naturally placed, especially for normal text. Coders on ANSI boards may dislike the position of semicolon in Colemak-CAWS but for ISO I think it's fine. Now, as mentioned above, swapping the brackets and parentheses could be nice? How deeply into the rabbit hole would you like to venture...?   ̄(=⌒ᆺ⌒=) ̄

    [edit 2020-09:]
    I feel the ANSI semicolon may have drawn the short straw here, and Slash should probably have the bottom row like with ISO. Would it be better to have the semicolon on the BS key after all?

    For ANSI boards, 1) leaving BS alone or 2) putting semicolon on the BS key:
    QU > SC > SL > PL > MN
    QU > SC > BS > PL > MN > SL

    The full CurlAngleWideSym mod on an ANSI board, with semicolon on the BS key:

    1   2   3   4   5   6   \   7   8   9   0   =
      Q   W   F   P   B   [   J   L   U   Y   '   -   ;         Cmk-CAWS-ANSI
       A   R   S   T   G   ]   M   N   E   I   O   
         X   C   D   V   Z   /   K   H   ,   .

    [edit 2020-12:]
    The non-Wide mods could benefit from an easier solution: Lifting the brackets up! They aren't common at all unless you swap them for the parentheses – in which case they do become more common than SC SL PL etc. If, on the other hand, we stick to moving keys and not touching their state mappings, this should be a nice non-Wide Sym variant both for ISO and ANSI:

    6   7   8   9   0   [   ]
    j   l   u   y   '   -   =        Sym mod
    h   n   e   i   o   ;   \        w/ bracket lift
    k   m   ,   .   /   _____

    The bracket lift swaps are quite unintrusive too. Colemak modders like Nyfee have already used them. We're down to three swaps (LB-MN RB-PL SC-QU) instead of cycles, and the Wide and non-Wide variants of the Sym mod become more similar with respect to the most common symbols.

    [edit 2021-01:]
    Same idea as before, but preserving the plus/equals key next to zero on the number row. The RB key stays in place this way:

      7   8   9   0   =   [
    j   l   u   y   '   -   ]        Sym mod
     h   n   e   i   o   ;   \       w/ left bracket lift
       k   m   ,   .   /   _____

    The Wide and non-Wide mods are more consistent this way, and the brackets are in the same relative positions.

    [edit 2021-10:]
    Here's another interesting source: Vivian Cook's page on English punctuation frequencies.

    The page reports frequency per 1000 words, which should be 50× the frequency per character in percent given an average word length of 5 characters. It omits some symbols like the underscore and slash, but the results are nearly identical to what we've already seen:

     PD    CM    QU    MN    SC
     .     ,     '"    -     ;:
    1.3   1.2   1.0   .30   .13    Vivian Cook English punctuation frequencies (in %, so reported frequency / 50)
    Last edited by DreymaR (08-Oct-2021 15:48:42)

    *** 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

    I think you're right about the semicolon: it's in a good position due to Qwerty legacy. But I wonder - perhaps the reason it got used in code a lot was precisely because it had a good position in Qwerty; I can easily imagine programming language designers thinking it would be an efficient use of an otherwise rarely used character.

    You would instinctively expect apostrophe and hyphen to be more common, and this seems to be borne out by the frequency stats. There is therefore a sound logic to this proposal.

    I wonder why the hyphen moves around depending on the board type though? I think the spot to the right of O is quite good for it, incidentally the same place as Dvorak puts it. Then apostrophe above the O as you have it makes sense to me also.

    On the down side, I think there are always going to be awkward difficulties with this kind of mod though, because of the weirdness and inconsistencies of that part of the keyboard. You've got ANSI and ISO to contend with, the optional wide mod, plus nowadays columnar and matrix boards becoming more common. Some of the smaller boards don't even have a row to the right of O! It all conspires to make the situation unduly complex and inconsistent.

    I'd also maintain the point I've made before, that I think the key immediately to the right of O is a great candidate for a layer key, being the counterpart to CapsLock. A bit like the Neo layout does with its Mod3 key.  Using that you could then have hypen, underscore, brackets etc all on your home keys even.

    Last edited by stevep99 (21-May-2020 13:31:03)

    Using Colemak-DH with Seniply.

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

    Thanks for the feedback. Yes indeed, many symbols used in code are there because the standard QWERTY layout made them accessible. This goes for much of the shifted home row too. Incidentally, coding can be unnecessarily hard on a default locale layout like the Norwegian one since for instance the @ symbol is on AltGr+2 there and the accents are dead keys and in odd positions. That's one reason I chose to duplicate accent symbols in Colemak[eD]: One plain version, as they are found in the US QWERTY layout that's inspired coding languages, and one dead key on AltGr+<key>.

    It's true that this mod makes everything more complex. Every mod does, actually. For every mod we make we seem to end up with at the very least three variants including the unmodded state, and nearly every mod interacts with the others to increase the total number of variants exponentially. It's a sweet torment.  ¯\_(ツ)_/¯  That's why I consider this a mod for the aficionados, the people who want to take it all a step further, and then another...

    I've noted how ISO/ANSI and the Wide mod throw some symbols around, as you point out. In particular, using the Wide mod on an ANSI board limits the options as there's one less good position near the home position. My Wide-ANSI suggestion is the best I could think out, sacrificing the semicolon and slash/question for the more common apostrophe and hyphen. Heavy semicolon dependent coders won't like that even if they do use quotes and underscores but I don't think I can please everybody with those restrictions.

    You suggest putting the hyphen to the right of O like the Dvorak layout has it and indeed that's where I suggest it ends up with my "leave the Slash alone" Sym mod variant. The one I use now is more consistent with the ANSI variant though, and I like how it keeps equals and minus together, while leaving the semicolon close to its relatives comma and period. Using the Wide-ISO mod, the "omit-Slash" variant leads to a better slash/question position at the cost of a worse semicolon position than the current "dual-loop" one and I don't think that's warranted.

    In the next EPKL commit, one may choose between the one-loop and dual-loop Sym variants by using the Sym1ISO remap instead of Sym_@K in a layout.ini. Vanilla Colemak-Sym will default to the Sym1ISO variant, and Colemak-CAWS to Sym2ISO = Sym_ISO. For now though, edit the Remap file Sym_ISO entry:

    Sym_ISO         = ^SymQuMn2_ISO 	; DreymaR's Symbol Rotation mod (SymQu/Mn/QuMn)

    Here, the number 2 can be changed to 1 for the single-loop omit-Slash variant. Simple?  (ʘ_ʘ;)

    Last edited by DreymaR (22-May-2020 12:00:51)

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

    Offline
    • 0
    • Reputation: 3
    • Registered: 09-Dec-2019
    • Posts: 10

    I'd already been using a layout with almost the same symbol rotations (except, with the semicolon in the top row to the left of the equal key). I recently built a new keyboard with a JIS layout and I was able to make use of the extra key it offers to the right of the bottom row—all while keeping the full left shift key from ANSI, which I personally prefer.

    9jplPAx.png
    I decided to have backspace directly to the right of the right hand home position, which replaces the semicolon because I don't like the stretch of the default backspace in the JIS layout. In return, the semicolon goes to the slash key's position and the slash key goes to the extra key to the left of right shift. It all works very well with the wide mod.

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

    I decided to have backspace directly to the right of the right hand home position, which replaces the semicolon because I don't like the stretch of the default backspace in the JIS layout. In return, the semicolon goes to the slash key's position and the slash key goes to the extra key to the left of right shift. It all works very well with the wide mod.

    This has some nice features, I quite like the look of it. It's a good place for backspace, and the positioning of the other symbols is logical based on frequency.

    I could imagine adopting that backspace position, were it not for Extend. Trouble is, I don't think anything can beat having backspace on the index finger now that I've got used to (mine is Extend-H).

    On your red layer, would you not prefer to have a numpad-style layout with all the numbers on the right-hand side? To me that makes more sense than the long number row across the middle. Kind of like the green layer but moved over one space.

    Last edited by stevep99 (21-Jun-2020 10:59:34)

    Using Colemak-DH with Seniply.

    Offline
    • 0
    • Reputation: 3
    • Registered: 09-Dec-2019
    • Posts: 10

    I use the red layer when I want to type numbers betweeen typing text. Having the numbers at home position is more efficient than having a numpad cluster. The green layer is simply for when I want to type numbers with one hand.

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

    Interesting! Cool that we ended on the same solution for the hyphen and apostrophe.

    Spoiler:

    Your Backspaceslash isn't really moved at all. It sits in the default position by Enter, which equals the 1.5u key above Enter on an ANSI board. Those keys have different low-level scan codes I believe, but have the same functions in layouts. So there is some merit to not touching it in the spirit of lighthandedness and ISO-ANSI-JIS consistency. I nevertheless chose to put something else there on my ISO board as it's such a good position and the Backslash fairly rare.

    [oops... confused Backspace and Backslash there. Nevermind.]

    Semicolon is a lot more common and necessary to text flow and coding alike, so I'd give it a much higher priority than Backslash as discussed above. In my ANSI Sym-Wide mod it does go down to the middle bottom row, but that's a concession I'm not happy to make.

    Check out my Extend2 solution for the NumPad. I find it very beneficient to have a double 0 under the rest of the numbers, like physical NumPads have it (with a double-width 0). Once you learn some NumPad technique you realize how often there are 10/01, 20/02 and especially 00 bigrams, and avoiding same-finger for all these is very nice. Another nice feature is a NumPad Enter in the spot right of the numbers, which helps entry unless you use a thumb Enter. In your case you can just use the regular Enter I suppose. I still agree with SteveP that moving the NumPad one key to the left to coincide with 789 on your number row would be nice. Certainly visually.  (✿◠‿◠)

    Last edited by DreymaR (26-Dec-2020 15:49:59)

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

    Offline
    • 0