ガジェット

40%キーになれるまで

日本語の入力は何も問題なくできるが、記号が増えてきたりするととたんに辛い。なのでプログラム系になると結構進まなくなりがち、数字と記号は一緒に使うことが多いので同じレイヤーに揃えたほうが良いのではないかという気がしてきた。

なれるのは大変そうだが、こういうほうが合理的なのだろうか。

Vailを使ってキーを更新していた所、タップダンスの設定がキーボード側に残ってしまっているような挙動を何度も確認した。結局うまく消えてくれてない気がするのでファームを再度Writeしてみると解消されているきがする。Vailの良い点は、クライアントアプリの場合設定ファイルを書き出せるのでファームでリセットしたあとも楽に戻せる。

何れにしても暫くの間、指がまいごになって頭を悩ませそうな気がして来きたのでシールを購入してみた

https://booth.pm/ja/items/5553352

こちらのシールを側面に貼って指が自然に打てるようになるまでは練習をしたい

40%キーボードのプロトタイプを作成

世の中にはたくさんの自作のキーボードが溢れており自分で作る意味はそれほど実はないのかもしれないのですが作れると思うと作ってみたくなりますよね。どこかで見た感じの模倣になっている感じもするのですが自分の手のサイズとかに併せてプロトタイプを作ってみました。

  • 一体型であること
  • K1Cで印刷可能なサイズ
  • 小型でノートパソコンの上においても普通に使えること
  • カラム型で少しでも打ちやすく
  • 中央2列は少し段を下げていてこれでだいぶ打ちやすい感じになっています。

右側のテンキーは以前に作ったもので飾りにおいてみました。途中でデザインのコンセプトを変えたので揃ってません。

  • 手配線(空中配線)
  • RP2040を利用(ピン数がほしかったので、値段も考えてzeroに)
  • ガスケットマウントがよくわかってないのですが挟み込みはしてないがボトムのケースにキースイッチのプレートを引っ掛ける形へ

実際に配線をして使えるようになるといいですね。しばらくはこれで楽しんでみようと考えています。マイコンとの接続が面倒なのでもう少しプロトタイプ用のボードがほしいというのと、今回は6列8行のマトリクスとして配線をしています。これによって左右の橋渡しが7本から8本ほどで渡していることになります。HDMIケーブルなどではピン数が足りているので分割もどきを作ってみても良いかもしれません。またサイズ的には印刷ができないのですが更に左右に1列を足してもサイズ的にはいいのかもしれないと思っています。

まだキーマップなどは調整していますがだいたい以下のような感じ、LinuxとMacのレイヤーの自動入れ替えをしたいのですがまだそこまでできてない。

モック

ピッチは標準、配列としては40%?30%なカラム配列。2列ほどずらしているので打ちやすさはある。真ん中が明けているのでそれほど狭い感じもしないので打ちやすい。K1Cで印刷ができるギリギリのサイズで作っているがこのまま左右に1列を追加したものが普通に使いやすそうだったので最終的には列を増やしました。R,Tの列も幾つか段を下げているものを考えてみたのですが、最終的にはそれぞ0.25ほど下げる形で落ち着いています。

ロータリーを左右の開いている場所に置きたいと開けていました。プロトタイプではここはキーにしていますがどこかでロータリーをつけてみたいと考えていまう。

3D Printerで遊ぶ肩こりがひどいという言い訳で分割キーボードを作る(5) 3D Printerで遊ぶ

仕事が忙しすぎて何も書けてなかったが、Creality K1C FDM 3Dプリンターを手に入れたので黙々と仕事の合間に印刷をしていた。これまで縁がなかったのでネットでそれほど時間もかけずに調べて購入したが満足している。積層タイプのものを購入したが、キーキャップなどの造形には光造形タイプの方が向いていそうだという事くらいは遊んでいてわかった

