diff --git a/hid/controller.go b/hid/controller.go index 46ac237..8b9f293 100644 --- a/hid/controller.go +++ b/hid/controller.go @@ -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() diff --git a/keymaps/US.json b/keymaps/US.json new file mode 100755 index 0000000..f63b9b2 --- /dev/null +++ b/keymaps/US.json @@ -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"]}] + + + } +} diff --git a/keymaps/common.json b/keymaps/common.json index 9d3afa5..5b1f71f 100755 --- a/keymaps/common.json +++ b/keymaps/common.json @@ -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"]}] + } } diff --git a/testhid.go b/testhid.go index 98a3c2d..1debd9c 100644 --- a/testhid.go +++ b/testhid.go @@ -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()) - + */ } \ No newline at end of file