Documentation
¶
Overview ¶
Package hotkey provides the basic facility to register a system-level global hotkey shortcut so that an application can be notified if a user triggers the desired hotkey. A hotkey must be a combination of modifiers and a single key.
Note platform specific details:
On macOS, due to the OS restriction (other platforms does not have this restriction), hotkey events must be handled on the "main thread". Therefore, in order to use this package properly, one must start an OS main event loop on the main thread, For self-contained applications, using mainthread package. is possible. It is uncessary or applications based on other GUI frameworks, such as fyne, ebiten, or Gio. See the "examples" for more examples.
On Linux (X11), when AutoRepeat is enabled in the X server, the Keyup is triggered automatically and continuously as Keydown continues.
On Linux (X11), some keys may be mapped to multiple Mod keys. To correctly register the key combination, one must use the correct underlying keycode combination. For example, a regular Ctrl+Alt+S might be registered as: Ctrl+Mod2+Mod4+S.
If this package did not include a desired key, one can always provide the keycode to the API. For example, if a key code is 0x15, then the corresponding key is `hotkey.Key(0x15)`.
THe following is a minimum example:
package main import ( "log" "golang.design/x/hotkey" "golang.design/x/hotkey/mainthread" ) func main() { mainthread.Init(fn) } // Not necessary when use in Fyne, Ebiten or Gio. func fn() { hk := hotkey.New([]hotkey.Modifier{hotkey.ModCtrl, hotkey.ModShift}, hotkey.KeyS) err := hk.Register() if err != nil { log.Fatalf("hotkey: failed to register hotkey: %v", err) } log.Printf("hotkey: %v is registered\n", hk) <-hk.Keydown() log.Printf("hotkey: %v is down\n", hk) <-hk.Keyup() log.Printf("hotkey: %v is up\n", hk) hk.Unregister() log.Printf("hotkey: %v is unregistered\n", hk) }
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func SetSplitStr ¶
func SetSplitStr(str string)
func Unregister ¶
Types ¶
type Hotkey ¶
type Hotkey struct { Signal string Callbacks []func() // contains filtered or unexported fields }
Hotkey is a combination of modifiers and key to trigger an event
type Key ¶
type Key uint16
Key represents a key. https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes