Go语言提供了一种监听全局键盘输入的方法吗?本质上就像一个键盘记录器(但这不是我的目的),如果焦点在它自己的上下文之外,它就会捕获输入。理想情况下,它将是跨平台的,但如果不是Windows,只有将工作以及。我的最终目标是一个跨平台的工具,不需要运行时,允许你在应用程序中注册全局键盘快捷方式(主要控制谷歌音乐)。这将通过让Chrome扩展连接到socket.ioGolang应用程序中的www.example.com连接,然后让应用程序向扩展提供命令来完成。
k4aesqcs1#
捕获应用程序上下文之外的键盘输入是特定于平台的,Go语言没有绑定到这些API。Mac OS X有一个名为event taps的Objective-C API。Windows有C++函数RegisterHotKey,尽管我对Windows API不太熟悉。也许有一些工具包/框架可以让你跨平台完成这一任务,但目前在Go语言中还没有,如果你在C语言中找到了,你可以使用cgo将其绑定到Go语言中。也许你把事情弄得太复杂了?有一个here页面描述了为Chrome扩展添加键盘快捷键。
qyswt5oh2#
我写了一篇关于如何在golang创建键盘记录器的博客文章。我希望它能对你有所帮助。检查库go-hook第一个首先初始化一个缓冲通道来存储键盘事件,然后使用keyboard.Install()安装底层键盘钩子。延迟卸载钩子,以便在函数返回时卸载它。然后在一个无限for循环中使用GetForegroundWindow()获取前台窗口,当按下某个键时,将该键发送到key_out通道,将窗口名称发送到window_out通道。
2条答案
按热度按时间k4aesqcs1#
捕获应用程序上下文之外的键盘输入是特定于平台的,Go语言没有绑定到这些API。
Mac OS X有一个名为event taps的Objective-C API。Windows有C++函数RegisterHotKey,尽管我对Windows API不太熟悉。
也许有一些工具包/框架可以让你跨平台完成这一任务,但目前在Go语言中还没有,如果你在C语言中找到了,你可以使用cgo将其绑定到Go语言中。
也许你把事情弄得太复杂了?有一个here页面描述了为Chrome扩展添加键盘快捷键。
qyswt5oh2#
我写了一篇关于如何在golang创建键盘记录器的博客文章。我希望它能对你有所帮助。
检查库go-hook
第一个
首先初始化一个缓冲通道来存储键盘事件,然后使用keyboard.Install()安装底层键盘钩子。延迟卸载钩子,以便在函数返回时卸载它。然后在一个无限for循环中使用GetForegroundWindow()获取前台窗口,当按下某个键时,将该键发送到key_out通道,将窗口名称发送到window_out通道。