我正在使用robotgo來收聽鍵盤事件。我想為每個按下的鍵添加我自己的功能,但我無法讓它觸發超過 1 個鍵。所以主函數看起來像這樣:func main() { go addKeyListen("l") go addKeyListen("k")}包裝函數:func addKeyListen(key string) { for { if ok := robotgo.AddEvent(key); ok { fmt.Println("Pressed "+key) } }}在按下L所有我得到的是Pressed l和多次但我可以用一個標志來解決這個問題。按下K不打印任何內容。嘗試了以下方法:for { if okA := robotgo.AddEvent("k"); okA { fmt.Println("Pressed k") } if okB := robotgo.AddEvent("l"); okB { fmt.Println("Pressed l") }}首先按 K 然后按 L,然后一遍又一遍地重復此操作似乎會觸發事件,但如果我更改按鍵順序則不會。所以如果我先從 L 然后 K 開始,什么都不會發生。PD:在 Windows 10 上使用 MinGW64 版本 x86_64-8.1.0-posix-seh-rt_v6-rev0 進行測試還嘗試了從 4 開始的不同版本的 MinGW,結果相同......
1 回答

搖曳的薔薇
TA貢獻1793條經驗 獲得超6個贊
嘗試這樣的事情,基于它使用的robotgo和lib,在mac 10.14上測試:
package main
import (
"fmt"
"github.com/go-vgo/robotgo"
gohook "github.com/robotn/gohook"
)
func main() {
eventHook := robotgo.Start()
var e gohook.Event
var key string
for e = range eventHook {
if e.Kind == gohook.KeyDown {
key = string(e.Keychar)
switch key {
case "k":
fmt.Println("pressed k")
case "l":
fmt.Println("pressed l")
default:
fmt.Printf("pressed %s \n", key)
}
}
}
}
- 1 回答
- 0 關注
- 176 瀏覽
添加回答
舉報
0/150
提交
取消