SandS (Space and Shift) を使おう!【keyhac 編】


日本語キーボードドライバで英語配列を使う【keyhac 編】」に続いて、keyhacSands の設定を行ってみる。

そもそも SandS とは何かというと、親指シフト配列キーボードの特徴のうち、「ホームポジションに手を置いたときに親指の位置にあるキーを修飾キーとして使う」機能だけを通常の JIS(あるいは ASCII)配列のキーボードで実現するものだ。

具体的には、Space キーを Shift キーの代わりとして使うことである。

  1. Space キー単体を押したときはスペースを表示し、
  2. 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, "" )

この設定によって、

  1. 左 Win キー単体を押したときは 英数 キーを押したときと同じ動作をし、
  2. 左 Win + H J K L キーを押したときは、それぞれ にカーソル移動する。

という機能が実現できる。Win キーと組み合わせたショートカットを使いたいときは、まだ残っている 右Win キーを使えばいいのだが、最終行のように個別に設定を割り当ててもいいだろう。


  1. マニュアルにはワンショットモディファイア【one shot modifier】とある。 
  2. 英字配列キーボードには存在しないのだが、ATOK においては英語入力モードと切り替えるための重要なキーなのだ。 

2 thoughts on “SandS (Space and Shift) を使おう!【keyhac 編】

  1. Pingback: 人は一生に何回キーを叩くんだろう? | blog.remora.cx

  2. Pingback: Python設定ファイルを読み込んでキーボード操作をカスタマイズ『Keyhac』 | Macの手書き説明書

コメントを残す