lazy beakl wi

saturday, 2 january 2021

or shortie pinkie Wi. i came across this keyboard design some time ago which had a distinctively heavier pinkie finger stagger than is commonly found.

But as radical as the column stagger appears, i had noticed when typing with the keyboard on my lap tray—something i do a lot of these Covid days, no longer confining myself to my office desk and keyboard tray—that my pinkie fingers, palms down at rest on my lap, naturally position themselves on the bottom row giving some credence to the stagger of the design.

beakl wi-v

hence, this variant of BEAKL Wi which swaps the X and V keys..

Corne BEAKL Wi-v

with dark green representing the at rest home positions.

It is a subtle change but does place the higher frequency V in the pinkie’s relaxed position when one is not maintaining proper home row touch typing form. We are not talking about a radical improvement in fingering metrics (even with adjusted finger weightings for this approach) but it can be an improved tuning of the keyboard for the proper set of hands.

The pinkie modifier remains on the home row for modifier chording.

finger cheats

this layout requires the ring finger cheat in place of the normal pinkie finger reach to the top row corner—for the Z and Colon keys—to otherwise avoid a double row pinkie reach. YMMV with this ring finger reach but i had already adopted this technique a long time ago to eliminate the top row pinkie reach which, for my hands, required shifting the whole hand and wrist position upwards from the palm down position—this is much less severe with proper touch typing form but still perceptibly present for this set of hands.

The pinkie finger reach is limited to the home row (from the bottom row)—the home row reach in this instance being much less severe than the corresponding reach to the top row, accounting for the improved feeling of the layout.

The caveat here for the adventurous is the potential for instilling sloppy touch typing technique—not to mention the fingering cheat required (but hey! we’re already doing the CT WA index middle finger cheat aren’t we?). It is a subtle refinement of the layout if the fingering adjustments come naturally for one’s particular set of hands—i must have the aforementioned shorter pinkie fingers (having wished the Corne pinkie columns had a half key greater stagger).

audience

certainly, the more frequent V (than X) words flow more fluidly—not to mention the inherited finger memory for the key from BEAKL Zi. It provides a more relaxed hand positioning while typing on the lap and, given i am seldom at my desk anymore, is quite likely to become my daily driver.

This layout is not for everyone. Stock BEAKL Wi is still recommended for anyone contemplating even venturing this far. This variant really moves the realm of keyboard layout design to that of hand tuned—it is not a one size fits all solution.

Nor does this pinkie stagger apply to all keyboards. The Chimera Ergo 42’s pinkie stagger is slightly greater than the Corne’s and does not benefit from the swap, at least for me—those with even shorter pinkies might. While i have not been using my Plancks for quite some time since migrating to split keyboards, i suspect ortholinear keyboard users may find this pinkie finger stagger even more applicable.

YMMV when exploring possibilities beyond mere fingering metrics. Speaking of which..

metrics

for fun, the layout was evaluated with changes to the configuration file, swapping the pinkie home row and bottom row effort weights..

[weights] 16.0 12.0 2.0 1.0 1.0 4.0 4.0 1.0 1.0 2.0 12.0 16.0 10.0 7.0 1.0 0.5 0.5 1.5 1.5 0.5 0.5 1.0 7.0 10.0 9.0 5.0 2.5 2.0 1.5 5.0 5.0 1.5 2.0 2.5 5.0 9.0 // rest pinkie on lower row of corne! 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5

and correspondingly mapping the thumb to pinkie row penalties..

[penalties] ,same_row,row_jump1,row_jump2,row_jump3 ii, 2.5, 3.5, 4.5, 0.0 // same finger im, 0.5, 1.0, 2.0, 0.0 ir, 0.5, 1.0, 1.5, 0.0 ip, 0.5, 1.0, 1.5, 0.0 mi, -1.5, -0.5, 1.5, 0.0 // inward roll mm, 2.5, 3.5, 4.5, 0.0 // same finger mr, 0.5, 1.0, 2.0, 0.0 mp, 1.0, 1.5, 2.5, 0.0 ri, -1.5, -0.5, 1.5, 0.0 // inward roll rm, 1.0, 1.5, 2.5, 0.0 // inward roll rr, 3.0, 4.0, 5.0, 0.0 // same finger rp, 3.0, 4.5, 7.0, 0.0 pi, -1.0, 0.0, 1.0, 0.0 // inward roll pm, 1.0, 2.0, 3.0, 0.0 // inward roll pr, 4.0, 5.0, 6.5, 0.0 // inward roll pp, 5.0, 6.0, 8.0, 0.0 // same finger it, 0.5, 1.5, 0.5, 1.0 ti, 0.5, 1.5, 0.5, 1.0 mt, 0.5, 1.5, 0.5, 1.0 tm, 0.5, 1.5, 0.5, 1.0 rt, 0.5, 1.5, 0.5, 1.0 tr, 0.5, 1.5, 0.5, 1.0 pt, 0.5, 0.5, 1.0, 1.5 // lazy pinkie position tp, 0.5, 0.5, 1.0, 1.5 // lazy pinkie position tt, 2.0, 3.0, 2.0, 2.5 // same finger

yielding the following comparison..

With lazy pinkie position

  en fr es de
