keys support case

master
Bel LaPointe 2023-03-24 13:30:46 -06:00
parent e5a668b691
commit 7b7486cc93
3 changed files with 102 additions and 40 deletions

View File

@ -1,7 +1,35 @@
package key package key
import "os"
var ( var (
charToKey = map[byte]Key{ 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, 'a': A,
'b': B, 'b': B,
'c': C, 'c': C,
@ -56,8 +84,10 @@ func ToChar(k Key) byte {
return v return v
} }
var caseSensitive = os.Getenv("CASE_SENSITIVE") != "true"
func FromChar(b byte) Key { func FromChar(b byte) Key {
if 'A' <= b && b <= 'Z' { if !caseSensitive && 'A' <= b && b <= 'Z' {
b += 'a' - 'A' b += 'a' - 'A'
} }
v, ok := charToKey[b] v, ok := charToKey[b]

View File

@ -3,6 +3,7 @@ package key
import "testing" import "testing"
func TestFromChar(t *testing.T) { func TestFromChar(t *testing.T) {
caseSensitive = false
if got := FromChar('1'); got != N1 { if got := FromChar('1'); got != N1 {
t.Error(got) t.Error(got)
} }
@ -21,4 +22,11 @@ func TestFromChar(t *testing.T) {
if got := ToChar(-1); got != '?' { if got := ToChar(-1); got != '?' {
t.Error(got) t.Error(got)
} }
caseSensitive = true
if got := FromChar('a'); got != A {
t.Error(got)
}
if got := FromChar('A'); got != AUpper {
t.Error(got)
}
} }

View File

@ -1,45 +1,69 @@
package key package key
import "github.com/micmonay/keybd_event"
type Key int type Key int
const ( const (
Undef = Key(keybd_event.VK_SP11) Undef = iota
A = Key(keybd_event.VK_A) A
B = Key(keybd_event.VK_B) B
C = Key(keybd_event.VK_C) C
D = Key(keybd_event.VK_D) D
E = Key(keybd_event.VK_E) E
F = Key(keybd_event.VK_F) F
G = Key(keybd_event.VK_G) G
H = Key(keybd_event.VK_H) H
I = Key(keybd_event.VK_I) I
J = Key(keybd_event.VK_J) J
K = Key(keybd_event.VK_K) K
L = Key(keybd_event.VK_L) L
M = Key(keybd_event.VK_M) M
N = Key(keybd_event.VK_N) N
O = Key(keybd_event.VK_O) O
P = Key(keybd_event.VK_P) P
Q = Key(keybd_event.VK_Q) Q
R = Key(keybd_event.VK_R) R
S = Key(keybd_event.VK_S) S
T = Key(keybd_event.VK_T) T
U = Key(keybd_event.VK_U) U
V = Key(keybd_event.VK_V) V
W = Key(keybd_event.VK_W) W
X = Key(keybd_event.VK_X) X
Y = Key(keybd_event.VK_Y) Y
Z = Key(keybd_event.VK_Z) Z
N1 = Key(keybd_event.VK_1) AUpper
N2 = Key(keybd_event.VK_2) BUpper
N3 = Key(keybd_event.VK_3) CUpper
N4 = Key(keybd_event.VK_4) DUpper
N5 = Key(keybd_event.VK_5) EUpper
N6 = Key(keybd_event.VK_6) FUpper
N7 = Key(keybd_event.VK_7) GUpper
N8 = Key(keybd_event.VK_8) HUpper
N9 = Key(keybd_event.VK_9) IUpper
N0 = Key(keybd_event.VK_0) 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
) )