SandS (Space and Shift) いろんなプラットフォームでのやり方

SKKを日本語入力として使っている利点の一つに、Linux、Windows、(キーボード付きAndroid、& 昔はMacも)、どのプラットフォームでも基本的にほぼ同じ操作感で入力がおこなえる、というのがある。

しかし、SKKは仕組み上Shiftキーを酷使する入力方法であり、親指シフト的な入力スタイルを使用しないとつらいというのも事実。 自分はSandSという仕組みでそれを回避している。

SandS (Space and Shift) とは、SpaceキーをShiftの代わりに使う方法で、単純にキーを入れかえるというわけではなく、 単体でSpaceを入力した場合にはSpaceとして機能し、他のキーとの組み合せで入力した場合はShiftになる、というようなものだ。

Macを使っていた時代からSandSを使用してきているので、いろいろなプラットフォームでの実現方法がたまってきているのでここで紹介しておく。

自作キーボード

キーボード自体でSandSをサポートしてしまうのが、プラットフォームのことを考えなくてよいので、最も効率的な方法だ。 いまどうなってるか追ってないので不明だが、数年前のQMKファームウェアでは、そのままでは実現できなかったのでパッチを書いた覚えがある。2 years agoらしい。

これでlayoutに LSFT_T(KC_SPC) と指定すればSandSになる。

ゲームとか、このままだと不都合がおこるアプリケーションも多いので、普通のスペースとして動作するレイヤーも作っておくと良い。

Linux

xcapeとxmodmapで実現できる。

# SandS
xmodmap -e 'keycode 255=space'
xmodmap -e 'keycode 65=Shift_L'
xcape -e '#65=space'

Windows

SKK日本語入力FEP自体にそのオプションがある。素晴しい。

Mac

Karabiner-Elementsで実現できる? 自分は普通のKarabinerのころまでしかMacを使っていなかったので不明。Karabinerのころは設定にSandSの項目があった。

追記@<2020-06-05 Fri 18:41>

Karabiner-Elementsでもできるとのこと!

Android

キーボード付きAndroid端末(Gemini PDA)での話。普通のスマホではSKKは使っていない。

SandSを使えるSKK実装を作ってくれてる人がいるが、そのままだと日本語入力中しかSandSが効かないので、適当に改変して常にSandSになるようにして使っている。

また、Termux上のEmacsなどでは、EmacsのSKKを使ったほうが自然な感じで入力できるので、変換機能はもたない、ただSandSのみを提供するキーボードを作って公開している。 https://github.com/typester/android-sands-keyboard

まとめ

慣れてしまうと手放せなくなるSandS、もともとはSKKで日本語を楽に入力するために導入したものだが、いまでは普通にプログラミング書くときすら必須に感じる。 慣れっておそろしい。

あまり使用人口は多くないはずだが、おそらく使っている人はみんな手放せないので、ここまでいろんなツールがメンテされているのだろうなぁ、と感じる。