「日本語キーボードドライバで英語配列を使う【keyhac 編】」に続いて、keyhac で Sands の設定を行ってみる。
そもそも SandS とは何かというと、親指シフト配列キーボードの特徴のうち、「ホームポジションに手を置いたときに親指の位置にあるキーを修飾キーとして使う」機能だけを通常の JIS(あるいは ASCII)配列のキーボードで実現するものだ。
具体的には、Space キーを Shift キーの代わりとして使うことである。
- Space キー単体を押したときはスペースを表示し、
- Space キーを押しながら 4 キーを押すと、「$」記号を表示する。
こんな機能が実現できる。タイプするときにほとんど働いていない親指を使うことで、Shift Control Tab Enter などの打鍵で忙しい小指を休ませることが狙いだ。
ただ、Space キーを押して一定時間(数十~数百ミリ秒)を上記 1. 2. の判定に使うので、単にスペースを入力したいときは僅かに待つことになる。そこは慣れるしかない。
では実際の設定方法を載せておく。……そのまま引用しただけだけども。
keyhac で SandS – Wisteria::Diary
http://d.hatena.ne.jp/mobitan/20081128/1227792452
# config.py from keyhac import * def configure(keymap): keymap_global = keymap.defineWindowKeymap() keymap.replaceKey("Space", "RShift") keymap_global["O-RShift"] = "Space"
"O-"
文字列を使うことで通常のキーを修飾キーと化す1ことが出来る。
この機能は SandS 以外にも使える。例えば、僕は英字配列の HHK を使っているのだが左右の Win キーはまず使わない。
そこでこのキーを単体で押したときは 英数 キー2と見なし、他のキーと一緒に押した場合に特殊な動作をするように定義しよう。
from keyhac import * def configure( km ): kmg = keymap.defineWindowKeymap() # ユーザモディファイアキーの定義 km.defineModifier( 235, "User0" ) # LWin => 英数 # O-LWin => U0 km.replaceKey( "LWin", 235 ) kmg[ "O-(235)" ] = "(240)" # キーコード240が英数キーを表しているのだが、 # これはキーボードによって違うかも知れない。 # Vim 風カーソル移動 kmg[ "U0-H" ] = "Left" kmg[ "U0-J" ] = "Down" kmg[ "U0-K" ] = "Up" kmg[ "U0-L" ] = "Right" # Control + LWin + E でエクスプローラを起動する # (元来は Win + E の機能) kmg[ "C-U0-E" ] = km.command_ShellExecute( None, None, u"explorer.exe", None, "" )
この設定によって、
- 左 Win キー単体を押したときは 英数 キーを押したときと同じ動作をし、
- 左 Win + H J K L キーを押したときは、それぞれ ← ↓ ↑ → にカーソル移動する。
という機能が実現できる。Win キーと組み合わせたショートカットを使いたいときは、まだ残っている 右Win キーを使えばいいのだが、最終行のように個別に設定を割り当ててもいいだろう。
Pingback: 人は一生に何回キーを叩くんだろう? | blog.delphinus.dev
Pingback: Python設定ファイルを読み込んでキーボード操作をカスタマイズ『Keyhac』 | Macの手書き説明書