首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一旦应用程序焦点切换到另一个应用程序,Command+DELETE将不再在Hammerspoon上工作

一旦应用程序焦点切换到另一个应用程序,Command+DELETE将不再在Hammerspoon上工作
EN

Stack Overflow用户
提问于 2017-06-19 04:23:12
回答 1查看 90关注 0票数 2

我现在正在Hammerspoon上编写我自己的init.lua,并希望将我的一些kews重新映射到其他kews。具体来说,我想在我的macOS上切换反斜杠和delete键。

然而,虽然简单的删除和反斜杠工作正常,但一旦我将应用程序焦点切换到另一个,在那里键入一些内容,并返回到原始应用程序,删除键(实际上是我切换它时的反斜杠键)变得更有效;相反,它会在中止焦点(即倒数第二个焦点的应用程序)之前删除应用程序中的字符。但是如果我在那里输入一些东西,然后再次尝试删除它,突然删除工作再次没有任何问题。

我想知道为什么它突然不工作了;尽管它可能是一个bug。不管怎样,这是我的init.lua,用来切换删除和反斜杠。

代码语言:javascript
复制
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()

我错过了什么...?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-20 23:00:04

您必须添加keyUpflagsChanged事件才能监控事件分接。因此,不是:

代码语言:javascript
复制
keyEventtap = hs.eventtap.new({
    hs.eventtap.event.types.keyDown
}, function(event)

更改为以下内容:

代码语言:javascript
复制
keyEventtap = hs.eventtap.new({
    hs.eventtap.event.types.keyDown,
    hs.eventtap.event.types.flagsChanged,
    hs.eventtap.event.types.keyUp
}, function(event)

至少现在这对我来说是有效的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44619207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档