🎴
Software and Systems—Keith Kim
  • What I'm Making and What I Use
  • Code Patterns
    • Fun with flat_map (in Ruby)
    • Enumerating Union Types in Elm
    • Software Design Patterns
    • Authn / Authz
  • Data access
    • Type-safe SQL with SafeQL
    • JDBI
    • Jooq
  • OpenSource
    • Keyboard Layouts
      • Qwickly: Keyboard Layout
      • Colemak + Niro + Soul + MTGAP
    • Libraries
      • SafeQL
      • Moja
      • Monadts
    • Apps
      • Database Diagram
      • Unfurlist
  • Products / Services
    • Hackerer.news
    • Gitgrep.com
    • Quicklog.io
      • Client libraries
    • QuickX.app
      • Vultrdata (opensource)
        • Vultr instance metadata
    • Statuspages.me
    • Coming soon...
      • CheatsheetsDB.com
      • iSpecsDB.com
      • Slackflows.com
  • Frameworks
    • About Frameworks
    • A Replacement for Spring Boot
    • Back-end
      • Node.js
      • Spring Boot/Java
      • Javalin/Java(Kotlin)
    • Full-stack
      • Phoenix/Elixir
      • Rails/Ruby
      • Yii/Php
    • Front-end
      • Vue.js/TypeScript
      • React
      • Elm
    • Mobile/Client
      • Flutter
      • JavaFX
  • Databases / Datastores
    • SQL / NewSQL
      • MySQL
      • PostgreSQL
      • CockroachDB
    • Stream / Queue
      • RabbitMQ
      • Apache Kafka
    • Cache / Search
      • Redis
      • Elasticsearch / Solr / Lucene
    • Cloud
      • RDS / Cloud SQL
      • Spanner
      • Firebase
    • Datomic
  • Languages
    • About Languages
    • On the JVM
      • Kotlin
      • Java
      • Clojure
      • Scala
    • Client/Fullstack
      • TypeScript
      • Dart
      • Elixir
      • Ruby
      • PHP
    • Go / 2.0
    • F# / OCaml
    • Crystal
    • Pony
  • Third-party Services
    • About Services
    • Domains / DNS / CDN
      • Cloudflare
      • Namecheap
      • NameSilo
    • GitHub, GitLab, Bitbucket
    • Deployment & Monitoring
      • Netlify
      • Cloud VM
        • Vultr
      • Concourse CI on AWS EC2
      • DataDog
      • Loggly
  • Other Software
    • GitBook
    • Hugo
    • Servers
      • Nginx
      • Letsencrypt
      • Systemd
      • Server Operating Systems
    • Windows/WSL(2)
    • Software Licences
Powered by GitBook
On this page

Was this helpful?

  1. OpenSource
  2. Keyboard Layouts

Colemak + Niro + Soul + MTGAP

PreviousQwickly: Keyboard LayoutNextLibraries

Last updated 3 years ago

Was this helpful?

This story began with a desire to make an ergonomic/efficient keyboard layout that was easier to learn than all the existing ones. It was a good success . The layout is shown below and was largely created from scratch by trial and error and lots of community feedback.

Qwickly (prototype)

 Q  W  U  D  F  J  L  P  Y  ;  [  ]  \
  A  S  E  T  G  H  N  I  O  R  '  ⏎
⇧  Z  X  C  V  B  K  M  ,  .  /  ⇧

As it was later discovered the layout has a strong resemblance to the Niro layout while being easier to learn coming from QWERTY.

