code: func (ev *EventKey) Name() string {
  	s := ""
  	m := []string{}
  	if ev.mod&ModShift != 0 {
  		m = append(m, "Shift")
  	}
  	if ev.mod&ModAlt != 0 {
  		m = append(m, "Alt")
  	}
  	if ev.mod&ModMeta != 0 {
  		m = append(m, "Meta")
  	}
  	if ev.mod&ModCtrl != 0 {
  		m = append(m, "Ctrl")
  	}
  
  	ok := false
  	if s, ok = KeyNames[ev.key]; !ok {
  		if ev.key == KeyRune {
  			s = "Rune[" + string(ev.ch) + "]"
  		} else {
  			s = fmt.Sprintf("Key[%d,%d]", ev.key, int(ev.ch))
  		}
  	}
  	if len(m) != 0 {
  		if ev.mod&ModCtrl != 0 && strings.HasPrefix(s, "Ctrl-") {
  			s = s[5:]
  		}
  		return fmt.Sprintf("%s+%s", strings.Join(m, "+"), s)
  	}
  	return s
  }
docs: // Name returns a printable value or the key stroke.  This can be used
  // when printing the event, for example.