デスクでの姿勢を良くするためにデュアルキーボード環境を環境を構築しました。
が、Fnキー系のホットキーがキーボードをまたがると使えないため、自分の手になじんだキーマップが使えない、という問題にぶち当たりました。
これではよくない・・・ということで、対処法を考えて解決したので共有します。
前置き:本記事での「デュアルキーボード」の定義
本記事では、1台のPCに2台のキーボードを接続して使うスタイルをデュアルキーボードと呼びます。
デュアルキーボードにより、
- 両肩を必要以上に狭めなくて良い
- 結果、猫背や肩こりが改善する
という効果が期待する、とされています。
具体的な使い方は、
- 左手は、左側のキーボードの左半分を
- 右手は、右側のキーボードの右半分を
と使い分けることになります。
この使い分けによって発生するのが、次に解説する「Fnキー問題」です。
デュアルキーボードにおけるFnキー問題
Fnキー問題とは、Fnキーを利用したキー操作に制約が出る現象をいいます。
- Fnキーと、Fnキーと組み合わせて押すキーが左右のキーボードをまたいでいる場合
- 片手でFn、もう片手でそのキーを押しても、所定の動作にならない
というものです。
これが起こる理由は、Fnキーの信号はキーボードの内部で処理され、OSには認識されないから。ハードウェアの挙動のためしょうがありません。
Fnキー問題への対処法
諸悪の根源がFnキーがOSに認識されないことなら、OSには認識されるけど特に役割を持たない別のキーにFnキーの代わりをさせればいいのです(たとえばPauseキーとか)。
ということで、アプローチは以下のとおりです。
- キーボードの設定で、FnキーにPauseキーを割り当てる
- Pauseキ-をFnキーに見立てたホットキー設定を入れていく
それぞれ解説します。
ステップ1:FnキーにPauseキーを割り当てる
まず、FnキーにPauseキーを割り当てます。
たとえばぼくの使っているキーボードの場合、専用のキーマップアプリで変更可能です。
Fnキーの場所が動かせないキーボードの場合、ChangeKey等で別のきーにPauseキーを割り当ててください
これでFnキーの場所にあったキーを押したとき、OSに「Pause」が送られる準備が整いました。
ステップ2:AutoHotKeyでPause系列のホットキーを設定する
次は、PauseキーをFnキーに見立てたショートカットキーの定義をAutoHotKeyのスクリプトとして組んでいきます。
具体的には、jキーに右矢印を割り当てる場合、
Pause & j::Left
という感じで、Before/Afterを記述していきます。(具体的な文法はAutoHotKey Wikiのコンビネーションキーセクションを参考にしてください)
この書き方にすることで、ShiftやCtrlなどの修飾キーもちゃんと認識してくれます。たとえば、上記の例だとPause-Shift-jはShift-→と解釈されて、ちゃんと文字列選択しつつカーソルが動いてくれます。
なおこの設定を1行ずつ書くのはしんどいので、ExcelやGoogle Spreadsheetで文字列を構築する数式を作ってしまうのがおすすめです。
PCを複数台使っている場合、すべてのPCで同じスクリプトを動かしておきます
実際に使ってみて起こったこと
2台のPCで本構成をためしたところ、片方のPCだけでPauseキーが押されっぱなしになる現象が頻発しました。1日に3〜4回は起きています。
こちら、どうやらAutoHotKeyでは有名な事例だそう。そのため対処法もググるとたくさん出てききます。
そのなかで特に網羅的だったこちらのサイトを参考に、最も副作用が少なそうなスクリプトのExe化を適用しました。が、効果なし。
もう片方のPCでは対策適用前から一度も起きてないことから、おそらく環境起因なのだと思います。
対処はスクリプトの再読み込み。1日3〜4回なら許容範囲と割り切って運用しています。
まとめ:副作用はあるが些細なこと
Fnキーを使ったホットキーをデュアルキーボードで再現できました。
特定環境でPauseが押しっぱなしになる、的な細かい問題はありながらも、デュアルキーボードで肩が楽になることと比べると些細なことかなと思います。
本記事があなたの参考になれば幸いです。
以上「デュアルキーボードでFnキー系のショートカットやホットキーが使えない問題への対処法」でした。