[What follows is a selection of layouts with goals similar to that imprecise notion of what I'm looking for and had not yet found. The impatient can skip ahead to MTGAP below.]

Niro

 Q  W  U  D  P  J  F  Y  L  ;  [  ]  \
  A  S  E  T  G  H  N  I  R  O  '  ⏎
⇧  Z  X  C  V  B  K  M  ,  .  /  ⇧

Compared to Qwickly; Niro additionally swaps the letters P and F between hands as well as moving the frequently occurring letter O to a different finger. It does however keep L on the same finger.

Qwickly (NIRO)

Looking for opportunities to make the layout more smooth and efficient I combined the best parts of Qwickly and NIRO. Special tweaks are that comma is above the right pinky home row, swapping places with the semi-colon. Note that the shifted characters did not swap places--shift-comma is colon (:) and shift-semi-colon is less-than (<). A typing method where the left-hand middle finger only presses the 'E' and 'U' letters, which avoids awkward reaching as well as bigrams involving ''C' or 'X'.

 Q  W  U  D  P  K  H  Y  L  ,  [  ]  \
  A  S  E  T  G  F  N  I  R  O  '  ⏎
⇧  Z  X  C  V  J  B  M  ;  .  /  ⇧

This strayed from the "Quick to learn" ethos of the Qwickly layout. It is however a smooth layout that was still as easy to learn as other existing layouts with as good or better stats. It does open the door to all other layout possibilities.

Colemak

 Q  W  F  P  G  J  L  U  Y  ;  [  ]  \
  A  R  S  T  D  H  N  E  I  O  '  ⏎
⇧  Z  X  C  V  B  K  M  ,  .  /  ⇧

Of course we can't discuss layouts without including Colemak. It and Colemak (Mod DH) serve as good reference points when measuring proposed layouts using various tools and input text.

Soul

 Q  W  L  D  P  K  M  U  Y  ;  [  ]  \
  A  S  R  T  G  F  N  E  I  O  '  ⏎
⇧  Z  X  C  V  J  B  H  ,  .  /  ⇧

The Soul layout is interesting it that it seems like an evolution of Niro with lessened (ease of learning) constraints to compete with the likes of Colemak on efficiency and ergonomics.

It's weird (or intentional?) that the Kia Motor company have cars named both Niro and Soul.

MTGAP

 Y  P  O  U  J  K  D  L  C  W  [  ]  \
  I  N  E  A  ,  M  H  T  S  R  '  ⏎
⇧  Q  Z  /  .  :  B  F  G  V  X  ⇧

Now this is an optimized layout! Why is there so much discussion about Colemak and even Dvorak when this exists? Obviously; Dvorak is supported everywhere and Colemak keeps many of your shortcuts and is easier to be proficient especially it using the Tarmak layouts. MTGAP did open my eyes to what was possible and had me started on a new quest without knowing its destination.

Benchmarks

Sample

MTGAP

Qwickly2

Colemak-DH

Soul

Colemak

Alice

68.40

68.22

68.02

68.06

66.61

Common

73.29

72.18

75.56

74.21

73.94

S.A.T.

70.97

70.07

75.07

74.13

73.11

Magna

70.23

69.65

69.68

69.61

68.09

1984

69.78

70.86

69.23

69.10

67.47

Tarzan

71.09

70.65

69.28

69.65

68.38

Jungle

67.39

66.56

63.50

65.07

63.98

Difficult

68.47

67.30

69.61

70.21

67.97

Medical

68.66

70.07

74.26

72.48

72.76

Quotes

54.97

58.84

48.55

55.13

54.50

Tao

64.20

61.77

61.35

62.15

61.61

Bigrams

72.35

76.63

78.30

73.28

72.68

Cost

59.36

59.28

58.12

58.26

58.11

Contract

56.75

54.08

57.50

53.32

57.38

Binary

60.95

59.88

59.61

58.20

59.05

Lorem

54.46

59.04

58.27

57.82

57.06

Game

36.08

48.30

36.70

41.10

38.86

avg prose

avg all

I discovered the Soul layout by way of Niro as they are both presented on the site. I'm literally half-sold on the idea of symmetric typing on a standard staggered layout. I will use Pinky and Ring fingers for Z and X in non-symmetric fashion. Then I use Index finger for C as per symmetric typing. I've always typed this way before I knew it had a name.

producing the Qwickly (and transitional) layouts
The Symmetric Typing Project