package main

import "github.com/nsf/termbox-go"
import "fmt"

type key struct {
	x  int
	y  int
	ch rune
}

var K_ESC = []key{{1, 1, 'E'}, {2, 1, 'S'}, {3, 1, 'C'}}
var K_F1 = []key{{6, 1, 'F'}, {7, 1, '1'}}
var K_F2 = []key{{9, 1, 'F'}, {10, 1, '2'}}
var K_F3 = []key{{12, 1, 'F'}, {13, 1, '3'}}
var K_F4 = []key{{15, 1, 'F'}, {16, 1, '4'}}
var K_F5 = []key{{19, 1, 'F'}, {20, 1, '5'}}
var K_F6 = []key{{22, 1, 'F'}, {23, 1, '6'}}
var K_F7 = []key{{25, 1, 'F'}, {26, 1, '7'}}
var K_F8 = []key{{28, 1, 'F'}, {29, 1, '8'}}
var K_F9 = []key{{33, 1, 'F'}, {34, 1, '9'}}
var K_F10 = []key{{36, 1, 'F'}, {37, 1, '1'}, {38, 1, '0'}}
var K_F11 = []key{{40, 1, 'F'}, {41, 1, '1'}, {42, 1, '1'}}
var K_F12 = []key{{44, 1, 'F'}, {45, 1, '1'}, {46, 1, '2'}}
var K_PRN = []key{{50, 1, 'P'}, {51, 1, 'R'}, {52, 1, 'N'}}
var K_SCR = []key{{54, 1, 'S'}, {55, 1, 'C'}, {56, 1, 'R'}}
var K_BRK = []key{{58, 1, 'B'}, {59, 1, 'R'}, {60, 1, 'K'}}
var K_LED1 = []key{{66, 1, '-'}}
var K_LED2 = []key{{70, 1, '-'}}
var K_LED3 = []key{{74, 1, '-'}}
var K_TILDE = []key{{1, 4, '`'}}
var K_TILDE_SHIFT = []key{{1, 4, '~'}}
var K_1 = []key{{4, 4, '1'}}
var K_1_SHIFT = []key{{4, 4, '!'}}
var K_2 = []key{{7, 4, '2'}}
var K_2_SHIFT = []key{{7, 4, '@'}}
var K_3 = []key{{10, 4, '3'}}
var K_3_SHIFT = []key{{10, 4, '#'}}
var K_4 = []key{{13, 4, '4'}}
var K_4_SHIFT = []key{{13, 4, '$'}}
var K_5 = []key{{16, 4, '5'}}
var K_5_SHIFT = []key{{16, 4, '%'}}
var K_6 = []key{{19, 4, '6'}}
var K_6_SHIFT = []key{{19, 4, '^'}}
var K_7 = []key{{22, 4, '7'}}
var K_7_SHIFT = []key{{22, 4, '&'}}
var K_8 = []key{{25, 4, '8'}}
var K_8_SHIFT = []key{{25, 4, '*'}}
var K_9 = []key{{28, 4, '9'}}
var K_9_SHIFT = []key{{28, 4, '('}}
var K_0 = []key{{31, 4, '0'}}
var K_0_SHIFT = []key{{31, 4, ')'}}
var K_MINUS = []key{{34, 4, '-'}}
var K_MINUS_SHIFT = []key{{34, 4, '_'}}
var K_EQUALS = []key{{37, 4, '='}}
var K_EQUALS_SHIFT = []key{{37, 4, '+'}}
var K_BACKSLASH = []key{{40, 4, '\\'}}
var K_BACKSLASH_SHIFT = []key{{40, 4, '|'}}
var K_BACKSPACE = []key{{44, 4, 0x2190}, {45, 4, 0x2500}, {46, 4, 0x2500}}
var K_INS = []key{{50, 4, 'I'}, {51, 4, 'N'}, {52, 4, 'S'}}
var K_HOM = []key{{54, 4, 'H'}, {55, 4, 'O'}, {56, 4, 'M'}}
var K_PGU = []key{{58, 4, 'P'}, {59, 4, 'G'}, {60, 4, 'U'}}
var K_K_NUMLOCK = []key{{65, 4, 'N'}}
var K_K_SLASH = []key{{68, 4, '/'}}
var K_K_STAR = []key{{71, 4, '*'}}
var K_K_MINUS = []key{{74, 4, '-'}}
var K_TAB = []key{{1, 6, 'T'}, {2, 6, 'A'}, {3, 6, 'B'}}
var K_q = []key{{6, 6, 'q'}}
var K_Q = []key{{6, 6, 'Q'}}
var K_w = []key{{9, 6, 'w'}}
var K_W = []key{{9, 6, 'W'}}
var K_e = []key{{12, 6, 'e'}}
var K_E = []key{{12, 6, 'E'}}
var K_r = []key{{15, 6, 'r'}}
var K_R = []key{{15, 6, 'R'}}
var K_t = []key{{18, 6, 't'}}
var K_T = []key{{18, 6, 'T'}}
var K_y = []key{{21, 6, 'y'}}
var K_Y = []key{{21, 6, 'Y'}}
var K_u = []key{{24, 6, 'u'}}
var K_U = []key{{24, 6, 'U'}}
var K_i = []key{{27, 6, 'i'}}
var K_I = []key{{27, 6, 'I'}}
var K_o = []key{{30, 6, 'o'}}
var K_O = []key{{30, 6, 'O'}}
var K_p = []key{{33, 6, 'p'}}
var K_P = []key{{33, 6, 'P'}}
var K_LSQB = []key{{36, 6, '['}}
var K_LCUB = []key{{36, 6, '{'}}
var K_RSQB = []key{{39, 6, ']'}}
var K_RCUB = []key{{39, 6, '}'}}
var K_ENTER = []key{
	{43, 6, 0x2591}, {44, 6, 0x2591}, {45, 6, 0x2591}, {46, 6, 0x2591},
	{43, 7, 0x2591}, {44, 7, 0x2591}, {45, 7, 0x21B5}, {46, 7, 0x2591},
	{41, 8, 0x2591}, {42, 8, 0x2591}, {43, 8, 0x2591}, {44, 8, 0x2591},
	{45, 8, 0x2591}, {46, 8, 0x2591},
}
var K_DEL = []key{{50, 6, 'D'}, {51, 6, 'E'}, {52, 6, 'L'}}
var K_END = []key{{54, 6, 'E'}, {55, 6, 'N'}, {56, 6, 'D'}}
var K_PGD = []key{{58, 6, 'P'}, {59, 6, 'G'}, {60, 6, 'D'}}
var K_K_7 = []key{{65, 6, '7'}}
var K_K_8 = []key{{68, 6, '8'}}
var K_K_9 = []key{{71, 6, '9'}}
var K_K_PLUS = []key{{74, 6, ' '}, {74, 7, '+'}, {74, 8, ' '}}
var K_CAPS = []key{{1, 8, 'C'}, {2, 8, 'A'}, {3, 8, 'P'}, {4, 8, 'S'}}
var K_a = []key{{7, 8, 'a'}}
var K_A = []key{{7, 8, 'A'}}
var K_s = []key{{10, 8, 's'}}
var K_S = []key{{10, 8, 'S'}}
var K_d = []key{{13, 8, 'd'}}
var K_D = []key{{13, 8, 'D'}}
var K_f = []key{{16, 8, 'f'}}
var K_F = []key{{16, 8, 'F'}}
var K_g = []key{{19, 8, 'g'}}
var K_G = []key{{19, 8, 'G'}}
var K_h = []key{{22, 8, 'h'}}
var K_H = []key{{22, 8, 'H'}}
var K_j = []key{{25, 8, 'j'}}
var K_J = []key{{25, 8, 'J'}}
var K_k = []key{{28, 8, 'k'}}
var K_K = []key{{28, 8, 'K'}}
var K_l = []key{{31, 8, 'l'}}
var K_L = []key{{31, 8, 'L'}}
var K_SEMICOLON = []key{{34, 8, ';'}}
var K_PARENTHESIS = []key{{34, 8, ':'}}
var K_QUOTE = []key{{37, 8, '\''}}
var K_DOUBLEQUOTE = []key{{37, 8, '"'}}
var K_K_4 = []key{{65, 8, '4'}}
var K_K_5 = []key{{68, 8, '5'}}
var K_K_6 = []key{{71, 8, '6'}}
var K_LSHIFT = []key{{1, 10, 'S'}, {2, 10, 'H'}, {3, 10, 'I'}, {4, 10, 'F'}, {5, 10, 'T'}}
var K_z = []key{{9, 10, 'z'}}
var K_Z = []key{{9, 10, 'Z'}}
var K_x = []key{{12, 10, 'x'}}
var K_X = []key{{12, 10, 'X'}}
var K_c = []key{{15, 10, 'c'}}
var K_C = []key{{15, 10, 'C'}}
var K_v = []key{{18, 10, 'v'}}
var K_V = []key{{18, 10, 'V'}}
var K_b = []key{{21, 10, 'b'}}
var K_B = []key{{21, 10, 'B'}}
var K_n = []key{{24, 10, 'n'}}
var K_N = []key{{24, 10, 'N'}}
var K_m = []key{{27, 10, 'm'}}
var K_M = []key{{27, 10, 'M'}}
var K_COMMA = []key{{30, 10, ','}}
var K_LANB = []key{{30, 10, '<'}}
var K_PERIOD = []key{{33, 10, '.'}}
var K_RANB = []key{{33, 10, '>'}}
var K_SLASH = []key{{36, 10, '/'}}
var K_QUESTION = []key{{36, 10, '?'}}
var K_RSHIFT = []key{{42, 10, 'S'}, {43, 10, 'H'}, {44, 10, 'I'}, {45, 10, 'F'}, {46, 10, 'T'}}
var K_ARROW_UP = []key{{54, 10, '('}, {55, 10, 0x2191}, {56, 10, ')'}}
var K_K_1 = []key{{65, 10, '1'}}
var K_K_2 = []key{{68, 10, '2'}}
var K_K_3 = []key{{71, 10, '3'}}
var K_K_ENTER = []key{{74, 10, 0x2591}, {74, 11, 0x2591}, {74, 12, 0x2591}}
var K_LCTRL = []key{{1, 12, 'C'}, {2, 12, 'T'}, {3, 12, 'R'}, {4, 12, 'L'}}
var K_LWIN = []key{{6, 12, 'W'}, {7, 12, 'I'}, {8, 12, 'N'}}
var K_LALT = []key{{10, 12, 'A'}, {11, 12, 'L'}, {12, 12, 'T'}}
var K_SPACE = []key{
	{14, 12, ' '}, {15, 12, ' '}, {16, 12, ' '}, {17, 12, ' '}, {18, 12, ' '},
	{19, 12, 'S'}, {20, 12, 'P'}, {21, 12, 'A'}, {22, 12, 'C'}, {23, 12, 'E'},
	{24, 12, ' '}, {25, 12, ' '}, {26, 12, ' '}, {27, 12, ' '}, {28, 12, ' '},
}
var K_RALT = []key{{30, 12, 'A'}, {31, 12, 'L'}, {32, 12, 'T'}}
var K_RWIN = []key{{34, 12, 'W'}, {35, 12, 'I'}, {36, 12, 'N'}}
var K_RPROP = []key{{38, 12, 'P'}, {39, 12, 'R'}, {40, 12, 'O'}, {41, 12, 'P'}}
var K_RCTRL = []key{{43, 12, 'C'}, {44, 12, 'T'}, {45, 12, 'R'}, {46, 12, 'L'}}
var K_ARROW_LEFT = []key{{50, 12, '('}, {51, 12, 0x2190}, {52, 12, ')'}}
var K_ARROW_DOWN = []key{{54, 12, '('}, {55, 12, 0x2193}, {56, 12, ')'}}
var K_ARROW_RIGHT = []key{{58, 12, '('}, {59, 12, 0x2192}, {60, 12, ')'}}
var K_K_0 = []key{{65, 12, ' '}, {66, 12, '0'}, {67, 12, ' '}, {68, 12, ' '}}
var K_K_PERIOD = []key{{71, 12, '.'}}

