亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Robotgo 不能監聽多個事件

Robotgo 不能監聽多個事件

Go
aluckdog 2022-06-01 17:26:33
我正在使用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)

            }

        }

    }

}


查看完整回答
反對 回復 2022-06-01
  • 1 回答
  • 0 關注
  • 176 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號