2

私は今init.luaHammerspoon で自分のキューを書いていて、私のキューのいくつかを他のキューに再マッピングしたいと思っています。具体的には、macOS でバックスラッシュ キーと削除キーを切り替えたいと考えています。

ただし、単純な削除とバックスラッシュは適切に機能しますが、アプリのフォーカスを別のアプリに切り替えてそこに何かを入力し、元のアプリに戻ると、削除キー (実際には切り替えたときのバックスラッシュ キー) が機能しなくなります。代わりに、フォーカスを中止する前にアプリ内の文字を削除します (つまり、最後から 2 番目にフォーカスされたアプリ)。しかし、そこに何かを入力してからもう一度削除しようとすると、突然削除が問題なく再び機能します。

なぜ突然機能しなくなったのだろうか。ただし、バグかもしれません。とにかく、ここで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()

ここで何が欠けていますか...?

4

1 に答える 1