type combo struct {
	keys [][]key
}

var combos = []combo{
	{[][]key{K_TILDE, K_2, K_SPACE, K_LCTRL, K_RCTRL}},
	{[][]key{K_A, K_LCTRL, K_RCTRL}},
	{[][]key{K_B, K_LCTRL, K_RCTRL}},
	{[][]key{K_C, K_LCTRL, K_RCTRL}},
	{[][]key{K_D, K_LCTRL, K_RCTRL}},
	{[][]key{K_E, K_LCTRL, K_RCTRL}},
	{[][]key{K_F, K_LCTRL, K_RCTRL}},
	{[][]key{K_G, K_LCTRL, K_RCTRL}},
	{[][]key{K_H, K_BACKSPACE, K_LCTRL, K_RCTRL}},
	{[][]key{K_I, K_TAB, K_LCTRL, K_RCTRL}},
	{[][]key{K_J, K_LCTRL, K_RCTRL}},
	{[][]key{K_K, K_LCTRL, K_RCTRL}},
	{[][]key{K_L, K_LCTRL, K_RCTRL}},
	{[][]key{K_M, K_ENTER, K_K_ENTER, K_LCTRL, K_RCTRL}},
	{[][]key{K_N, K_LCTRL, K_RCTRL}},
	{[][]key{K_O, K_LCTRL, K_RCTRL}},
	{[][]key{K_P, K_LCTRL, K_RCTRL}},
	{[][]key{K_Q, K_LCTRL, K_RCTRL}},
	{[][]key{K_R, K_LCTRL, K_RCTRL}},
	{[][]key{K_S, K_LCTRL, K_RCTRL}},
	{[][]key{K_T, K_LCTRL, K_RCTRL}},
	{[][]key{K_U, K_LCTRL, K_RCTRL}},
	{[][]key{K_V, K_LCTRL, K_RCTRL}},
	{[][]key{K_W, K_LCTRL, K_RCTRL}},
	{[][]key{K_X, K_LCTRL, K_RCTRL}},
	{[][]key{K_Y, K_LCTRL, K_RCTRL}},
	{[][]key{K_Z, K_LCTRL, K_RCTRL}},
	{[][]key{K_LSQB, K_ESC, K_3, K_LCTRL, K_RCTRL}},
	{[][]key{K_4, K_BACKSLASH, K_LCTRL, K_RCTRL}},
	{[][]key{K_RSQB, K_5, K_LCTRL, K_RCTRL}},
	{[][]key{K_6, K_LCTRL, K_RCTRL}},
	{[][]key{K_7, K_SLASH, K_MINUS_SHIFT, K_LCTRL, K_RCTRL}},
	{[][]key{K_SPACE}},
	{[][]key{K_1_SHIFT, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_DOUBLEQUOTE, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_3_SHIFT, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_4_SHIFT, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_5_SHIFT, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_7_SHIFT, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_QUOTE}},
	{[][]key{K_9_SHIFT, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_0_SHIFT, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_8_SHIFT, K_K_STAR, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_EQUALS_SHIFT, K_K_PLUS, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_COMMA}},
	{[][]key{K_MINUS, K_K_MINUS}},
	{[][]key{K_PERIOD, K_K_PERIOD}},
	{[][]key{K_SLASH, K_K_SLASH}},
	{[][]key{K_0, K_K_0}},
	{[][]key{K_1, K_K_1}},
	{[][]key{K_2, K_K_2}},
	{[][]key{K_3, K_K_3}},
	{[][]key{K_4, K_K_4}},
	{[][]key{K_5, K_K_5}},
	{[][]key{K_6, K_K_6}},
	{[][]key{K_7, K_K_7}},
	{[][]key{K_8, K_K_8}},
	{[][]key{K_9, K_K_9}},
	{[][]key{K_PARENTHESIS, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_SEMICOLON}},
	{[][]key{K_LANB, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_EQUALS}},
	{[][]key{K_RANB, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_QUESTION, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_2_SHIFT, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_A, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_B, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_C, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_D, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_E, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_F, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_G, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_H, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_I, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_J, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_K, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_L, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_M, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_N, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_O, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_P, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_Q, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_R, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_S, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_T, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_U, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_V, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_W, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_X, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_Y, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_Z, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_LSQB}},
	{[][]key{K_BACKSLASH}},
	{[][]key{K_RSQB}},
	{[][]key{K_6_SHIFT, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_MINUS_SHIFT, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_TILDE}},
	{[][]key{K_a}},
	{[][]key{K_b}},
	{[][]key{K_c}},
	{[][]key{K_d}},
	{[][]key{K_e}},
	{[][]key{K_f}},
	{[][]key{K_g}},
	{[][]key{K_h}},
	{[][]key{K_i}},
	{[][]key{K_j}},
	{[][]key{K_k}},
	{[][]key{K_l}},
	{[][]key{K_m}},
	{[][]key{K_n}},
	{[][]key{K_o}},
	{[][]key{K_p}},
	{[][]key{K_q}},
	{[][]key{K_r}},
	{[][]key{K_s}},
	{[][]key{K_t}},
	{[][]key{K_u}},
	{[][]key{K_v}},
	{[][]key{K_w}},
	{[][]key{K_x}},
	{[][]key{K_y}},
	{[][]key{K_z}},
	{[][]key{K_LCUB, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_BACKSLASH_SHIFT, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_RCUB, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_TILDE_SHIFT, K_LSHIFT, K_RSHIFT}},
	{[][]key{K_8, K_BACKSPACE, K_LCTRL, K_RCTRL}},
}

