2017-06-18 38 views
2

我現在正在Hammerspoon上編寫我自己的init.lua,並且希望將我的一些kews重新映射到其他人。具體來說,我想在我的macOS上切換反斜槓鍵和刪除鍵。但是,雖然簡單的刪除和反斜槓可以正常工作,但是一旦我將應用程序焦點切換到另一個,然後鍵入某些內容,然後返回到原始應用程序,刪除鍵(實際上是反轉鍵)工作時間更長相反,它會在中止焦點之前刪除應用程序中的字符(即倒數第二個焦點應用程序)。但是,如果我在那裏鍵入某個內容,然後再次嘗試刪除它,則突然刪除可以再次正常工作而不會出現任何問題一旦應用程序焦點切換到另一個,Command + DELETE不再適用於Hammerspoon

我想知道爲什麼它突然不工作;但它可能是一個錯誤。無論如何,這裏是我的init.lua切換刪除和反斜槓。

local VK_BACKSLASH = 0x2a 
local VK_DELETE = 0x33 
keyEventtap = hs.eventtap.new({ 
    hs.eventtap.event.types.keyDown 
}, function(event) 
    local bundleId = string.lower(hs.application.frontmostApplication():bundleID()) 
    local keyCode = event:getKeyCode() 
    local flags = event:getFlags() 

    if keyCode == VK_DELETE then 
     if flagsMatches(flags, {'shift'}) then 
      event:setKeyCode(VK_BACKSLASH) 
      event:setFlags({shift=true}) 
     else 
      event:setKeyCode(VK_BACKSLASH) 
     end 
    elseif keyCode == VK_BACKSLASH then 
     event:setKeyCode(VK_DELETE) 
    end 
end) 

keyEventtap:start() 

我在這裏錯過什麼......?

回答

0

您必須添加keyUpflagsChanged事件才能監視事件點擊。因此,而不是:

keyEventtap = hs.eventtap.new({ 
    hs.eventtap.event.types.keyDown 
}, function(event) 

做以下修改:

keyEventtap = hs.eventtap.new({ 
    hs.eventtap.event.types.keyDown, 
    hs.eventtap.event.types.flagsChanged, 
    hs.eventtap.event.types.keyUp 
}, function(event) 

至少現在,這是爲我工作。

相關問題