いまさらだけど、Hammerspoon で SandS。2017年最終版

2018年1月6日

 前に Hammerspoon というアプリケーションで、スペースキーをシフトキーとして代用する SandS を実現するスクリプトを作って、このブログに掲載していたりした。

🔗 Hammerspoon で未熟 SandS

 しかしながら、SandS の挙動というのは、スペースキーを押しっぱなしの時はそのままカーソルを留まらせて、スペースを入力しない、というのが正しいらしい。
 おれがこしらえたスクリプトではそうならない。スペースを押しっぱなしだと、ちょっとした間を経たあと、スペースが連続されて入力されるようになっているのである。
 これ、直したいなと思いながらずっと放置していたんだけど、時間が取れたから直したよ。相変わらず未熟な感じだけど、ま、動くよ。


スポンサード リンク

 コードは以下の通り。
 
 🕸 init.lua (ホームフォルダの、.hammerspoon のなかにある)

 SandS を実現させるには以下のような状況に対応する必要があるのではないか、と愚考する。

⌨️ モディファイキー + スペース
 例えば [command] + [space] のような。こういう場合は、flagCheck() という関数でチェックして、モディファイキーとのコンビネーションなら、通常の動作とする。

⌨️ 単なるスペース入力
 spaceOn という変数を true にして、キーを下げた時はスペースを入力せずに待機し、キーが上げられた時にスペースを入力する。

⌨️ SandS スペース + 他のキー
 spaceOn が true になっていて、なおかつ他のキーが押された場合に、shiftOn という変数を true にする。その上で、モディファイキーShift をセットする。

⌨️ スペースキーの押しっぱなし
 スペースキーを押すと同時に、spaceStay という変数を true にする。スペースキーを押しっぱなしということは、スクリプトを二周、三周していくということなので、各変数の true 、false の状況によって if で挙動をふり分けて、スペースの入力を抑制している。

 どうもスッキリと分かりやすいコードにできない。
 でもまぁ直せて良かったな、とは思う。

スポンサードリンク