var func_combos = []combo{
	{[][]key{K_F1}},
	{[][]key{K_F2}},
	{[][]key{K_F3}},
	{[][]key{K_F4}},
	{[][]key{K_F5}},
	{[][]key{K_F6}},
	{[][]key{K_F7}},
	{[][]key{K_F8}},
	{[][]key{K_F9}},
	{[][]key{K_F10}},
	{[][]key{K_F11}},
	{[][]key{K_F12}},
	{[][]key{K_INS}},
	{[][]key{K_DEL}},
	{[][]key{K_HOM}},
	{[][]key{K_END}},
	{[][]key{K_PGU}},
	{[][]key{K_PGD}},
	{[][]key{K_ARROW_UP}},
	{[][]key{K_ARROW_DOWN}},
	{[][]key{K_ARROW_LEFT}},
	{[][]key{K_ARROW_RIGHT}},
}

func print_tb(x, y int, fg, bg termbox.Attribute, msg string) {
	for _, c := range msg {
		termbox.SetCell(x, y, c, fg, bg)
		x++
	}
}

func printf_tb(x, y int, fg, bg termbox.Attribute, format string, args ...interface{}) {
	s := fmt.Sprintf(format, args...)
	print_tb(x, y, fg, bg, s)
}

func draw_key(k []key, fg, bg termbox.Attribute) {
	for _, k := range k {
		termbox.SetCell(k.x+2, k.y+4, k.ch, fg, bg)
	}
}

