Ich habe meine CAPSLOCK an F18 (Karabiner) gebunden, um als eine Modifizierungsschlüssel zu fungieren. Ich versuche CAPSLOCK + h, j, k, l zu simulieren, um als VIM-Bewegungsschlüssel zu fungieren. Alles funktioniert, aber es gibt ein Problem mit der Verzögerung beim Wiederholen. Das heißt, es ist sehr langsam, wenn ich die CAPSLOCK + h drücke, was die Taste "< -" wiederholt drücken sollte, aber es ist sehr verzögert und sendet nur eine pro Sekunde. Irgendwelche Ideen, warum das passiert? Mein init.lua
ist unten:Key Repeats sind in meinem Hammerspoon Skript verzögert
-- A global variable for the Hyper Mode
k = hs.hotkey.modal.new({}, "F17")
-- Enter Hyper Mode when F18 (Hyper/Capslock) is pressed
pressedF18 = function()
k.triggered = false
k.modifier = false
k:enter()
trigger_modifier = function()
k.modifier = true
end
-- Only trigger as modifier if held longer than thisj
hs.timer.doAfter(0.35, trigger_modifier)
end
-- Arrow keys
k:bind({}, 'h', function()
hs.eventtap.keyStroke({}, 'Left')
k.triggered = true
end)
k:bind({}, 'j', function()
hs.eventtap.keyStroke({}, 'Down')
k.triggered = true
end)
k:bind({}, 'k', function()
hs.eventtap.keyStroke({}, 'Up')
k.triggered = true
end)
k:bind({}, 'l', function()
hs.eventtap.keyStroke({}, 'Right')
k.triggered = true
end)
-- Leave Hyper Mode when F18 (Hyper/Capslock) is pressed,
-- send ESCAPE if no other keys are pressed.
releasedF18 = function()
k:exit()
if not k.triggered then
-- If hotkey held longer than this amount of time
-- let it remain as modifier and don't send ESCAPE
if not k.modifier then
hs.eventtap.keyStroke({}, 'ESCAPE')
else
print("Modifier detected")
end
end
end
-- Bind the Hyper key
f18 = hs.hotkey.bind({}, 'F18', pressedF18, releasedF18)
Ja, das jetzt die richtige Antwort ist - hs.eventtap.keyStroke() ist eigentlich nur das gleiche newKeyEvent() Paar mit einem hs.timer.usleep() zwischen. Wir haben den kurzen Schlaf hinzugefügt, um zu versuchen, die Schlüsselereignisse zu vermeiden, die nicht in der richtigen Reihenfolge ankommen. Die nächste Version wird eine konfigurierbare Verzögerung hinzufügen, so dass Sie sie ausschalten können, wenn Sie wollen :) –
Excellent, danke für die Info @ChrisJones –