Bagaimana untuk Melaksanakan Hotkey Global dalam Go?
Pengenalan
Mencipta hotkey global ialah teknik yang berguna apabila membangunkan aplikasi merentas platform dalam Go. Ini membolehkan anda menentukan pintasan hotkey yang boleh dicetuskan tanpa mengira aplikasi mana yang mempunyai fokus. Walau bagaimanapun, pada masa ini tiada pustaka standard untuk ini dalam Go. Artikel ini meneroka cara untuk mencapai pelaksanaan hotkey global untuk platform yang berbeza.
Windows
Untuk Windows, kami menggunakan perpustakaan user32.dll untuk mendaftar dan mendengar acara hotkey. Khususnya, kami menggunakan RegisterHotkey() untuk mendaftarkan hotkey kami dan PeekMessage() untuk memantau pengaktifannya. Berikut ialah coretan kod contoh:
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) } }
Dalam contoh ini, kami mendaftarkan kekunci pintas ALT CTRL O dan memantau pengaktifannya. Apabila ditekan, ia mencetak "Kekunci Panas ditekan:" diikuti dengan ID dan perihalan kekunci pintas pada konsol.
Platform Lain
Pendekatan yang serupa boleh digunakan untuk yang lain platform juga. Untuk Linux, seseorang boleh menggunakan fungsi XGrabKey() Xlib. Untuk macOS, seseorang boleh menggunakan addGlobalMonitorForEventsMatchingMask(). Adalah disyorkan untuk meneroka sumber dan dokumentasi khusus platform untuk ini.
Petua Tambahan
Atas ialah kandungan terperinci Bagaimana untuk Mencipta Kekunci Panas Global dalam Aplikasi Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!