func draw_keyboard() {
	termbox.SetCell(0, 0, 0x250C, termbox.ColorWhite, termbox.ColorBlack)
	termbox.SetCell(79, 0, 0x2510, termbox.ColorWhite, termbox.ColorBlack)
	termbox.SetCell(0, 23, 0x2514, termbox.ColorWhite, termbox.ColorBlack)
	termbox.SetCell(79, 23, 0x2518, termbox.ColorWhite, termbox.ColorBlack)

	for i := 1; i < 79; i++ {
		termbox.SetCell(i, 0, 0x2500, termbox.ColorWhite, termbox.ColorBlack)
		termbox.SetCell(i, 23, 0x2500, termbox.ColorWhite, termbox.ColorBlack)
		termbox.SetCell(i, 17, 0x2500, termbox.ColorWhite, termbox.ColorBlack)
		termbox.SetCell(i, 4, 0x2500, termbox.ColorWhite, termbox.ColorBlack)
	}
	for i := 1; i < 23; i++ {
		termbox.SetCell(0, i, 0x2502, termbox.ColorWhite, termbox.ColorBlack)
		termbox.SetCell(79, i, 0x2502, termbox.ColorWhite, termbox.ColorBlack)
	}
	termbox.SetCell(0, 17, 0x251C, termbox.ColorWhite, termbox.ColorBlack)
	termbox.SetCell(79, 17, 0x2524, termbox.ColorWhite, termbox.ColorBlack)
	termbox.SetCell(0, 4, 0x251C, termbox.ColorWhite, termbox.ColorBlack)
	termbox.SetCell(79, 4, 0x2524, termbox.ColorWhite, termbox.ColorBlack)
	for i := 5; i < 17; i++ {
		termbox.SetCell(1, i, 0x2588, termbox.ColorYellow, termbox.ColorYellow)
		termbox.SetCell(78, i, 0x2588, termbox.ColorYellow, termbox.ColorYellow)
	}

	draw_key(K_ESC, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_F1, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_F2, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_F3, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_F4, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_F5, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_F6, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_F7, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_F8, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_F9, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_F10, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_F11, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_F12, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_PRN, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_SCR, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_BRK, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_LED1, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_LED2, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_LED3, termbox.ColorWhite, termbox.ColorBlue)

	draw_key(K_TILDE, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_1, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_2, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_3, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_4, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_5, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_6, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_7, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_8, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_9, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_0, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_MINUS, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_EQUALS, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_BACKSLASH, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_BACKSPACE, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_INS, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_HOM, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_PGU, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_K_NUMLOCK, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_K_SLASH, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_K_STAR, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_K_MINUS, termbox.ColorWhite, termbox.ColorBlue)

	draw_key(K_TAB, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_q, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_w, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_e, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_r, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_t, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_y, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_u, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_i, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_o, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_p, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_LSQB, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_RSQB, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_ENTER, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_DEL, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_END, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_PGD, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_K_7, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_K_8, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_K_9, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_K_PLUS, termbox.ColorWhite, termbox.ColorBlue)

	draw_key(K_CAPS, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_a, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_s, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_d, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_f, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_g, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_h, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_j, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_k, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_l, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_SEMICOLON, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_QUOTE, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_K_4, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_K_5, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_K_6, termbox.ColorWhite, termbox.ColorBlue)

	draw_key(K_LSHIFT, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_z, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_x, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_c, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_v, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_b, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_n, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_m, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_COMMA, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_PERIOD, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_SLASH, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_RSHIFT, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_ARROW_UP, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_K_1, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_K_2, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_K_3, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_K_ENTER, termbox.ColorWhite, termbox.ColorBlue)

	draw_key(K_LCTRL, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_LWIN, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_LALT, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_SPACE, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_RCTRL, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_RPROP, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_RWIN, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_RALT, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_ARROW_LEFT, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_ARROW_DOWN, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_ARROW_RIGHT, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_K_0, termbox.ColorWhite, termbox.ColorBlue)
	draw_key(K_K_PERIOD, termbox.ColorWhite, termbox.ColorBlue)

	printf_tb(33, 1, termbox.ColorMagenta|termbox.AttrBold, termbox.ColorBlack, "Keyboard demo!")
	printf_tb(21, 2, termbox.ColorMagenta, termbox.ColorBlack, "(press CTRL+X and then CTRL+Q to exit)")
	printf_tb(15, 3, termbox.ColorMagenta, termbox.ColorBlack, "(press CTRL+X and then CTRL+C to change input mode)")

	inputmode := termbox.SetInputMode(termbox.InputCurrent)
	inputmode_str := ""
	switch {
	case inputmode&termbox.InputEsc != 0:
		inputmode_str = "termbox.InputEsc"
	case inputmode&termbox.InputAlt != 0:
		inputmode_str = "termbox.InputAlt"
	}

	if inputmode&termbox.InputMouse != 0 {
		inputmode_str += " | termbox.InputMouse"
	}
	printf_tb(3, 18, termbox.ColorWhite, termbox.ColorBlack, "Input mode: %s", inputmode_str)
}

var fcmap = []string{
	"CTRL+2, CTRL+~",
	"CTRL+A",
	"CTRL+B",
	"CTRL+C",
	"CTRL+D",
	"CTRL+E",
	"CTRL+F",
	"CTRL+G",
	"CTRL+H, BACKSPACE",
	"CTRL+I, TAB",
	"CTRL+J",
	"CTRL+K",
	"CTRL+L",
	"CTRL+M, ENTER",
	"CTRL+N",
	"CTRL+O",
	"CTRL+P",
	"CTRL+Q",
	"CTRL+R",
	"CTRL+S",
	"CTRL+T",
	"CTRL+U",
	"CTRL+V",
	"CTRL+W",
	"CTRL+X",
	"CTRL+Y",
	"CTRL+Z",
	"CTRL+3, ESC, CTRL+[",
	"CTRL+4, CTRL+\\",
	"CTRL+5, CTRL+]",
	"CTRL+6",
	"CTRL+7, CTRL+/, CTRL+_",
	"SPACE",
}

var fkmap = []string{
	"F1",
	"F2",
	"F3",
	"F4",
	"F5",
	"F6",
	"F7",
	"F8",
	"F9",
	"F10",
	"F11",
	"F12",
	"INSERT",
	"DELETE",
	"HOME",
	"END",
	"PGUP",
	"PGDN",
	"ARROW UP",
	"ARROW DOWN",
	"ARROW LEFT",
	"ARROW RIGHT",
}

