func keyFuncInsertByte(this *Application) error {
	this.cursor.Insert(0)
	this.dirty = true
	return nil
}
keyFuncInsertByte inserts the zero where cursor exists.
package main
import (
	"fmt"
	"io"
	"os"
	"strconv"
	"github.com/zetamatta/binview/internal/encoding"
	"github.com/zetamatta/binview/internal/large"
	"github.com/zetamatta/binview/internal/nonblock"
)
const (
	_KEY_CTRL_A = "\x01"
	_KEY_CTRL_B = "\x02"
	_KEY_CTRL_E = "\x05"
	_KEY_CTRL_F = "\x06"
	_KEY_CTRL_L = "\x0C"
	_KEY_CTRL_N = "\x0E"
	_KEY_CTRL_P = "\x10"
	_KEY_DOWN   = "\x1B[B"
	_KEY_ESC    = "\x1B"
	_KEY_LEFT   = "\x1B[D"
	_KEY_RIGHT  = "\x1B[C"
	_KEY_UP     = "\x1B[A"
	_KEY_F2     = "\x1B[OQ"
	_KEY_DEL    = "\x1B[3~"
	_KEY_ALT_A  = "\x1Ba"
	_KEY_ALT_U  = "\x1Bu"
)
func keyFuncNext(this *Application) error {
	if err := this.cursor.Skip(LINE_SIZE); err != nil {
		if err != io.EOF {
			return err
		}
	}
	return nil
}
func keyFuncBackword(this *Application) error {
	this.cursor.Prev()
	return nil
}
func keyFuncPrevious(this *Application) error {
	this.cursor.Rewind(LINE_SIZE)
	return nil
}
func keyFuncQuit(this *Application) error {
	if yesNo(this.tty1, this.out, "Quit Sure ? [y/n]") {
		io.WriteString(this.out, "\n")
		return io.EOF
	}
	return nil
}
func keyFuncForward(this *Application) error {
	this.cursor.Next()
	return nil
}
func keyFuncGoBeginOfLine(this *Application) error {
	n := this.cursor.Address() % LINE_SIZE
	if n > 0 {
		this.cursor.Rewind(n)
	}
	return nil
}
func keyFuncGoEndOfLine(this *Application) error {
	n := LINE_SIZE - this.cursor.Address()%LINE_SIZE - 1
	if n > 0 {
		this.cursor.Skip(n)
	}
	return nil
}
func keyFuncGoBeginOfFile(this *Application) error {
	this.cursor = large.NewPointer(this.buffer)
	this.window = large.NewPointer(this.buffer)
	return nil
}
func keyFuncGoEndOfFile(this *Application) error {
	this.cursor.GoEndOfFile()
	return nil
}
func keyFuncPasteAfter(this *Application) error {
	if this.clipBoard.Len() <= 0 {
		return nil
	}
	newByte := this.clipBoard.Pop()
	this.cursor.Append(newByte)
	this.dirty = true
	return nil
}
func keyFuncAddByte(this *Application) error {
	this.cursor.Append(0)
	this.dirty = true
	return nil
}
func keyFuncPasteBefore(this *Application) error {
	if this.clipBoard.Len() <= 0 {
		return nil
	}
	newByte := this.clipBoard.Pop()
	this.cursor.Insert(newByte)
	this.dirty = true
	return nil
}