Skip to content

Commit 68777ff

Browse files
committed
v0.1
1 parent 76ae609 commit 68777ff

File tree

3 files changed

+81
-10
lines changed

3 files changed

+81
-10
lines changed

.gitignore

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,8 @@
1-
# Binaries for programs and plugins
2-
*.exe
31
*.dll
4-
*.so
52
*.dylib
6-
7-
# Test binary, build with `go test -c`
8-
*.test
9-
10-
# Output of the go coverage tool, specifically when used with LiteIDE
3+
*.exe
114
*.out
12-
13-
# Project-local glide cache, RE: https://github.com/Masterminds/glide/issues/736
5+
*.so
6+
*.test
147
.glide/
8+
linux-input-control

main.go

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package main
2+
3+
import (
4+
"encoding/binary"
5+
"log"
6+
"os"
7+
)
8+
9+
var (
10+
senable = []byte("a")
11+
sdisable = []byte("d")
12+
)
13+
14+
func main() {
15+
// TODO: command line flag
16+
masterPath := "/dev/input/event0"
17+
slavePath := "/sys/bus/i2c/devices/0-0050/neocmd"
18+
19+
var master, slave *os.File
20+
var err error
21+
if master, err = os.Open(masterPath); err != nil {
22+
log.Fatal("open ", masterPath, err)
23+
}
24+
25+
slaveState := true
26+
evb := make([]byte, 16)
27+
for {
28+
n, err := master.Read(evb)
29+
if err != nil {
30+
log.Print("master.Read: ", err)
31+
continue
32+
}
33+
if n != 16 {
34+
log.Printf("master.Read invalid event size=%d, ignore", n)
35+
continue
36+
}
37+
evType := binary.LittleEndian.Uint16(evb[8:])
38+
evCode := binary.LittleEndian.Uint16(evb[10:])
39+
evValue := binary.LittleEndian.Uint32(evb[12:])
40+
log.Printf("event type=%d code=%d value=%d", evType, evCode, evValue)
41+
42+
if evType == 1 && evCode == 116 && evValue == 1 {
43+
sb := senable
44+
slaveState = !slaveState
45+
if !slaveState {
46+
sb = sdisable
47+
}
48+
log.Printf("power key pressed, new slavestate=%v writing=%s", slaveState, string(sb))
49+
if slave, err = os.OpenFile(slavePath, os.O_WRONLY|os.O_TRUNC, 0644); err != nil {
50+
log.Fatal("open ", slavePath, err)
51+
}
52+
if _, err = slave.WriteAt(sb, 0); err != nil {
53+
log.Fatal("slave.Write ", err)
54+
}
55+
if err = slave.Close(); err != nil {
56+
log.Fatal("slave.Close ", err)
57+
}
58+
}
59+
}
60+
}

readme.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
What
2+
====
3+
4+
For XCSoar flight pilots. Switch IR touchpad on/off with power button on Kobo.
5+
6+
7+
Instruction
8+
===========
9+
10+
Build: `ARCH=arm GOARM=7 GOOS=linux go build`
11+
Upload: `tnftp -u kobo@192.168.1.111: linux-input-control`
12+
13+
14+
Contact
15+
=======
16+
17+
temotor@gmail.com

0 commit comments

Comments
 (0)