-
Notifications
You must be signed in to change notification settings - Fork 1
/
sampleEngine.go
67 lines (54 loc) · 1.53 KB
/
sampleEngine.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package main
import (
"fmt"
"github.com/godbus/dbus"
"github.com/sarim/goibus/ibus"
)
type GittuEngine struct {
ibus.Engine
propList *ibus.PropList
}
func (e *GittuEngine) ProcessKeyEvent(keyval uint32, keycode uint32, state uint32) (bool, *dbus.Error) {
fmt.Println("Process Key Event > ", keyval, keycode, state)
if state == 0 && keyval == 115 {
e.UpdateAuxiliaryText(ibus.NewText("s"), true)
lt := ibus.NewLookupTable()
lt.AppendCandidate("sss")
lt.AppendCandidate("s")
lt.AppendCandidate("gittu")
lt.AppendLabel("1:")
lt.AppendLabel("2:")
lt.AppendLabel("3:")
e.UpdateLookupTable(lt, true)
e.UpdatePreeditText(ibus.NewText("s"), uint32(1), true)
return true, nil
}
return false, nil
}
func (e *GittuEngine) FocusIn() *dbus.Error {
fmt.Println("FocusIn")
e.RegisterProperties(e.propList)
return nil
}
func (e *GittuEngine) PropertyActivate(prop_name string, prop_state uint32) *dbus.Error {
fmt.Println("PropertyActivate", prop_name)
return nil
}
var eid = 0
func GittuEngineCreator(conn *dbus.Conn, engineName string) dbus.ObjectPath {
eid++
fmt.Println("Creating Gittu Engine #", eid)
objectPath := dbus.ObjectPath(fmt.Sprintf("/org/freedesktop/IBus/Engine/GittuGo/%d", eid))
propp := ibus.NewProperty(
"setup",
ibus.PROP_TYPE_NORMAL,
"Preferences - Gittu",
"gtk-preferences",
"Configure Gittu Engine",
true,
true,
ibus.PROP_STATE_UNCHECKED)
engine := &GittuEngine{ibus.BaseEngine(conn, objectPath), ibus.NewPropList(propp)}
ibus.PublishEngine(conn, objectPath, engine)
return objectPath
}