Zenn
Open12

プログラミングもしやすいキー配列を模索する / qcuy配列

SLMNLLSLMNLL

qcuy配列

年始からローマ字をAZITでタイピングしている。
さらに運指の負担を減らすため、キーボードレイアウトのカスタマイズにも手を出してみた。

どんな配列?

astarte配列派生のcuyz配列をベースに、自分が使いやすいように少しずつ調整&模索中。
キーボード左上の並びがq, c, u, yなのでqcuy配列[1]

astarte, cuyp, cuyz系統なのでコードが書きやすい…はずです[2]。が、基本的には「自分用」の実験・習作的配列です。

使用者のペルソナはこんな感じです:

  • MacのUSキーボードを使っている / キーのリマップはKarabiner-Eements
  • コードを書く
  • コードのコメント行も英語で書くので、普通の人より日本語を書く量は少ないかも?
  • ローマ字はAZITで入力している
  • 右利き

cuyz配列からの変更点:

  • コードを書く際に., ,が並んでいる方が良いので、縦に配置
  • 割と使用機会の多いmが中指下段だと個人的に指が辛いので、qwertyと同じ位置に戻した
  • それにともないwを移動する必要があるが、日英での使用頻度に鑑みてwを人差し指側、玉突きでfを中指側に移動(AZITだとfもそこそこな頻度で使うが、一旦様子見)
  • 行末に;が必要な言語も使うので、;の位置は様子見(多分/と入れ替えます)

逆に配列を検討するのに考慮しなかった要素:

  • 自作キーボード民ではなく、またキーマッピングをKarabiner-Elementsで変更しているので、h, j, k, lz, x, c, vの位置はあまり意識していない(キーボードの刻印通りに⌘+zを押して動くようにできるので)

その他

  • 母音が左にかたまっているので、ローマ字入力も結構楽です。
  • 一瞬大西配列に入門したこともあるので、k, t, u, nなどの位置が同じで学習コストが低いのも個人的に◎
  • kに関してはローマ字と英語で打鍵頻度にかなり差があるので扱いが悩ましいが、一旦このままで

Karabiner-Elements用のjsonファイル

MacのUSキーボードのキーマップをqcuy配列に変更するためのjsonファイルをgistで公開しています
https://gist.github.com/slmnll/cdcc68c049893f13214a80b86b4922e3

脚注
  1. 読み方は「きゅーくい配列」。 ↩︎

  2. 自分用の配列かつ使用感重視なので特にKLAのスコアなどは気にしていませんが、元になっているcuyz配列などと比べて著しく悪いということはないと思います。基本的には日本語入力の快適さより、プログラミングのしやすさという観点でカスタマイズしています。 ↩︎

SLMNLLSLMNLL

主観的頻出単語の打ちやすさ

var, func, function, fn, for, if, int, float : 打ちやすい
let, enum : 普通
const : 微妙かも

SLMNLLSLMNLL

c, x, ;, /, 'を移動

左手中指・薬指下段は個人的にはかなり押しづらく、なるべく使用頻度が高いキーを置きたくないので、そのへんも含め調整。

  • c + 母音のコンビネーションが打ちづらいのはあまりよろしくないので、cを子音担当の右手側、リターンの左に移動
  • cの移動先の'xの位置に移動
  • xを空いたcのポジションに移動
  • /;を入れ替え

  • cに関してはMTGAP配列だと右側なのでそれに倣いました[1]
  • w,b,lの取り残された押しづらいキーたちのいずれかをvと入れ替えるかも
  • 右手ホームポジション周りが忙しいので、左利きの人にはちょっと使いづらいかも
  • /;のベストポジションは使う言語によりそう。マークアップ使う人には、もともとの位置がいいかも

明確に良くなったところ

  • constが入力しやすくなった。


qxuy配列だね

gistも更新
https://gist.github.com/slmnll/cdcc68c049893f13214a80b86b4922e3/467a7aa0a8a21ac5cd897aa95544812845c64824

脚注
  1. AZITだとcも結構よく使うので、ローマ字的にも右手でアクセスしやすい場所がよい ↩︎

SLMNLLSLMNLL

テストで一部長押しに清濁変換などを実装

  • v長押し > w
  • k長押し > g
  • h長押し > b
  • t長押し > d
  • n長押し > m
  • s長押し > j

  • キーのホールド時間は120ms程度なので、今のところタイピング速度が遅くなる感覚はない[1]
  • 中指・薬指で右下段のm, w, bを押さなくていいので、運指はかなり楽になった。
脚注
  1. そもそもまだ慣れてなくて絶望的にタイプが遅いので、120msは誤差の範囲。 ↩︎

SLMNLLSLMNLL

cが右端にきたので、c -> lの運指、例えばclassのコンビネーションが若干微妙か[1]
r長押し > lがいいかも?

脚注
  1. 決して押しづらいわけではないのですが、小指連打がちょっと気になる感じ ↩︎

SLMNLLSLMNLL

c, vなどを移動

ホールド&タップ(長押しによる押し分け)が意外と使いやすいので、それを前提に少し改良。

  • cgのあった場所に移動
  • vdのあった場所に移動
  • lcのあった場所に移動
  • mにタップ用のキーを追加

メリット

  • classcallなどが入力しやすくなった
  • commaなどmが連続する単語の打ちやすさの改善

気になる点

  • Karabiner自体のホールド&タップ精度の甘さゆえ、打ち間違いが多少発生する点
SLMNLLSLMNLL
  • n長押し > m を削除

n -> tのコンビネーションが隣り合っていることもあり、高速で入力されることが多く、(Karabinerの処理が追いつかないのか)まあまあの頻度でtが空打ちになるため

printをはじめ~ntで終わる単語も多いので、コードを書く際の快適さの改善を狙った。

SLMNLLSLMNLL

配列に慣れて入力速度が上がってくるにつれ、t長押し > dが若干煩わしい場面がちらほら。
特定の単語の過去形の~dedや、addなど、dが連続的に入力される機会が以外と多いからか。他のタップ&ホールド系のキーについては、今はそこまで気にならない。

SLMNLLSLMNLL

Karabinerで制御するタップ&ホールドの挙動が不安定なので、quoteを清濁変換用のレイヤーのトリガーに割り当て、該当する文字を入力する場合はquoteを押しながら打鍵するようにしてみた。

  • quoteの位置にあったlpの位置に移動(classなど単語の押しやすさはそのまま)

懸念点

  • 小指の使用頻度が数倍以上に / 親指でレイヤーを切り替えられれば…
SLMNLLSLMNLL

自分の環境の問題なのか、shift + quote + w(=大文字のW)のコンビネーションが反応しないので、wf + quoteに割り当て。

作成者以外のコメントは許可されていません