Maison > Article > développement back-end > Comment créer des raccourcis clavier globaux dans les applications Go ?
Comment implémenter un raccourci clavier global dans Go ?
Introduction
La création de raccourcis clavier globaux est une technique utile lors du développement d’applications multiplateformes dans Go. Cela vous permet de définir des raccourcis clavier qui peuvent être déclenchés quelle que soit l'application qui a le focus. Cependant, il n’existe actuellement aucune bibliothèque standard pour cela dans Go. Cet article explique comment réaliser une implémentation globale des raccourcis clavier pour différentes plates-formes.
Windows
Pour Windows, nous utilisons la bibliothèque user32.dll pour enregistrer et écouter les événements de raccourci clavier. Plus précisément, nous utilisons RegisterHotkey() pour enregistrer nos raccourcis clavier et PeekMessage() pour surveiller leur activation. Voici un exemple d'extrait de code :
import ( "fmt" "syscall" "time" "unsafe" ) const ( ModAlt = 1 << iota ModCtrl ModShift ModWin ) type Hotkey struct { Id int Modifiers int KeyCode int } func main() { user32 := syscall.MustLoadDLL("user32") // Register a hotkey: ALT+CTRL+O, with ID 1 reghotkey := user32.MustFindProc("RegisterHotKey") r1, _, err := reghotkey.Call(0, uintptr(1), uintptr(ModAlt+ModCtrl), uintptr('O')) if r1 == 1 { fmt.Println("Registered Hotkey[Id: 1, Alt+Ctrl+O]") } else { fmt.Println("Failed to register Hotkey[Id: 1, Alt+Ctrl+O]:", err) } // Monitor hotkey events peekmsg := user32.MustFindProc("PeekMessageW") for { var msg &MSG{} peekmsg.Call(uintptr(unsafe.Pointer(&msg)), 0, 0, 0, 1) // Check if a registered hotkey was pressed if id := msg.WPARAM; id != 0 { fmt.Println("Hotkey pressed:", id, getHotkeyById(id)) } time.Sleep(time.Millisecond * 50) } }
Dans cet exemple, nous enregistrons le raccourci clavier ALT CTRL O et surveillons son activation. Lorsqu'on appuie dessus, il imprime « Hotkey enfoncé : » suivi de l'ID et de la description du raccourci clavier de la console.
Autres plates-formes
Des approches similaires peuvent être utilisées pour d'autres les plateformes également. Pour Linux, on peut utiliser la fonction XGrabKey() de Xlib. Pour macOS, on peut utiliser addGlobalMonitorForEventsMatchingMask(). Il est recommandé d'explorer les ressources et la documentation spécifiques à la plate-forme.
Conseils supplémentaires
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!