diff --git a/input.go b/input.go index 58951ae..0624632 100644 --- a/input.go +++ b/input.go @@ -22,7 +22,13 @@ func (t *Terminal) TypedKey(e *fyne.KeyEvent) { return } - switch e.Name { + keyname := e.Name + + if remap, ok := t.keyRemap[e.Name]; ok { + keyname = remap + } + + switch keyname { case fyne.KeyReturn: _, _ = t.in.Write([]byte{'\r'}) case fyne.KeyEnter: diff --git a/term.go b/term.go index 227665e..d26e272 100644 --- a/term.go +++ b/term.go @@ -86,6 +86,7 @@ type Terminal struct { printer Printer cmd *exec.Cmd readWriterConfigurator ReadWriterConfigurator + keyRemap map[fyne.KeyName]fyne.KeyName } // Printer is used for spooling print data when its received. @@ -465,6 +466,7 @@ func New() *Terminal { t := &Terminal{ mouseCursor: desktop.DefaultCursor, highlightBitMask: 0x55, + keyRemap: map[fyne.KeyName]fyne.KeyName{}, } t.ExtendBaseWidget(t) t.content = widget2.NewTermGrid() @@ -548,3 +550,8 @@ type ReadWriterConfiguratorFunc func(r io.Reader, w io.WriteCloser) (io.Reader, func (m ReadWriterConfiguratorFunc) SetupReadWriter(r io.Reader, w io.WriteCloser) (io.Reader, io.WriteCloser) { return m(r, w) } + +// RemapKey remaps a key when processing input. +func (t *Terminal) RemapKey(key fyne.KeyName, remap fyne.KeyName) { + t.keyRemap[key] = remap +}