BEAKL Wi-v 42.88 42.65 43.30 47.78
BEAKL Wi 43.48 43.16 43.83 48.31
BEAKL Zi 46.14 42.97 43.77 50.56
BEAKL 15 53.28 65.48 50.63 56.37
BEAKL 19bis 61.38 56.98 51.95 61.90
BEAKL 19 62.34 71.58 53.35 55.19
qgmlwyfub 63.51 72.46 57.49 63.94
Carpalx 63.78 73.33 58.19 66.32
BEAKL 19 Opt French 65.23 49.74 47.11 64.43
Neo 66.75 82.22 69.06 64.53
Minimak-8key 73.52 87.29 88.37 66.98
Hands down 75.36 92.81 89.35 71.75
Norman 75.97 80.81 82.37 70.63
Kaehi 76.03 90.77 73.33 82.47
Colemak DHm mod 77.06 84.56 90.14 63.68
Colemak DHm 77.08 83.08 90.14 63.68
MTGAP “shortcuts” 77.49 84.64 71.29 79.61
Colemak 77.80 82.98 90.39 65.89
MTGAP “ergonomic” 77.93 80.58 75.20 69.82
Soul mod 78.49 85.98 91.68 61.78
Workman 79.18 92.96 93.24 76.43
ASSET 79.19 88.90 89.64 78.91
Colemak DH 79.59 86.57 93.71 65.46
Notarize 79.98 91.63 92.75 76.46
Oneproduct 80.15 87.39 73.82 82.60
MTGAP “standard” 80.85 82.97 78.14 71.14
Niro mod 81.25 88.67 96.53 67.11
Three 81.34 90.69 85.19 73.81
MTGAP 2.0 81.59 84.80 76.88 65.21
MTGAP 83.56 86.47 75.27 85.17
MTGAP “Easy” 85.00 97.55 97.53 75.00
White 85.81 96.61 92.77 79.17
Qwpr 92.02 108.21 106.71 97.50
Dvorak 93.18 111.72 109.46 89.37
Coeur 95.53 88.02 90.06 102.12
Bépo 40% 97.08 87.45 97.08 108.85
Bépo keyberon 97.48 87.38 97.10 108.90
Qwerty 100.00 111.69 108.30 92.83
Qwertz 101.07 111.11 111.06 91.55
Azerty 121.52 129.24 136.43 109.07

BEAKL Wi-v edges out BEAKL Wi as expected with the BEAKL and Carpalx layouts retaining their preferential rankings applying the revised BEAKL weightings and penalties. The actual scores themselves improved with the J—being more frequent than the Q—now being treated as the home position for the pinkie along with the V.

The remaining layouts score differently with changes to their rankings in many instances—not surprisingly, as evaluation with a bottom row pinkie home position is contrary to conventional keyboard home row placement.

It’s early in the assessment but the layout feels good—not a radical improvement. But i don’t expect to make any more changes soon (famous last words). Perhaps making the X V keys software swappable** is in order to have the best of both worlds for varying typing situations.. :-)

**Done! during the ongoing Covid lock down..

togglable pinkie stagger

Corne BEAKL Wi-v</span> Mouse
/ Stagger

Note: the Flash or reset key has been moved to the Mouse Layer from the Edit / Cursor Navigation Layer.

Additional keycodes—to the pinkie home row modifier—for the bottom and home row pinkie keys are defined for the base and togglable layers in place of the actual keycodes for X and V..

enum keyboard_keycodes { BASE = SAFE_RANGE ... ,SWAPKEY // toggle pinkie home row stagger ,HOME2 // pseudo GUI_T(KC_X/V) ,HOME1 // KC_X/V ,SHIFT2 // SFT(KC_X/V) ,SHIFT1 // SFT(KC_X/V) ,KEY2 // KC_X/V ,KEY1 // KC_X/V ...

For a given row—bottom 1, home 2—the current stagger state determines its key value for the keycodes above..

static bool stagger = STAGGER; // initial config.h value #define PINKEY(r) r == 2 ? (stagger ? KC_X : KC_V) : (stagger ? KC_V : KC_X) bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { ... case HOME2: mod_roll(record, RIGHT, KC_RGUI, PINKEY(2), 9); break; case HOME1: mod_roll(record, RIGHT, 0, PINKEY(1), 9); return false; case SHIFT2: send(record, SHIFT, PINKEY(2)); break; case SHIFT1: send(record, SHIFT, PINKEY(1)); break; case KEY2: send(record, NOSHIFT, PINKEY(2)); break; case KEY1: send(record, NOSHIFT, PINKEY(1)); break; ...

whose state is toggled from the Mouse Loyer..

case SWAPKEY: if (KEY_DOWN) { stagger = !stagger; } break; ...

As much as anything, this togglable layout allows one’s particular posture at the moment to dictate the most optimal layout. Optimal in this case being comfort, as the letter frequencies involved are ultimately not that significant.. a sort of luxury setting :-)

final touch

after a couple of weeks of usage which included changes to the Corne QMK library—function parameter list contractions and subsequent simplification of the keymap source—i ended up swapping the bottom row of R2 SA Profile keycaps with flat R3 spherical sculptured keycaps yielding a top row to thumb R2-R3-R3-R1 profile.

It is a subtle refinement but the bottom row flats now seat better with the palm down lowered finger positioning—especially with the pinkies. Little details, all contributing to that elusive sought after “feel”..

»»  beakl wi

comment ?