39 lines
711 B
Go
39 lines
711 B
Go
package hotkey
|
|
|
|
import (
|
|
"golang.design/x/hotkey"
|
|
"log"
|
|
)
|
|
|
|
func Register(mod []hotkey.Modifier, key hotkey.Key, keyDown func(), keyUp func()) *hotkey.Hotkey {
|
|
hk := hotkey.New(mod, key)
|
|
go func() {
|
|
defer func() {
|
|
hk.Unregister()
|
|
log.Printf("hotkey: %v is unregistered\n", hk)
|
|
}()
|
|
err := hk.Register()
|
|
if err != nil {
|
|
log.Printf("hotkey: failed to register hotkey: %v", err)
|
|
}
|
|
|
|
log.Printf("hotkey: %v is registered\n", hk)
|
|
|
|
for {
|
|
select {
|
|
case <-hk.Keydown():
|
|
log.Printf("hotkey: %v is down\n", hk)
|
|
if keyDown != nil {
|
|
keyDown()
|
|
}
|
|
case <-hk.Keyup():
|
|
log.Printf("hotkey: %v is up\n", hk)
|
|
if keyUp != nil {
|
|
keyUp()
|
|
}
|
|
}
|
|
}
|
|
}()
|
|
return hk
|
|
}
|