カリブディス?
チャリブヂス?
ケライブディス?
…
カリュブディスだった
部品
- Charybdis Nano Kit, RGBとトラックボール付き、ケースなし
- JLCPCBの3201PA-F Nylon (SLS)っていう材料で印刷してもらったケース。そのためのSTLファイルはGitHubのこことここから
- Gateronのキースイッチ1本
- やすっぽいXDAプロファイルの「プリン」キーキャップ
組み立て
はんだ付け的にはほとんど大したことないけど、キットのリボンケーブルがかなり固いから見た目異性植物になったり、ちょっと曲技的な付け方が必要になったりはする。
(ハンズフリーツールの使用がおすすめ。難しいところ1:スイッチのはんだ付け
スイッチは基板をケースの内側に押し付けて曲げながら付けなければいけない。
基板はそのため平均より薄いもので、確かに問題なく曲がるけど、結局フレックス基板とか特別なものじゃなくてただのFR4だからかなりの力を加える必要があって、折れちゃいそうな感覚もある。折れないけど。
あと僕の場合はその固さのせいでケースと基板の間に数ミリの隙間ができてしまった。
光が漏れてしまうのは残念だけどキーボードの操作の問題にはならない。
難しいところ2:ケーブル
ケーブルが幅広くて割と固いものでケースが狭いせいで、折ったりマイコンの足とかで怪我したりせずに全部入れるのはちょっとだけ面倒なこと。
僕のはそうはならなかったけどケーブルが何かに接触しただけでゴーストキーが出まくったから足を全部切るのもとても重要みたいだ。
QMK
ファームウェアは定番のQMK。
僕のキーマップをどうぞ。
こんなキーの少ないキーボードの使い方とかはまだよくわかっていないし極めて個人的なものなのでマップそのもののコピペはおすすめできないけど、参考になる部分もあると思う。
自動マウスレイヤー
トラックボールを動かすと自動的にレイヤーを切り替えてくれるauto_mouse_layer。 手動で切り替える必要がなくなってとても快適だけど、カリュブディスの場合は問題が一つ、センサーの感度。 感度が高いのはいいことだけど、高すぎて軽く打っててもその微小な振動まで検出しちゃってトラックボール触らなくても打つだけでレイヤーを切り替えてしまう。
以下は閾値でそれを防ぐためのコード。
static const uint16_t AUTO_MOUSE_THRESHOLD = 200;
static uint16_t auto_mouse_cum = 0;
#define ABS(n) ((n) < 0 ? -(n) : (n))
bool auto_mouse_activation(report_mouse_t mouse_report)
{
auto_mouse_cum += ABS(mouse_report.x) + ABS(mouse_report.y) + ABS(mouse_report.h) + ABS(mouse_report.v);
if (auto_mouse_cum > AUTO_MOUSE_THRESHOLD)
{
auto_mouse_cum = 0;
return true;
}
return false;
}
マウスの動きには変化なし。
トラックボールでスクロール
トラックボールでスクロールするのは意外と素晴らしいことだ。操作的にはノートパソコンのタッチパッドに似てるけどより低遅延で精密だからスクロールするのがすごく気持ちいい。
QMKのDrag Scrollっていう機能で簡単に設定できる。
設定するのが簡単でなんのOSにも対応するけど、普通のマウスのホイールみたいな、一気に数列を飛ぶ全然スムーズじゃない働きになるからあまり好きじゃない。
スムーズにスクロールできるhigh-res scrolling、「高分解スクロール」っていう機能は未だにイシューとなってる。
Linuxではlibinputのon-button scrolling feature という機能は使ってるマウスに関わらずhigh-res scrollingに対応なので、それでもちゃんとスムーズにスクロールができる。 使い心地が全然違うから可能なら是非使ってみてください。
個人的には、キーマップにKC_MS_BTN4(ブラウザとかで「戻る」ボタン)が入ってて、それをlibinputのスクロールボタンに設定している。
Swayの設定では以下のようなもの
input "43256:6194:Bastard_Keyboards_Charybdis_Nano_(3x5)_Splinky_Mouse" {
natural_scroll enabled
scroll_button 275
scroll_method on_button_down
scroll_factor 0.3
}
ボタンのIDは、libinput debug-events
が教えてくれる。
モーツァルトさんは収まらない
Mozartkugelは小さすぎてボールになってくれない
残念!