Maison >développement back-end >Golang >Comment créer un raccourci clavier global dans Go (Golang) ?
Comment implémenter un raccourci clavier global dans Go (Golang) ?
Créer un raccourci clavier global qui fonctionne sur toutes les plates-formes dans Go (Golang) implique accéder aux appels système. Voici comment y parvenir :
1. Charger des bibliothèques spécifiques au système d'exploitation
Le package syscall de Go vous permet d'effectuer des appels système. Cependant, l'interface varie selon les systèmes d'exploitation. Pour accéder à la documentation spécifique à la plate-forme, exécutez :
godoc -http=:6060
Naviguez vers http://localhost:6060/pkg/syscall/ pour un aperçu détaillé.
2. Définir le type de raccourci clavier
Créez un type pour représenter les raccourcis clavier avec un identifiant unique, des modificateurs (Alt, Ctrl, etc.) et un code clé.
type Hotkey struct { Id int // Unique id Modifiers int // Mask of modifiers KeyCode int // Key code, e.g. 'A' }
3. Chargez User32.dll sous Windows
Pour la prise en charge de Windows, chargez user32.dll :
user32 := syscall.MustLoadDLL("user32") defer user32.Release()
4. Enregistrez les raccourcis clavier
Recherchez et appelez la fonction RegisterHotkey() à partir de user32.dll pour enregistrer vos raccourcis clavier. Par exemple :
// Hotkeys to listen to: keys := map[int16]*Hotkey{ 1: &Hotkey{1, ModAlt + ModCtrl, 'O'}, // ALT+CTRL+O 2: &Hotkey{2, ModAlt + ModShift, 'M'}, // ALT+SHIFT+M 3: &Hotkey{3, ModAlt + ModCtrl, 'X'}, // ALT+CTRL+X } // Register hotkeys: for _, v := range keys { r1, _, err := 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, ", error:", err) } }
5. Écoutez les événements de raccourci clavier
Recherchez et appelez la fonction PeekMessage() à partir de user32.dll pour écouter les pressions sur les touches globales.
peekmsg := user32.MustFindProc("PeekMessageW")
6. Gérer les événements de raccourci clavier
Créez une boucle pour vérifier en permanence les événements de raccourci clavier. Si un raccourci clavier enregistré est enfoncé, imprimez ses détails sur la console.
for { var msg = &MSG{} peekmsg.Call(uintptr(unsafe.Pointer(msg)), 0, 0, 0, 1) // Registered id is in the WPARAM field: if id := msg.WPARAM; id != 0 { fmt.Println("Hotkey pressed:", keys[id]) if id == 3 { // CTRL+ALT+X = Exit fmt.Println("CTRL+ALT+X pressed, goodbye...") return } } time.Sleep(time.Millisecond * 50) }
En suivant ces étapes, vous pouvez créer un raccourci clavier global qui fonctionne de manière cohérente sur différents systèmes d'exploitation dans Go (Golang).
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!