全局键盘输入Go

ih99xse1  于 2022-12-07  发布在  Go
关注(0)|答案(2)|浏览(288)

Go语言提供了一种监听全局键盘输入的方法吗?本质上就像一个键盘记录器(但这不是我的目的),如果焦点在它自己的上下文之外,它就会捕获输入。
理想情况下,它将是跨平台的,但如果不是Windows,只有将工作以及。
我的最终目标是一个跨平台的工具,不需要运行时,允许你在应用程序中注册全局键盘快捷方式(主要控制谷歌音乐)。这将通过让Chrome扩展连接到socket.ioGolang应用程序中的www.example.com连接,然后让应用程序向扩展提供命令来完成。

k4aesqcs

k4aesqcs1#

捕获应用程序上下文之外的键盘输入是特定于平台的,Go语言没有绑定到这些API。
Mac OS X有一个名为event taps的Objective-C API。Windows有C++函数RegisterHotKey,尽管我对Windows API不太熟悉。
也许有一些工具包/框架可以让你跨平台完成这一任务,但目前在Go语言中还没有,如果你在C语言中找到了,你可以使用cgo将其绑定到Go语言中。
也许你把事情弄得太复杂了?有一个here页面描述了为Chrome扩展添加键盘快捷键。

qyswt5oh

qyswt5oh2#

我写了一篇关于如何在golang创建键盘记录器的博客文章。我希望它能对你有所帮助。
检查库go-hook
第一个
首先初始化一个缓冲通道来存储键盘事件,然后使用keyboard.Install()安装底层键盘钩子。延迟卸载钩子,以便在函数返回时卸载它。然后在一个无限for循环中使用GetForegroundWindow()获取前台窗口,当按下某个键时,将该键发送到key_out通道,将窗口名称发送到window_out通道。

相关问题