一旦应用程序焦点切换到另一个,Command+DELETE 不再适用于 Hammerspoon
Command+DELETE no longer working on Hammerspoon once the app focus switches to another
我现在正在 Hammerspoon 上写我自己的 init.lua
,并且想将我的一些 kews 重新映射到其他人。具体来说,我想在我的 macOS 上切换反斜杠键和删除键。
然而,虽然简单的删除和反斜杠功能正常,但一旦我将我的应用程序焦点切换到另一个应用程序,在那里输入一些内容,然后返回到原始应用程序,删除键(实际上是我切换时的反斜杠键)工作时间更长;相反,它会在中止焦点(即倒数第二个焦点应用程序)之前删除应用程序中的字符。但是如果我在那里输入一些东西然后再次尝试删除它,突然删除又没有任何问题了。
不知为何突然不能用了;不过,这可能是一个错误。无论如何,这是我的 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()
我在这里错过了什么...?
您必须添加 keyUp
和 flagsChanged
事件来监控事件点击。所以,而不是:
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)
至少现在这对我有用。
我现在正在 Hammerspoon 上写我自己的 init.lua
,并且想将我的一些 kews 重新映射到其他人。具体来说,我想在我的 macOS 上切换反斜杠键和删除键。
然而,虽然简单的删除和反斜杠功能正常,但一旦我将我的应用程序焦点切换到另一个应用程序,在那里输入一些内容,然后返回到原始应用程序,删除键(实际上是我切换时的反斜杠键)工作时间更长;相反,它会在中止焦点(即倒数第二个焦点应用程序)之前删除应用程序中的字符。但是如果我在那里输入一些东西然后再次尝试删除它,突然删除又没有任何问题了。
不知为何突然不能用了;不过,这可能是一个错误。无论如何,这是我的 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()
我在这里错过了什么...?
您必须添加 keyUp
和 flagsChanged
事件来监控事件点击。所以,而不是:
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)
至少现在这对我有用。