以前に購入したErgo68のキーボードケースを印刷してみている。もとの基盤のサイズデータがないためどちらかとえいばそこに苦労してしまった感じがする。ケースとしては単純に挟み込んでいるだけであるため打鍵としては底打ちして響いてしまっている感じはするがデスクマットが吸収してくれているので埃が入ってきづらくなったので目的としては良しとしている

キーボードをなるべくそのまま使いたい(スタンドは使いたくない)こともあり、一時期狂ったようにキーキャップを色々印刷して見たが、これだという思ったものが作ることはできず。それなりに打ちやすくできたものはあったのだがレジェンド(文字)を入れたいと考えた時にK1Cでは難しく既製品のキーキャップに戻っています。スリムタイプのキャップも数ミリ稼ぐことができるので既製品のUltraSlimみたいなものも使って見たいところです。

肩こりがひどいという言い訳で分割キーボードを作る(4) アームレストでうちやすさが格段に

仕事が忙しくて大量に文字を売った結果かなり馴れてきたと言える。ほぼ打ち間違いもなくなりいい感じになってきているがそもそもそんなに精度が高いわけではないので矯正された分以前よりはむしろ良くなった気がする。ようやくYは左手だと覚えてくれたみたいだ。Bが逆の人も同じ気分だろう。

記号などの配置がまだこなれてなくてここじゃなくても良いかなという部分はあるがこれはおいおいできたら良いかなと感じている。

一番の貢献をしているのはこのアームレストかもしれない。最終的には、木で作ろうとまずはホームセンターで加工しやすいスチール素材のようなもの 10mmの厚さのやつをカッターで切り100均のシートで巻いて滑り止めやらつけて本体ともずれないように固定をしている(取れるようにはなっている)。以外に柔らかい素材がいい感じに効いていている。

普段の入力で不要なキーはTwitterで教えてもらったスイッチブロッカーというものを利用して塞いでいる。個人的にはもっと薄いほうが嬉しい気がします。このキーボードの問題だと思いますがプレートの上に乗っているのでケースがあるとまた違うのでしょうね。

分割キーボードの難しさはポジションが狂うとかなり打ちづらくなるということですが結果的には大型のアームレストを使うことでこの問題を解決したのかなとおもいます。その分移動ができなくなったので完全にデスクトップ専用になりつつあります。

肩こりがひどいという言い訳で分割キーボードを作る(3) qmkを使ってOSの判断

普段仕事はmacを使っているが個人ではLinuxを使っている関係上どうしても困るのが日本語変換まわり。Linuxでも同じキーでなんとかしたいと思っていたのだが自作キーボードのファームウェアの設定素ライブラリであるqmkを使うことで対応ができた。

レイヤー0にはmacで使う定義を記載

レイヤー(1)にはLinuxで使う定義を記載

ターミナルに貼り付けることが多いのであえて ctrl+shift を割り当てている。とはいえブラウザ上でのはctrl+c/vが有効なので間違えて打つと面倒なのでブラウザ側でも調整が必要

qmkの定義(rules.mk)

OS_DETECTION_ENABLE = yes
DEFERRED_EXEC_ENABLE = yes

keymap.c の変更点

#include "os_detection.h"

void keyboard_post_init_user(void) {
  uint32_t get_host_os(uint32_t trigger_time, void* cb_arg) {
    switch (detected_host_os()) {
      case OS_UNSURE:  // Don't change default layer if unsure.
        break;
      case OS_MACOS:   // On Mac, set default layer to 0.
      case OS_IOS:
        set_single_persistent_default_layer(0);
        break;
      default:         // On Windows and Linux, set to 1.
        set_single_persistent_default_layer(1);
        break;
    }
    return 0;
  }
  // Set default layer based on the detected OS after a 500 ms delay.
  defer_exec(500, get_host_os, NULL);
}

これで少し幸せになりました(あとはブラウザのCtrl+cの挙動は別で変えるしかない)

追記(2024/02/12)
layer_move()関数に変更した。キーが確定したらdefault_layerでも良いかもしれない。

上部へスクロール