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
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]

View File

@ -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)
}
}

View File

@ -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
)