基本・導入

キー拡張機能の人間工学解説書 (Design Philosophy)

fjFlow のデフォルトキー拡張(L0, SS, L1, L2)は、ユーザーがすでに身につけている認知モデルや身体感覚に徹底的に寄り添い、マニュアルを見なくても指が自然に動くよう設計されています。...

なぜこの配置なのか。認知負担と身体負荷を極限まで削ぎ落とす設計原則の解説

fjFlow のデフォルトキー拡張(L0, SS, L1, L2)は、ユーザーがすでに身につけている認知モデルや身体感覚に徹底的に寄り添い、マニュアルを見なくても指が自然に動くよう設計されています。


目次


1. 認知負担をゼロにするキー配置の原則

キーボード拡張で最も大きなハードルは「新しい配列を覚える記憶のストレス」です。fjFlow は既存の認知モデルをそのまま活用します。

1.1 世界標準の方向感覚を全レイヤーで統一する (h/j/k/l)

プログラマーやエディタ(Vim)の業界標準である h (左), j (下), k (上), l (右) の方向軸を全レイヤーで統一しています:

  • SS レイヤー: ← ↓ ↑ → (1文字単位の移動)
  • SS 長押し: {Home} {PgDn} {PgUp} {End} (行頭・行末・画面スクロール)
  • L2 レイヤー: ホイール左 ホイール下 ホイール上 ホイール右 (スムーズスクロール)

どのレイヤーに切り替えても「左・下・上・右」の方向軸が一切ブレないため、記憶の混乱が起こりません。

1.2 アルファベットの頭文字と結びつける修飾キーロック (a/s/d/z)

Space を押しながら左手ホームポジション(ASDF周辺)を叩くだけで、修飾キーロックが発動します:

  • Space + s ➔ ShiftLock(Shiftの S)
  • Space + a ➔ AltLock(Altの A)
  • Space + d ➔ CtrlLock(左手ホーム位置の中指 d)
  • Space + z ➔ WinLock(キーボード左下角の z)

1.3 最上段キーをそのまま数字に変換する (テンキーシミュレーション)

テンキーのない小型キーボードでも、Space を押しながら最上段の q w e r t y u i o p を押すだけで、左から順に 1 2 3 4 5 6 7 8 9 0 が出力されます。特別な配置を暗記する必要がありません。


2. ホームポジションを維持して身体負荷を排除する原則

タイピング速度と体力の消耗を分ける最大の要因は「ホームポジションから手を離す頻度」です。

2.1 手の遠出をゼロにする編集キー配置 (f/g/;)

従来のキーボードで頻繁に手を離していた操作を、ホームポジションの指配置へ直結させています:

  • Space + f ➔ Backspace(左手人差し指で文字消去)
  • Space + g ➔ Delete(人差し指を少し伸ばして前方消去)
  • Space + ; ➔ Enter(右手小指のホーム位置で決定改行)
  • Space + x ➔ Esc(左手で即座にキャンセル)

2.2 小指の腱鞘炎を防ぐワンショット修飾キーロック

Ctrl+C や Shift+矢印 を入力する際、小指を無理に曲げてキーを押し続ける動作は手に強い肉体的負担を与えます。fjFlow では「ポンと1回叩く」だけで修飾キー状態が保持されるため、ホームポジションの綺麗な指の形を保ったまま軽快にショートカットを実行できます。


3. 誤判定を防ぎ0ms爆速応答を保証するFSMエンジン設計

キー拡張ツールでよく見られる「入力のもたつき」や「タイマー競合による文字化け」を、決定論的 3-State FSM(状態遷移マシン)で構造的に排除しています:

  1. 通常タイピング時の 0ms 完全無遅延: 連続打鍵中はタイマー保留を経由せず、キーを押した瞬間に 0ms 遅延で文字が出力されます。
  2. 高速3連打の自動解体: aaa などの高速な3連打を入力した際は、ツールが自動的に「連打」と判定し、ダブルタップを解体して単打を順序通り正確に出力します。
  3. 文字順序の逆転防止: すべてのキーを直列にFSMエンジンを通過させることで、高速タイピング時におけるキーの追い越し(例: sh ➔ hs)を完全に遮断します。