func funckeymap(k termbox.Key) string {
	if k == termbox.KeyCtrl8 {
		return "CTRL+8, BACKSPACE 2" /* 0x7F */
	} else if k >= termbox.KeyArrowRight && k <= 0xFFFF {
		return fkmap[0xFFFF-k]
	} else if k <= termbox.KeySpace {
		return fcmap[k]
	}
	return "UNKNOWN"
}

func pretty_print_press(ev *termbox.Event) {
	printf_tb(3, 19, termbox.ColorWhite, termbox.ColorBlack, "Key: ")
	printf_tb(8, 19, termbox.ColorYellow, termbox.ColorBlack, "decimal: %d", ev.Key)
	printf_tb(8, 20, termbox.ColorGreen, termbox.ColorBlack, "hex:     0x%X", ev.Key)
	printf_tb(8, 21, termbox.ColorCyan, termbox.ColorBlack, "octal:   0%o", ev.Key)
	printf_tb(8, 22, termbox.ColorRed, termbox.ColorBlack, "string:  %s", funckeymap(ev.Key))

	printf_tb(54, 19, termbox.ColorWhite, termbox.ColorBlack, "Char: ")
	printf_tb(60, 19, termbox.ColorYellow, termbox.ColorBlack, "decimal: %d", ev.Ch)
	printf_tb(60, 20, termbox.ColorGreen, termbox.ColorBlack, "hex:     0x%X", ev.Ch)
	printf_tb(60, 21, termbox.ColorCyan, termbox.ColorBlack, "octal:   0%o", ev.Ch)
	printf_tb(60, 22, termbox.ColorRed, termbox.ColorBlack, "string:  %s", string(ev.Ch))

	modifier := "none"
	if ev.Mod != 0 {
		modifier = "termbox.ModAlt"
	}
	printf_tb(54, 18, termbox.ColorWhite, termbox.ColorBlack, "Modifier: %s", modifier)
}

