diff --git a/src/device/output/key/char.go b/src/device/output/key/char.go index 99caff5..3c4dfb1 100644 --- a/src/device/output/key/char.go +++ b/src/device/output/key/char.go @@ -1,7 +1,35 @@ package key +import "os" + var ( charToKey = map[byte]Key{ + 'A': AUpper, + 'B': BUpper, + 'C': CUpper, + 'D': DUpper, + 'E': EUpper, + 'F': FUpper, + 'G': GUpper, + 'H': HUpper, + 'I': IUpper, + 'J': JUpper, + 'K': KUpper, + 'L': LUpper, + 'M': MUpper, + 'N': NUpper, + 'O': OUpper, + 'P': PUpper, + 'Q': QUpper, + 'R': RUpper, + 'S': SUpper, + 'T': TUpper, + 'U': UUpper, + 'V': VUpper, + 'W': WUpper, + 'X': XUpper, + 'Y': YUpper, + 'Z': ZUpper, 'a': A, 'b': B, 'c': C, @@ -56,8 +84,10 @@ func ToChar(k Key) byte { return v } +var caseSensitive = os.Getenv("CASE_SENSITIVE") != "true" + func FromChar(b byte) Key { - if 'A' <= b && b <= 'Z' { + if !caseSensitive && 'A' <= b && b <= 'Z' { b += 'a' - 'A' } v, ok := charToKey[b] diff --git a/src/device/output/key/char_test.go b/src/device/output/key/char_test.go index 70ef594..112ca66 100644 --- a/src/device/output/key/char_test.go +++ b/src/device/output/key/char_test.go @@ -3,6 +3,7 @@ package key import "testing" func TestFromChar(t *testing.T) { + caseSensitive = false if got := FromChar('1'); got != N1 { t.Error(got) } @@ -21,4 +22,11 @@ func TestFromChar(t *testing.T) { if got := ToChar(-1); got != '?' { t.Error(got) } + caseSensitive = true + if got := FromChar('a'); got != A { + t.Error(got) + } + if got := FromChar('A'); got != AUpper { + t.Error(got) + } } diff --git a/src/device/output/key/keys.go b/src/device/output/key/keys.go index 617c270..218fbcb 100644 --- a/src/device/output/key/keys.go +++ b/src/device/output/key/keys.go @@ -1,45 +1,69 @@ package key -import "github.com/micmonay/keybd_event" - type Key int const ( - Undef = Key(keybd_event.VK_SP11) - A = Key(keybd_event.VK_A) - B = Key(keybd_event.VK_B) - C = Key(keybd_event.VK_C) - D = Key(keybd_event.VK_D) - E = Key(keybd_event.VK_E) - F = Key(keybd_event.VK_F) - G = Key(keybd_event.VK_G) - H = Key(keybd_event.VK_H) - I = Key(keybd_event.VK_I) - J = Key(keybd_event.VK_J) - K = Key(keybd_event.VK_K) - L = Key(keybd_event.VK_L) - M = Key(keybd_event.VK_M) - N = Key(keybd_event.VK_N) - O = Key(keybd_event.VK_O) - P = Key(keybd_event.VK_P) - Q = Key(keybd_event.VK_Q) - R = Key(keybd_event.VK_R) - S = Key(keybd_event.VK_S) - T = Key(keybd_event.VK_T) - U = Key(keybd_event.VK_U) - V = Key(keybd_event.VK_V) - W = Key(keybd_event.VK_W) - X = Key(keybd_event.VK_X) - Y = Key(keybd_event.VK_Y) - Z = Key(keybd_event.VK_Z) - N1 = Key(keybd_event.VK_1) - N2 = Key(keybd_event.VK_2) - N3 = Key(keybd_event.VK_3) - N4 = Key(keybd_event.VK_4) - N5 = Key(keybd_event.VK_5) - N6 = Key(keybd_event.VK_6) - N7 = Key(keybd_event.VK_7) - N8 = Key(keybd_event.VK_8) - N9 = Key(keybd_event.VK_9) - N0 = Key(keybd_event.VK_0) + Undef = iota + A + B + C + D + E + F + G + H + I + J + K + L + M + N + O + P + Q + R + S + T + U + V + W + X + Y + Z + AUpper + BUpper + CUpper + DUpper + EUpper + FUpper + GUpper + HUpper + IUpper + JUpper + KUpper + LUpper + MUpper + NUpper + OUpper + PUpper + QUpper + RUpper + SUpper + TUpper + UUpper + VUpper + WUpper + XUpper + YUpper + ZUpper + N1 + N2 + N3 + N4 + N5 + N6 + N7 + N8 + N9 + N0 )