一段时间后如何停止等待按键

I use this code in my project, but keyboard.GetSingleKey() waiting keystroke. How to make the function not wait for a keypress and return nil (for example, after 1 second)?

package main

import (
    "fmt"
    "github.com/eiannone/keyboard"
)
func main() {
    char, _, err := keyboard.GetSingleKey()
    if (err != nil) {
         panic(err)
    }
    fmt.Printf("You pressed: %q
", char)
}

If key was not pressed output "Key was not pressed",but in another case output "You pressed: " and key name

func getKeyTimeout(tm time.Duration) (ch rune, err error) {
if err = keyboard.Open(); err != nil {
    return
}
defer keyboard.Close()

var (
    chChan  = make(chan rune, 1)
    errChan = make(chan error, 1)
)

go func(chChan chan<- rune, errChan chan<- error) {
    ch, _, err := keyboard.GetSingleKey()
    if err != nil {
        errChan <- err
        return
    }
    chChan <- ch
}(chChan, errChan)

select {
case <-time.After(tm):
    return 0, err
case ch = <-chChan:
case err = <-errChan:
}

return
}

ch, err := tools.GetKey(time.Millisecond * n)
if err != nil {
    panic(err)
}
if ch != rune(0) {
    fmt.Printf("You pressed: %q
", ch)
} else {
      fmt.Printf("Key was not pressed")
}