func pretty_print_resize(ev *termbox.Event) {
	printf_tb(3, 19, termbox.ColorWhite, termbox.ColorBlack, "Resize event: %d x %d", ev.Width, ev.Height)
}

var counter = 0

func pretty_print_mouse(ev *termbox.Event) {
	printf_tb(3, 19, termbox.ColorWhite, termbox.ColorBlack, "Mouse event: %d x %d", ev.MouseX, ev.MouseY)
	button := ""
	switch ev.Key {
	case termbox.MouseLeft:
		button = "MouseLeft: %d"
	case termbox.MouseMiddle:
		button = "MouseMiddle: %d"
	case termbox.MouseRight:
		button = "MouseRight: %d"
	}
	counter++
	printf_tb(43, 19, termbox.ColorWhite, termbox.ColorBlack, "Key: ")
	printf_tb(48, 19, termbox.ColorYellow, termbox.ColorBlack, button, counter)
}

func dispatch_press(ev *termbox.Event) {
	if ev.Mod&termbox.ModAlt != 0 {
		draw_key(K_LALT, termbox.ColorWhite, termbox.ColorRed)
		draw_key(K_RALT, termbox.ColorWhite, termbox.ColorRed)
	}

	var k *combo
	if ev.Key >= termbox.KeyArrowRight {
		k = &func_combos[0xFFFF-ev.Key]
	} else if ev.Ch < 128 {
		if ev.Ch == 0 && ev.Key < 128 {
			k = &combos[ev.Key]
		} else {
			k = &combos[ev.Ch]
		}
	}
	if k == nil {
		return
	}

	keys := k.keys
	for _, k := range keys {
		draw_key(k, termbox.ColorWhite, termbox.ColorRed)
	}
}

