sendkeys/keymap.go

71 lines
1.6 KiB
Go

package sendkeys
import (
"errors"
"strings"
)
func (kb *KBWrap) handleRunes(split []string) (keys []int) {
for _, c := range split {
d, dok := num[c]
a, aok := alpha[c]
sym, symok := Symbol[c]
ca, caok := alpha[strings.ToLower(c)]
switch {
case aok:
keys = append(keys, a)
case dok:
keys = append(keys, d)
case caok:
keys = append(keys, 0-ca)
case symok:
keys = append(keys, sym)
default:
kb.errors = append(
kb.errors,
errors.New(ErrKeyMappingNotFound.Error()+c),
)
}
}
return
}
func (kb *KBWrap) strToKeys(s string) (keys []int) {
if !strings.Contains(s, " ") {
return kb.handleRunes(strings.Split(s, ""))
}
splitspace := strings.Split(s, " ")
for _, section := range splitspace {
split := strings.Split(section, "")
keys = append(keys, kb.handleRunes(split)...)
keys = append(keys, 57)
}
return
}
var num = map[string]int{
"1": 2, "2": 3, "3": 4, "4": 5, "5": 6,
"6": 7, "7": 8, "8": 9, "9": 10, "0": 11,
}
var alpha = map[string]int{
"q": 16, "w": 17, "e": 18, "r": 19, "t": 20,
"y": 21, "u": 22, "i": 23, "o": 24, "p": 25,
"a": 30, "s": 31, "d": 32, "f": 33, "g": 34,
"h": 35, "j": 36, "k": 37, "l": 38, "z": 44,
"x": 45, "c": 46, "v": 47, "b": 48, "n": 49,
"m": 50,
}
// Symbol is a map of translations for sending non-alphanumeric key events.
var Symbol = map[string]int{
"-": 12, "_": -12, "=": 13, "+": -13, "[": 26,
"{": -26, "]": 27, "}": -27, "'": 40, "\"": -40,
"`": 41, "~": -41, "\\": 43, "|": -43, ",": 51,
"<": -51, ".": 52, ">": -52, "/": 53, "?": -53,
" ": 57, "!": -2, "@": -3, "#": -4, "$": -5,
"%": -6, "^": -7, "&": -8, "*": -9, "(": -10,
")": -11, ";": 39, ":": -39,
}