Julia 测试中是否按了某个键

Julia 测试中是否按了某个键,julia,shortcut,keyevent,Julia,Shortcut,Keyevent,我想使用键盘快捷键Ctrl+Shift+H启动julia脚本 脚本启动时,仍可能按下键Ctrl和Shift(取决于我取下手指的速度) 我希望确保在执行脚本的其余部分之前释放这两个键。为此,我需要测试是否按下了该键 请注意,释放按键时触发事件是不够的,因为脚本启动时可能没有按下按键 我在Julia中找到了几个用于检测何时按下某个键的引用,但我没有找到一个用于测试当前是否按下某个键的引用 你知道我怎么做吗 这里有一个简单的例子来说明我为什么要这样做。 您可以找到cnee格式的文件,该文件允许在具有焦

我想使用键盘快捷键
Ctrl+Shift+H
启动julia脚本

脚本启动时,仍可能按下键
Ctrl
Shift
(取决于我取下手指的速度)

我希望确保在执行脚本的其余部分之前释放这两个键。为此,我需要测试是否按下了该键

请注意,释放按键时触发事件是不够的,因为脚本启动时可能没有按下按键

我在Julia中找到了几个用于检测何时按下某个键的引用,但我没有找到一个用于测试当前是否按下某个键的引用

你知道我怎么做吗

这里有一个简单的例子来说明我为什么要这样做。 您可以找到cnee格式的文件,该文件允许在具有焦点的窗口中写入“azerty”。如果在终端中键入以下命令,则会按预期在其中键入“azerty”:

cnee --replay  -sp 0 -f ./recorded_macro.xnl
为了在任何窗口(不仅仅是终端)中写入“azerty”,我创建了一个执行此命令的键盘快捷键
Ctrl+Shift+H
。如果我使用快捷键,则在执行命令时可能会按下键
Ctrl
Shift
(除非我很快使用快捷键),而不是键入“azerty”,具有焦点的窗口将获得
Ctrl+Shift+a
Ctrl+Shift+z
Ctrl+Shift+e
Ctrl+Shift+r
Ctrl+Shift+t
Ctrl+Shift+y
将触发窗口中的操作,但不会写入“azerty”


因此,我想用这个快捷方式启动一个python脚本,它在执行
cnee
命令之前等待
Ctrl
Shift
被取消按下。请再次注意,等待使用侦听器释放按键不是一个解决方案,因为如果我快速使用快捷方式,则在python脚本开始时可能不会按下按键
Ctrl
Shift
(因此,在执行我不想要的cnee命令之前,我必须再次按下
Ctrl
Shift
).

以下Gtk程序将检测在程序启动或获得焦点之前已按下的shift、control和alt的释放。请注意,我的键盘似乎并不总是检测到多次击键,因此可能根据您的键盘,您可能需要检测其中一次释放

using Gtk

function keypresswindow()
    txt = "Press and Release a Key"
    state = ""
    win = GtkWindow("Key Release Test", 500, 30) |> (GtkFrame() |> ((vbox = GtkBox(:v)) |> (lab = GtkLabel(txt))))
    function keyreleasecall(w, event)
        event.keyval == 65505 && (state *= "SHIFT ")
        event.keyval == 65507 && (state *= "CONTROL ")
        event.keyval == 65513 && (state *= "ALT ")
        set_gtk_property!(lab, :label, "You have released: $state")
    end
    signal_connect(keyreleasecall, win, "key-release-event")

    cond = Condition()
    endit(w) = notify(cond)
    signal_connect(endit, win, :destroy)
    showall(win)
    wait(cond)
end

keypresswindow()