⌨️
【takayaso配列】オリジナルキーボード配列を作りました
ども、オオニシタカヤです。
今回は、オリジナルのキーボード配列【takayaso配列】をご紹介します。
皆さんがいつも使っているキーボードって、生まれたときから全部同じ配列ですよね。
ちょっと考えてみたら、もっと合理的な配列があると思いませんか?
Qwerty配列が蔓延るこの世の中に、満を持してtakayaso配列をぶっ放していきます。
2023年5月5日追記
自作キーボードやめました。それにしたがって、この配列もやめました。
詳しくはコチラをご覧ください。
【第1話】自作キーボードやめた2023/5/2 7:122024/9/5 19:25【第2話】「HHKB×Alt Controller」という希望2023/5/2 7:442024/9/5 19:25 【第3話】HHKB×Karabiner-Elementsでエンドゲーム2023/5/2 8:092024/9/5 19:25目次
キーボード配列を変えるには?独自キーボード配列【takayaso配列】キーボード配列とは?keyboard_layout_benchmarker-master評価方法Qwerty配列(Overall cost : 993)日本語入力英語入力Eucalyn配列 (Overall cost : 761)日本語入力英語入力takayaso配列(Overall cost : 756)日本語入力英語入力2つの評価基準:①移動コスト ②使用頻度①:指の移動コストを評価する①-ⅰ:指の移動量①-ⅱ:指の負担量①-ⅲ:指の移動コストの総合評価②:文字の使用頻度を評価する③:①と②を総合評価するtakayaso配列完成までのログ①親指とモデファイアキーを固定②Dvorakを踏襲した母音配置③子音を右側に配置④AとNの小指が辛いお〜〜;;⑤【迷走】Zが左にあるのが許せない→Google日本語入力で試行錯誤⑥[Command+z] のショートカットキーで解決→EndGame⑦強いて言うイマイチな点最終的なキー配列LT0(takayaso-Layout Layer)LT1(Numbers + Moving Layer)LT2(Symbols Layer)LT3(ShortCuts Layer)LT4(BLE-Connect + Moving Layer)LT5(Toggled-Numbers Layer)
キーボード配列を変えるには?
キーボードの配列を変えるにはどうすればよいのでしょうか?
キーボードって、基本的にアルファベットが刻印されてますし、カスタマイズしやすいものも市販されていません。
そんなときに目をつけたのは自作キーボード。
Chidori、ErgoDashminiを通って、CorneECWLにたどり着きました。
自作キーボードの醍醐味は、カスタマイズ性の高さ。
HHKB等の市販のキーボードでも、ある程度キー配列をいじることはできますが、自作キーボードは本当になんでもできます。
例えば、
- 1つのキーに2個以上のキーを割り当てる
- 1つのキーでメアドや住所などの文字列を入力できる
- 2つ以上のキーの同時押しのショートカットが1つのキーで実行できる
- 「#」や「&」をshiftキーなしで入力できる
- 親指で「Enter」や「BackSpace」を入力できる
- WinとMacを行き来できる
などなど…
このカスタマイズ性に魅了され、自作キーボードの世界に足を踏み入れた僕は、
どうせ変わったキーボード作るなら、自分の思い通りにイチから作ろう!
と考え、快適なタイピングを追い求める長い長い旅に出発しました。
独自キーボード配列【takayaso配列】
まずは結論から。僕の考えた配列はこんな感じ。
ポイントは以下の3つ。
- 左手に母音、右手に子音を配置し、左右交互にリズミカルなタイピングを可能に。
- 頻用するアルファベットは、できる限りホームポジションに近いところに配置。
- ショートカットで多用する [X] , [C] , [V] はそのまま。([Z] の扱いは後述)
ちなみに、僕が使用している環境ではこんな感じにしています。
自作キーボードならではのカスタマイズもしています。
- スラッシュやセミコロンなどの記号は思い切ってレイヤー下に格納。(レイヤーについては後述) そのかわり多用する丸カッコ , 、カギカッコ を手の届く位置に。
- , , , を親指に。か弱い小指を労る親切設計。
僕はちょっとしたライターをやってて、1日10時間以上PCに向かう日もしばしば。
そんな僕はあと40年間、毎日のようにキーボードを叩き続けるでしょう。
そんな僕が考えた【takayaso配列】のコンセプトは、
疲れず速い、リズミカルなローマ字入力を。
キーボード配列とは?
ほんじゃ、どんな配列にしようかという話です。
先行研究として、巷で「合理的〜」と評価が高いDvorak配列やEucalyn配列についてお勉強しました。
- Qwerty配列
- Dvorak配列
- Eucalyn配列
そこで僕は、先人たちの思想を踏襲し、改めて自分で合理的な配列を考えることにしました。
keyboard_layout_benchmarker-master
このベンチマーク「klbm.py」は、「.txt」のテキストデータ、「.json」の配列データ、「cost.json」のコストデータをもとにPythonで評価。seabornでヒートマップを作成し、視覚的に使用頻度が分かるようになっています。
指先の移動によるコスト(Position cost)と左右交互打鍵出来なかった時のコスト(Hand/Finger cost)の合計が総合コストとなり、この値が低いほど評価の良い配列と言えます。
評価方法
元データでは5×14となっていますが、比較したいところは3×5なので「cost.json」を修正。それに合わせて配列の「hogehoge.json」も修正しています。
また、テスト用のテキストデータは、英語に童謡「青い鳥」、日本語に自分のブログをPythonライブラリ「pykakasi」を用いてローマ字に変換したものを、それぞれ「english.txt」「japanese.txt」として用意しました。
あとは、ターミナルでこれを叩くだけ。
takayaso配列(Overall cost : 756)
Layout | Overall | Position cost | Hand/Finger cost |
---|---|---|---|
Qwerty | 993 | 500 | 493 |
Dvorak | 826 | 399 | 426 |
Eucalyn | 761 | 337 | 424 |
takayaso | 756 | 326 | 430 |
わずかながら、Eucalynを超えました!嬉しい!!
Eucalyn配列は、5,6列目の使用頻度が低くPosition costが低め。
takayaso配列は、子音を右側に全て固めれたのでHand/Finger costが低め、といった評価でしょうか。
個人的な見解ですが、小指のコストは1.5ではなく3くらいあると思います。を小指で押すのは思ったより辛いです。
仮に、小指のコストを1.5→3に変更したときの評価は、Eucalyn(827):takayaso(799)。かなり差がつくことが分かります。
2つの評価基準:①移動コスト ②使用頻度
このベンチマークは、答え合わせみたいなもので、実は手動でセコセコ評価して、配列を作成してきました。
その過程もせっかくなので見てって下さい。
僕が評価した点は
①指の移動コスト
②文字の使用頻度
の2つ。
押しやすい位置にたくさん押すキーを配置し、押しにくい位置にあんまり押さないキーを配置するだけの簡単なお仕事です。
②:文字の使用頻度を評価する
次に、どのアルファベットをよく使うのか調べていきます。
今回はネットに落ちてた「文字頻度表」を利用して、表をセコセコ作りました。
- 左から、英語入力、ローマ字入力、それら2つを合成した評価(1:1),(1:3)。 (評価は、簡易的にパーセンテージのアベレージで評価した。カッコ内はその割合。(1:3)はローマ字入力に重きを置くため。)
- , , , は省略した。
これから読み取れることは以下の通り。
- 母音が全体の40%近くを占めている。 英語入力では>>>>>>>、ローマ字入力では>>>>>>>という評価。の評価が真反対みたい。
- 子音はが強い。続いてといったところ。
- ショートカットで多用するや、は使用頻度低め。
- とは、英語と日本語でかなり頻度が異なる。
③:①と②を総合評価する
ここまで、①どこが押しやすい場所で、②どれが押しがちな文字なのかを評価してきたので、①と②を照らし合わせてみます。
出来レースかと思うくらい一致しています。
一致していないところは、しょうがない部分だったり、学習コストを優先した部分だったりするのであんまり気にしてないです。
takayaso配列完成までのログ
最終的にこの配列に至った経緯を、日に日に改良してきたログで書き残します。
①親指とモデファイアキーを固定
まずは自作キーボードの醍醐味、力持ちの親指に仕事を与える。
- ホームポジションに と 、利便性的に内側に 、外側には , 。 長押しは , に加え、3つのレイヤー切り替えも担当している。
- 左側に , , を配置。これは大事。
- 見た目と直感性を考慮して , , は小指の右に配置した。
- アルファベットは26コで残りは30コ。 , , , をいい感じのところに配置した。
②Dvorakを踏襲した母音配置
- 左右交互にリズムよくタイピングすることに魅力を感じ、左手に母音を集めるDvorak配列を踏襲した。
- ショートカットキーの要である ... は動かしたくなかったので、必然的に左が母音になった。とりあえず学習コストも考えて、左から .... としておこう。
- また、自作キーボードでキー配列を弄るので、 , , などは後述のレイヤーに格納して、日本語で頻出の , , , を上列に置くことに。
- 残りの2枠は、母音にも子音にも成りえない と をおいておこう。
③子音を右側に配置
- を除く日本語入力の子音は15個 ..............] 。
- まずは、ローマ字入力における問題児 の扱いを考える。子音のあとに を使う場面が多々あるため、右手で「タタンッ」と叩きやすい位置に欲しい。「母音に飛ばす」直感的な感覚と他の子音との兼ね合いから、人差し指ホームポジションの左に配置。その上下に使用頻度が低く、と干渉しない , を配置した。嗚呼合理的ダナ。
- 次に、残りの子音を並べていく。目新しい配列を覚えることに不安を感じていたこともあり、学習コストの軽減を図った。ホームポジションの人差し指から右に、上段に、下段にと順に配置した。適当に並べただけだが、思ったより頻度表にも準拠していて「アリだな」と思っていた。
④との小指が辛いお〜〜;;
1週間ほど使ってみたものの、頻出の と を小指で押すのが辛くなってきた。
- 文字頻度表と二重母音等を考慮し、母音を左から .... に変更した。もっと合理的に出来るかもしれないが、まあ一旦ヨシ!(安全猫)。
- は酷使することが分かったので、ホームポジション中指の一等地に配置。代わりに英語で役に立たずのは上に移動した。 は , などの二重子音で使うので、アクセスしやすいホームポジションの小指に移動。
⑤【迷走】が左にあるのが許せない→Google日本語入力で試行錯誤
どうしても子音が左側にあるのが許せない。全然リズミカルじゃないよ。
でもショートカットにはは欠かせないんだ。
- Google日本語入力で を ざ,じ,ず,ぜ,ぞ に変更。 の じゃ行 を犠牲にして、擬似的に を右側に配置した。
⑥[Command+z] のショートカットキーで解決→EndGame
Google日本語入力での試行錯誤は、いわば“改造行為”のようなものなので、自分のPCでしか通用しない。このままでいいのかと一週間ほど悩んだ。
そこで、左手の親指に , の「やり直す専用キー」を作ることに。かなり使うからね。
- これで気兼ねなく を子音の右手側に移動できる。じゃじゅじぇじょは で頑張ることにして、は左手に文字通り“左遷”。
- さらに と 、と を交換して使用感向上。 と も交換して、直感的に「が、ざ、だ、ば、ぱ」の順番に並び替えた。
これで、Google日本語入力の改造とおさらばし、EndGame…。
⑦強いて言うイマイチな点
特に無いというのが本音で、結構満足しています!
強いて言えば、
- ローマ字入力における二重母音のなかでの頻度が半端ない。人差し指を右に開くのが辛い気もする。
- が小指で2連続で辛いと感じる。 調べたところ「発表」「コンピュータ」「python」くらいでしか使わないらしいし、許容範囲。
- 英語で頻出するが、人差し指の縦方向2連打で多少辛い。
本当に「強いて言えば」なので、6カ月使って慣れた今は全く気になりません。
最終的なキー配列
僕もCorneECWLで、takayaso配列を日常的に使っています。
最終的なキー配列はこちら。