Hammerspoon で再読みこみしなきゃいけないわけがわかったかも

2018年11月25日

 Hammerspoon で SandS という記事で、
「しばらく使っていると、スクリプトがまったく効かくなって、リロードしなくちゃならなくなる」
 というようなことを書いた。
 原因がやっとわかった。
 英語で書いてある Hammerspoon のサイトを、Chrome の翻訳機能であらためて読んでみたら、オブジェクトかなんかのライフサイクルについて書いてあったわ。
 
Getting Started


スポンサード リンク

 これによると、eventtap.event をグローバル変数にして実行すればいいみたい。
 そういえば、参考にさせていただいたサイトではよくやってた。
 つーことであらためて SandS の、init.lua を書き直してみた。
 

init.lua


local spaceOn = false
local shiftOn = false

local function flagCheck(flag)
local mods = {'fn', 'cmd', 'ctrl', 'alt', 'shift'}
local modifier = false
for i, value in ipairs(mods) do
if flag[value] then modifier = true end
end
return modifier
end

local function insertSpace()
hs.eventtap.keyStroke({}, "space", 5000)
end

local function sandsEvent(event)
local c = event:getKeyCode()
local f = event:getFlags()
if event:getType() == hs.eventtap.event.types.keyDown then
if c == 49 then
if flagCheck(f) == false then
if spaceOn == false and shiftOn == false then
spaceOn = true
event:setKeyCode(-1)
else
spaceOn = false
shiftOn = false
end
end
elseif spaceOn and c ~= 49
if flagCheck(f) == false then
shiftOn = true
event:setFlags({shift=true})
end
end
elseif event:getType() == hs.eventtap.event.types.keyUp then
if c == 49 and flagCheck(f) == false then
if spaceOn and shiftOn == false then
insertSpace()
else
spaceOn = false
shiftOn = false
end
end
end
end
eventtap = hs.eventtap.new({hs.eventtap.event.types.keyDown, hs.eventtap.event.types.keyUp}, sandsEvent)
eventtap:start()

 参考にさせていただいたのは、こちらのサイトです。
 
 macOS SierraにアップデートしてHammerspoonでCommandキーにかなと英数を割り当てた | mizoguche.info
 
 これで 2、3 日テストしてみるつもりだけど、感覚的には大丈夫そう。

スポンサードリンク