github.com/jmigpin/editor@v1.6.0/driver/xdriver/xinput/kmap_test.go (about) 1 package xinput 2 3 import ( 4 "os" 5 "testing" 6 7 "github.com/BurntSushi/xgb" 8 "github.com/BurntSushi/xgb/xproto" 9 "github.com/jmigpin/editor/util/uiutil/event" 10 ) 11 12 func TestKMapLookup1(t *testing.T) { 13 kmap, conn, err := getKMap(t) 14 if err != nil { 15 t.Fatal(err) 16 } 17 defer conn.Close() 18 19 type pair struct { 20 kc xproto.Keycode 21 kmods uint16 22 eks event.KeySym 23 ru rune 24 } 25 pairs := []pair{ 26 {11, 0, event.KSym2, '2'}, 27 {11, xproto.KeyButMaskMod5, event.KSymAt, '@'}, 28 {38, 0, event.KSymA, 'a'}, 29 {38, xproto.KeyButMaskShift, event.KSymA, 'A'}, 30 {35, xproto.KeyButMaskShift, event.KSymGrave, '`'}, 31 {65, 0, event.KSymSpace, ' '}, 32 {51, 0, event.KSymTilde, '~'}, 33 } 34 35 //println(kmap.KeysymTable()) 36 37 //for i := kmap.si.MinKeycode; i < 255; i++ { 38 // eks, ru := kmap.Lookup(xproto.Keycode(i), 0) 39 // fmt.Printf("%v, %v, %v(%c)\n", i, eks, ru, ru) 40 //} 41 42 for _, p := range pairs { 43 eks, ru := kmap.Lookup(p.kc, p.kmods) 44 if eks != p.eks || ru != p.ru { 45 t.Logf("%v, %v, %v(%c)\n", p.kc, eks, ru, ru) 46 t.Fail() 47 } 48 } 49 } 50 51 //---------- 52 53 func getKMap(t *testing.T) (*KMap, *xgb.Conn, error) { 54 display := os.Getenv("DISPLAY") 55 conn, err := xgb.NewConnDisplay(display) 56 if err != nil { 57 return nil, nil, err 58 } 59 km, err := NewKMap(conn) 60 if err != nil { 61 conn.Close() 62 return nil, nil, err 63 } 64 return km, conn, err 65 }