Implemented GetKeyNumsFromOutput
This commit is contained in:
16
src/main.go
16
src/main.go
@@ -5,6 +5,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
|
"regexp"
|
||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
@@ -17,7 +18,20 @@ const (
|
|||||||
// Extract pressed keys from bufer buf
|
// Extract pressed keys from bufer buf
|
||||||
// It returns slice with key numbers in the same order
|
// It returns slice with key numbers in the same order
|
||||||
func GetKeyNumsFromOutput(buf []byte) []uint8 {
|
func GetKeyNumsFromOutput(buf []byte) []uint8 {
|
||||||
return make([]uint8, 0)
|
const KEY_NUM_STRING_RE = "press[ ]+(\\d+)"
|
||||||
|
re := regexp.MustCompile(KEY_NUM_STRING_RE)
|
||||||
|
res_byte := re.FindAll(buf, -1)
|
||||||
|
keyNums := make([]uint8, len(res_byte))
|
||||||
|
re = regexp.MustCompile("\\d+")
|
||||||
|
for i, line := range res_byte {
|
||||||
|
num_byte := re.Find(line)
|
||||||
|
if num, err := strconv.Atoi(string(num_byte)); err == nil {
|
||||||
|
keyNums[i] = uint8(num)
|
||||||
|
} else {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return keyNums
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|||||||
Reference in New Issue
Block a user