func main() {
	err := termbox.Init()
	if err != nil {
		panic(err)
	}
	defer termbox.Close()

	termbox.SetInputMode(termbox.InputEsc | termbox.InputMouse)

	termbox.Clear(termbox.ColorDefault, termbox.ColorDefault)
	draw_keyboard()
	termbox.Flush()
	inputmode := 0
	ctrlxpressed := false
loop:
	for {
		switch ev := termbox.PollEvent(); ev.Type {
		case termbox.EventKey:
			if ev.Key == termbox.KeyCtrlS && ctrlxpressed {
				termbox.Sync()
			}
			if ev.Key == termbox.KeyCtrlQ && ctrlxpressed {
				break loop
			}
			if ev.Key == termbox.KeyCtrlC && ctrlxpressed {
				chmap := []termbox.InputMode{
					termbox.InputEsc | termbox.InputMouse,
					termbox.InputAlt | termbox.InputMouse,
					termbox.InputEsc,
					termbox.InputAlt,
				}
				inputmode++
				if inputmode >= len(chmap) {
					inputmode = 0
				}
				termbox.SetInputMode(chmap[inputmode])
			}
			if ev.Key == termbox.KeyCtrlX {
				ctrlxpressed = true
			} else {
				ctrlxpressed = false
			}

			termbox.Clear(termbox.ColorDefault, termbox.ColorDefault)
			draw_keyboard()
			dispatch_press(&ev)
			pretty_print_press(&ev)
			termbox.Flush()
		case termbox.EventResize:
			termbox.Clear(termbox.ColorDefault, termbox.ColorDefault)
			draw_keyboard()
			pretty_print_resize(&ev)
			termbox.Flush()
		case termbox.EventMouse:
			termbox.Clear(termbox.ColorDefault, termbox.ColorDefault)
			draw_keyboard()
			pretty_print_mouse(&ev)
			termbox.Flush()
		case termbox.EventError:
			panic(ev.Err)
		}
	}
}
