Heim >Backend-Entwicklung >Golang >Wie implementiert man einen globalen Hotkey in Go?
Implementieren Sie einen globalen Hotkey in Go (golang)
Es ist möglich, einen plattformübergreifenden globalen Hotkey mithilfe von Aufrufen an native Betriebssystembindungen zu erstellen in Go.
Mac
Verwenden Sie addGlobalMonitorForEventsMatchingMask.
Linux
Verwenden Sie XGrabKey.
Windows
Verwenden Sie RegisterHotKey. Hier ist ein Beispiel in Go:
const ( ModAlt = 1 << iota ModCtrl ModShift ModWin ) type Hotkey struct { Id int Modifiers int KeyCode int } func main() { user32 := syscall.MustLoadDLL("user32") reghotkey := user32.MustFindProc("RegisterHotKey") keys := map[int16]*Hotkey{ 1: &Hotkey{1, ModAlt + ModCtrl, 'O'}, 2: &Hotkey{2, ModAlt + ModShift, 'M'}, 3: &Hotkey{3, ModAlt + ModCtrl, 'X'}, } for _, v := range keys { r1, _, _ := reghotkey.Call(0, uintptr(v.Id), uintptr(v.Modifiers), uintptr(v.KeyCode)) if r1 == 1 { fmt.Println("Registered", v) } else { fmt.Println("Failed to register", v) } } for { var msg = &MSG{} peekmsg := user32.MustFindProc("PeekMessageW") peekmsg.Call(uintptr(unsafe.Pointer(msg)), 0, 0, 0, 1) if id := msg.WPARAM; id != 0 { fmt.Println("Hotkey pressed:", keys[id]) if id == 3 { fmt.Println("CTRL+ALT+X pressed, goodbye...") return } } time.Sleep(time.Millisecond * 50) } }
Dadurch werden globale Hotkeys registriert und die Abhörschleife gibt den gedrückten Hotkey an die Konsole aus. Wenn STRG ALT X gedrückt wird, wird die Anwendung beendet.
Das obige ist der detaillierte Inhalt vonWie implementiert man einen globalen Hotkey in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!