Added EN-US layout (included in common layout, too), renamed HID controller methods

This commit is contained in:
mame82 2018-06-08 12:49:45 +00:00
parent 8db6b0d179
commit c683dd95b9
4 changed files with 275 additions and 56 deletions

View File

@ -161,7 +161,7 @@ func (ctl *HIDController) RunScript(script string) (val otto.Value, err error) {
return
}
func (ctl *HIDController) RunScriptAsync(script string) (avmId int, avm *AsyncOttoVM, err error) {
func (ctl *HIDController) StartScriptAsBackgroundJob(script string) (avmId int, avm *AsyncOttoVM, err error) {
//fetch next free vm from pool
avmId,avm,err = ctl.NextUnusedVM()
if err != nil { return 0, nil, err }
@ -172,21 +172,21 @@ func (ctl *HIDController) RunScriptAsync(script string) (avmId int, avm *AsyncOt
return
}
func (ctl *HIDController) CancelAsyncScript(avmId int) (err error) {
if avmId < 0 || avmId >= MAX_VM {
func (ctl *HIDController) CancelBackgroundJob(jobId int) (err error) {
if jobId < 0 || jobId >= MAX_VM {
return errors.New("Invalid Id for AsyncOttoVM")
}
return ctl.vmPool[avmId].Cancel()
return ctl.vmPool[jobId].Cancel()
}
func (ctl *HIDController) WaitAsyncScriptResult(avmId int) (otto.Value, error) {
func (ctl *HIDController) WaitBackgroundJobResult(avmId int) (otto.Value, error) {
if avmId < 0 || avmId >= MAX_VM {
return otto.Value{}, errors.New("Invalid Id for AsyncOttoVM")
}
return ctl.vmPool[avmId].WaitResult()
}
func (ctl *HIDController) CurrentlyWorkingVmIDs() (res []int) {
func (ctl *HIDController) GetRunningBackgroundJobs() (res []int) {
res = make([]int,0)
for i := 0; i< MAX_VM; i++ {
if ctl.vmPool[i].IsWorking() {
@ -197,7 +197,7 @@ func (ctl *HIDController) CurrentlyWorkingVmIDs() (res []int) {
}
func (ctl *HIDController) CurrentlyWorkingVMs() (res []*AsyncOttoVM) {
func (ctl *HIDController) currentlyWorkingVMs() (res []*AsyncOttoVM) {
res = make([]*AsyncOttoVM,0)
for i := 0; i< MAX_VM; i++ {
if ctl.vmPool[i].IsWorking() {
@ -207,7 +207,7 @@ func (ctl *HIDController) CurrentlyWorkingVMs() (res []*AsyncOttoVM) {
return
}
func (ctl *HIDController) CancelAllVMs() error {
func (ctl *HIDController) CancelAllBackgroundJobs() error {
for i := 0; i< MAX_VM; i++ {
if ctl.vmPool[i].IsWorking() {
ctl.vmPool[i].Cancel()

114
keymaps/US.json Executable file
View File

@ -0,0 +1,114 @@
{
"Name": "US",
"Description": "EN-US USB Keyboard report mapping",
"Mapping": {
"\t": [{"Modifiers": [], "Keys": ["KEY_TAB"]}],
"\n": [{"Modifiers": [], "Keys": ["KEY_ENTER"]}],
" ": [{"Modifiers": [], "Keys": ["KEY_SPACE"]}],
"!": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_1"]}],
"@": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_2"]}],
"\\": [{"Modifiers": [], "Keys": ["KEY_BACKSLASH"]}],
"$": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_4"]}],
"%": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_5"]}],
"^": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_6"]}],
"|": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_BACKSLASH"]}],
"*": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_8"]}],
"(": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_9"]}],
"}": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_RIGHTBRACE"]}],
"]": [{"Modifiers": [], "Keys": ["KEY_RIGHTBRACE"]}],
",": [{"Modifiers": [], "Keys": ["KEY_COMMA"]}],
"/": [{"Modifiers": [], "Keys": ["KEY_SLASH"]}],
".": [{"Modifiers": [], "Keys": ["KEY_DOT"]}],
"&": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_7"]}],
"0": [{"Modifiers": [], "Keys": ["KEY_0"]}],
"1": [{"Modifiers": [], "Keys": ["KEY_1"]}],
"2": [{"Modifiers": [], "Keys": ["KEY_2"]}],
"3": [{"Modifiers": [], "Keys": ["KEY_3"]}],
"4": [{"Modifiers": [], "Keys": ["KEY_4"]}],
"5": [{"Modifiers": [], "Keys": ["KEY_5"]}],
"6": [{"Modifiers": [], "Keys": ["KEY_6"]}],
"7": [{"Modifiers": [], "Keys": ["KEY_7"]}],
"8": [{"Modifiers": [], "Keys": ["KEY_8"]}],
"9": [{"Modifiers": [], "Keys": ["KEY_9"]}],
">": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_DOT"]}],
"<": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_COMMA"]}],
")": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_0"]}],
"_": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_MINUS"]}],
"-": [{"Modifiers": [], "Keys": ["KEY_MINUS"]}],
"A": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_A"]}],
"B": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_B"]}],
"C": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_C"]}],
"D": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_D"]}],
"E": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_E"]}],
"F": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_F"]}],
"G": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_G"]}],
"H": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_H"]}],
"I": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_I"]}],
"J": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_J"]}],
"K": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_K"]}],
"L": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_L"]}],
"M": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_M"]}],
"N": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_N"]}],
"O": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_O"]}],
"P": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_P"]}],
"Q": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_Q"]}],
"R": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_R"]}],
"S": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_S"]}],
"T": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_T"]}],
"U": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_U"]}],
"V": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_V"]}],
"W": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_W"]}],
"X": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_X"]}],
"Z": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_Z"]}],
"Y": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_Y"]}],
"`": [{"Modifiers": [], "Keys": ["KEY_GRAVE"]}],
"~": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_GRAVE"]}],
"?": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_SLASH"]}],
"+": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_EQUAL"]}],
"=": [{"Modifiers": [], "Keys": ["KEY_EQUAL"]}],
"a": [{"Modifiers": [], "Keys": ["KEY_A"]}],
"b": [{"Modifiers": [], "Keys": ["KEY_B"]}],
"c": [{"Modifiers": [], "Keys": ["KEY_C"]}],
"d": [{"Modifiers": [], "Keys": ["KEY_D"]}],
"e": [{"Modifiers": [], "Keys": ["KEY_E"]}],
"f": [{"Modifiers": [], "Keys": ["KEY_F"]}],
"g": [{"Modifiers": [], "Keys": ["KEY_G"]}],
"h": [{"Modifiers": [], "Keys": ["KEY_H"]}],
"i": [{"Modifiers": [], "Keys": ["KEY_I"]}],
"j": [{"Modifiers": [], "Keys": ["KEY_J"]}],
"k": [{"Modifiers": [], "Keys": ["KEY_K"]}],
"l": [{"Modifiers": [], "Keys": ["KEY_L"]}],
"m": [{"Modifiers": [], "Keys": ["KEY_M"]}],
"n": [{"Modifiers": [], "Keys": ["KEY_N"]}],
"o": [{"Modifiers": [], "Keys": ["KEY_O"]}],
"p": [{"Modifiers": [], "Keys": ["KEY_P"]}],
"q": [{"Modifiers": [], "Keys": ["KEY_Q"]}],
"r": [{"Modifiers": [], "Keys": ["KEY_R"]}],
"s": [{"Modifiers": [], "Keys": ["KEY_S"]}],
"t": [{"Modifiers": [], "Keys": ["KEY_T"]}],
"u": [{"Modifiers": [], "Keys": ["KEY_U"]}],
"v": [{"Modifiers": [], "Keys": ["KEY_V"]}],
"w": [{"Modifiers": [], "Keys": ["KEY_W"]}],
"x": [{"Modifiers": [], "Keys": ["KEY_X"]}],
"z": [{"Modifiers": [], "Keys": ["KEY_Z"]}],
"y": [{"Modifiers": [], "Keys": ["KEY_Y"]}],
"#": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_3"]}],
"[": [{"Modifiers": [], "Keys": ["KEY_LEFTBRACE"]}],
"{": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_LEFTBRACE"]}],
";": [{"Modifiers": [], "Keys": ["KEY_SEMICOLON"]}],
":": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_SEMICOLON"]}],
"'": [{"Modifiers": [], "Keys": ["KEY_APOSTROPHE"]}],
"\"": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_APOSTROPHE"]}]
}
}

View File

@ -85,7 +85,117 @@
"F21": [{"Modifiers": [], "Keys": ["KEY_F21"]}],
"F22": [{"Modifiers": [], "Keys": ["KEY_F22"]}],
"F23": [{"Modifiers": [], "Keys": ["KEY_F23"]}],
"F24": [{"Modifiers": [], "Keys": ["KEY_F24"]}]
"F24": [{"Modifiers": [], "Keys": ["KEY_F24"]}],
"\t": [{"Modifiers": [], "Keys": ["KEY_TAB"]}],
"\n": [{"Modifiers": [], "Keys": ["KEY_ENTER"]}],
" ": [{"Modifiers": [], "Keys": ["KEY_SPACE"]}],
"!": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_1"]}],
"@": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_2"]}],
"\\": [{"Modifiers": [], "Keys": ["KEY_BACKSLASH"]}],
"$": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_4"]}],
"%": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_5"]}],
"^": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_6"]}],
"|": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_BACKSLASH"]}],
"*": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_8"]}],
"(": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_9"]}],
"}": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_RIGHTBRACE"]}],
"]": [{"Modifiers": [], "Keys": ["KEY_RIGHTBRACE"]}],
",": [{"Modifiers": [], "Keys": ["KEY_COMMA"]}],
"/": [{"Modifiers": [], "Keys": ["KEY_SLASH"]}],
".": [{"Modifiers": [], "Keys": ["KEY_DOT"]}],
"&": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_7"]}],
"0": [{"Modifiers": [], "Keys": ["KEY_0"]}],
"1": [{"Modifiers": [], "Keys": ["KEY_1"]}],
"2": [{"Modifiers": [], "Keys": ["KEY_2"]}],
"3": [{"Modifiers": [], "Keys": ["KEY_3"]}],
"4": [{"Modifiers": [], "Keys": ["KEY_4"]}],
"5": [{"Modifiers": [], "Keys": ["KEY_5"]}],
"6": [{"Modifiers": [], "Keys": ["KEY_6"]}],
"7": [{"Modifiers": [], "Keys": ["KEY_7"]}],
"8": [{"Modifiers": [], "Keys": ["KEY_8"]}],
"9": [{"Modifiers": [], "Keys": ["KEY_9"]}],
">": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_DOT"]}],
"<": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_COMMA"]}],
")": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_0"]}],
"_": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_MINUS"]}],
"-": [{"Modifiers": [], "Keys": ["KEY_MINUS"]}],
"A": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_A"]}],
"B": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_B"]}],
"C": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_C"]}],
"D": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_D"]}],
"E": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_E"]}],
"F": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_F"]}],
"G": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_G"]}],
"H": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_H"]}],
"I": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_I"]}],
"J": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_J"]}],
"K": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_K"]}],
"L": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_L"]}],
"M": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_M"]}],
"N": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_N"]}],
"O": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_O"]}],
"P": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_P"]}],
"Q": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_Q"]}],
"R": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_R"]}],
"S": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_S"]}],
"T": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_T"]}],
"U": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_U"]}],
"V": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_V"]}],
"W": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_W"]}],
"X": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_X"]}],
"Z": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_Z"]}],
"Y": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_Y"]}],
"`": [{"Modifiers": [], "Keys": ["KEY_GRAVE"]}],
"~": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_GRAVE"]}],
"?": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_SLASH"]}],
"+": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_EQUAL"]}],
"=": [{"Modifiers": [], "Keys": ["KEY_EQUAL"]}],
"a": [{"Modifiers": [], "Keys": ["KEY_A"]}],
"b": [{"Modifiers": [], "Keys": ["KEY_B"]}],
"c": [{"Modifiers": [], "Keys": ["KEY_C"]}],
"d": [{"Modifiers": [], "Keys": ["KEY_D"]}],
"e": [{"Modifiers": [], "Keys": ["KEY_E"]}],
"f": [{"Modifiers": [], "Keys": ["KEY_F"]}],
"g": [{"Modifiers": [], "Keys": ["KEY_G"]}],
"h": [{"Modifiers": [], "Keys": ["KEY_H"]}],
"i": [{"Modifiers": [], "Keys": ["KEY_I"]}],
"j": [{"Modifiers": [], "Keys": ["KEY_J"]}],
"k": [{"Modifiers": [], "Keys": ["KEY_K"]}],
"l": [{"Modifiers": [], "Keys": ["KEY_L"]}],
"m": [{"Modifiers": [], "Keys": ["KEY_M"]}],
"n": [{"Modifiers": [], "Keys": ["KEY_N"]}],
"o": [{"Modifiers": [], "Keys": ["KEY_O"]}],
"p": [{"Modifiers": [], "Keys": ["KEY_P"]}],
"q": [{"Modifiers": [], "Keys": ["KEY_Q"]}],
"r": [{"Modifiers": [], "Keys": ["KEY_R"]}],
"s": [{"Modifiers": [], "Keys": ["KEY_S"]}],
"t": [{"Modifiers": [], "Keys": ["KEY_T"]}],
"u": [{"Modifiers": [], "Keys": ["KEY_U"]}],
"v": [{"Modifiers": [], "Keys": ["KEY_V"]}],
"w": [{"Modifiers": [], "Keys": ["KEY_W"]}],
"x": [{"Modifiers": [], "Keys": ["KEY_X"]}],
"z": [{"Modifiers": [], "Keys": ["KEY_Z"]}],
"y": [{"Modifiers": [], "Keys": ["KEY_Y"]}],
"#": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_3"]}],
"[": [{"Modifiers": [], "Keys": ["KEY_LEFTBRACE"]}],
"{": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_LEFTBRACE"]}],
";": [{"Modifiers": [], "Keys": ["KEY_SEMICOLON"]}],
":": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_SEMICOLON"]}],
"'": [{"Modifiers": [], "Keys": ["KEY_APOSTROPHE"]}],
"\"": [{"Modifiers": ["MOD_LEFT_SHIFT"], "Keys": ["KEY_APOSTROPHE"]}]
}
}

View File

@ -8,32 +8,13 @@ import(
"time"
)
func Test() {
filepath := "/dev/hidg0"
var (
StringAscii = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
StringSpecial1 = "§°üÜöÖäĵ€ß¹²³⁴⁵⁶⁷⁸⁹⁰¼½¬„“¢«»æſðđŋħĸł’¶ŧ←↓→øþ"
kbdRepEmpty := hid.NewKeyboardOutReport(0)
kbdRep_a := hid.NewKeyboardOutReport(0, hid.HID_KEY_A)
kbdRep_A := hid.NewKeyboardOutReport(hid.HID_MOD_KEY_LEFT_SHIFT, hid.HID_KEY_A)
)
err := kbdRepEmpty.WriteTo(filepath)
if err != nil {log.Fatal(err)}
err = kbdRep_a.WriteTo(filepath)
if err != nil {log.Fatal(err)}
err = kbdRepEmpty.WriteTo(filepath)
if err != nil {log.Fatal(err)}
err = kbdRep_A.WriteTo(filepath)
if err != nil {log.Fatal(err)}
err = kbdRepEmpty.WriteTo(filepath)
if err != nil {log.Fatal(err)}
err = kbdRep_A.WriteTo(filepath)
if err != nil {log.Fatal(err)}
err = kbdRepEmpty.WriteTo(filepath)
if err != nil {log.Fatal(err)}
}
func main() {
/*
func TestMapCreation() {
//Define test keyboard map
mapDeASCII := hid.HIDKeyboardLanguageMap{
Name: "DE",
@ -51,14 +32,14 @@ func main() {
err := mapDeASCII.StoreToFile("/tmp/DE_ASCII.json")
if err != nil { log.Fatal(err)}
/*
testmap, err := hid.loadKeyboardLanguageMapFromFile("keymaps/DE_ASCII.json")
if err != nil { log.Fatal(err)}
fmt.Println(testmap)
*/
}
hidCtl, err := hid.NewHIDController("/dev/hidg0", "keymaps", "")
if err != nil {panic(err)}
func TestComboPress(hidCtl *hid.HIDController) {
testcombos := []string {"SHIFT 1", "ENTER", "ALT TAB", "ALT TABULATOR", " WIN ", "GUI "}
for _,comboStr := range testcombos {
fmt.Printf("Pressing combo '%s'\n", comboStr)
@ -70,14 +51,10 @@ func main() {
fmt.Printf("Error pressing combo '%s': %v\n", comboStr, err)
}
}
}
fmt.Printf("Chosen keyboard language mapping '%s'\n", hidCtl.Keyboard.ActiveLanguageLayout.Name)
func TestLEDTriggers(hidCtl *hid.HIDController) {
fmt.Println("Initial sleep to test if we capture LED state changes from the past, as soon as we start waiting (needed at boot)")
time.Sleep(3 * time.Second)
//ToDo: Test multiple waits in separate goroutines
@ -120,19 +97,37 @@ func main() {
} else {
fmt.Printf("Triggered by %+v\n", trigger)
}
}
func TestStringTyping(hidCtl *hid.HIDController) {
fmt.Println("Typing:")
fmt.Println(StringAscii)
//err := hidCtl.Keyboard.StringToPressKeySequence("Test:" + StringAscii + "\t" + StringSpecial1)
err := hidCtl.Keyboard.StringToPressKeySequence(StringAscii)
if err != nil { fmt.Println(err)}
}
func main() {
/*
*/
hidCtl, err := hid.NewHIDController("/dev/hidg0", "keymaps", "")
if err != nil {panic(err)}
hidCtl.Keyboard.KeyDelay = 100
// hidCtl.Keyboard.KeyDelayJitter = 200
// hidCtl.Keyboard.KeyDelayJitter = 200
fmt.Printf("Available language maps:\n%v\n",hidCtl.Keyboard.ListLanguageMapNames())
err = hidCtl.Keyboard.SetActiveLanguageMap("DE")
err = hidCtl.Keyboard.SetActiveLanguageMap("US") //first loaded language map is set by default
if err != nil { fmt.Println(err)}
fmt.Printf("Chosen keyboard language mapping '%s'\n", hidCtl.Keyboard.ActiveLanguageLayout.Name)
// ascii := " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
// special := "§°üÜöÖäĵ€ß¹²³⁴⁵⁶⁷⁸⁹⁰¼½¬„“¢«»æſðđŋħĸł’¶ŧ←↓→øþ"
// err = keyboard.StringToPressKeySequence("Test:" + ascii + "\t" + special)
if err != nil { fmt.Println(err)}
/* tests */
//TestComboPress(hidCtl)
//TestLEDTriggers(hidCtl)
TestStringTyping(hidCtl)
/*
script := `
for (i=0; i<10; i++) {
@ -151,7 +146,7 @@ func main() {
console.log("Log message from JS");
`
hidCtl.RunScriptAsync(script)
hidCtl.StartScriptAsBackgroundJob(script)
fmt.Println("Running script ...")
val,err := hidCtl.RunScript(script)
@ -174,12 +169,12 @@ func main() {
}
`
id, avm,_ := hidCtl.RunScriptAsync(script2)
id, avm,_ := hidCtl.StartScriptAsBackgroundJob(script2)
fmt.Printf("Satrted ASYNC VM %d ...\n", id)
time.Sleep(1500 * time.Millisecond)
id2 ,avm2, _ := hidCtl.RunScriptAsync(script3)
id2 ,avm2, _ := hidCtl.StartScriptAsBackgroundJob(script3)
fmt.Printf("Slept 1500 ms, started VM %d ...\n", id2)
fmt.Printf("AsyncVM state isWorking of id %d: %v\n", id, avm.IsWorking())
fmt.Printf("AsyncVM state isWorking of id %d: %v\n", id2, avm2.IsWorking())
@ -188,9 +183,9 @@ func main() {
fmt.Printf("Slept 1500 ms, cancelling VM %d and start waiting for VM %d...\n", id2, id)
fmt.Printf("AsyncVM state isWorking of id %d: %v\n", id, avm.IsWorking())
fmt.Printf("AsyncVM state isWorking of id %d: %v\n", id2, avm2.IsWorking())
fmt.Printf("List of currently working VMs: %v\n", hidCtl.CurrentlyWorkingVmIDs())
fmt.Printf("List of currently working VMs: %v\n", hidCtl.GetRunningBackgroundJobs())
//avm2.Cancel()
hidCtl.CancelAsyncScript(id2)
hidCtl.CancelBackgroundJob(id2)
//Waiting for canceled script
_,err = avm2.WaitResult()
@ -205,7 +200,7 @@ func main() {
avm2.RunAsync(script3)
//Cancel all
hidCtl.CancelAllVMs()
hidCtl.CancelAllBackgroundJobs()
val,err = avm.WaitResult()
@ -214,5 +209,5 @@ func main() {
fmt.Printf("AsyncVM state isWorking of id %d: %v\n", id, avm.IsWorking())
fmt.Printf("AsyncVM state isWorking of id %d: %v\n", id2, avm2.IsWorking())
*/
}