code: func (g *Grid) InputHandler() func(event *tcell.EventKey, setFocus func(p Primitive)) {
  	return g.WrapInputHandler(func(event *tcell.EventKey, setFocus func(p Primitive)) {
  		switch event.Key() {
  		case tcell.KeyRune:
  			switch event.Rune() {
  			case 'g':
  				g.rowOffset, g.columnOffset = 0, 0
  			case 'G':
  				g.rowOffset = math.MaxInt32
  			case 'j':
  				g.rowOffset++
  			case 'k':
  				g.rowOffset--
  			case 'h':
  				g.columnOffset--
  			case 'l':
  				g.columnOffset++
  			}
  		case tcell.KeyHome:
  			g.rowOffset, g.columnOffset = 0, 0
  		case tcell.KeyEnd:
  			g.rowOffset = math.MaxInt32
  		case tcell.KeyUp:
  			g.rowOffset--
  		case tcell.KeyDown:
  			g.rowOffset++
  		case tcell.KeyLeft:
  			g.columnOffset--
  		case tcell.KeyRight:
  			g.columnOffset++
  		}
  	})
  }
docs: // InputHandler returns the handler for this primitive.