本文整理汇总了Golang中github.com/BurntSushi/xgbutil/xevent.Main函数的典型用法代码示例。如果您正苦于以下问题:Golang Main函数的具体用法?Golang Main怎么用?Golang Main使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Main函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: showAll
func showAll() {
X, err := xgbutil.NewConn()
if err != nil {
log.Fatal(err)
}
for i := 0; i < len(testImages); i++ {
fname := testImages[i]
fmt.Printf("%d Working on %s\n", i, fname)
file, err := os.Open(testDir + fname)
if err != nil {
continue
}
defer file.Close()
var img image.Image
// Decode the image.
// using true forces bmp decoder, otherwise whatever is registered for ext is used
// result slightly different if non-bmps fed to it
if true {
img, err = bmp.Decode(file)
} else {
img, _, err = image.Decode(file)
}
if err != nil {
continue
}
ximg := xgraphics.NewConvert(X, img)
ximg.XShowExtra(fname, true)
time.Sleep(1 * time.Second)
}
xevent.Main(X)
time.Sleep(4 * time.Second)
xevent.Quit(X)
}
开发者ID:ishawge,项目名称:bmp,代码行数:34,代码来源:bmpic.go
示例2: main
func main() {
X, err := xgbutil.NewConn()
if err != nil {
log.Fatal(err)
}
// Create window for receiving compressed MotionNotify events.
cwin := newWindow(X, 0x00ff00)
// Attach event handler for MotionNotify that compresses events.
xevent.MotionNotifyFun(
func(X *xgbutil.XUtil, ev xevent.MotionNotifyEvent) {
ev = compressMotionNotify(X, ev)
fmt.Printf("COMPRESSED: (EventX %d, EventY %d)\n",
ev.EventX, ev.EventY)
time.Sleep(workTime)
}).Connect(X, cwin.Id)
// Create window for receiving uncompressed MotionNotify events.
uwin := newWindow(X, 0xff0000)
// Attach event handler for MotionNotify that does not compress events.
xevent.MotionNotifyFun(
func(X *xgbutil.XUtil, ev xevent.MotionNotifyEvent) {
fmt.Printf("UNCOMPRESSED: (EventX %d, EventY %d)\n",
ev.EventX, ev.EventY)
time.Sleep(workTime)
}).Connect(X, uwin.Id)
xevent.Main(X)
}
开发者ID:auroralaboratories,项目名称:corona-api,代码行数:31,代码来源:main.go
示例3: main
func main() {
// If we just need the keybindings, print them and be done.
if flagKeybindings {
for _, keyb := range keybinds {
fmt.Printf("%-10s %s\n", keyb.key, keyb.desc)
}
fmt.Printf("%-10s %s\n", "mouse",
"Left mouse button will pan the image.")
os.Exit(0)
}
// Run the CPU profile if we're instructed to.
if len(flagProfile) > 0 {
f, err := os.Create(flagProfile)
if err != nil {
errLg.Fatal(err)
}
pprof.StartCPUProfile(f)
defer pprof.StopCPUProfile()
}
// Whoops!
if flag.NArg() == 0 {
fmt.Fprint(os.Stderr, "\n")
errLg.Print("No images specified.\n\n")
usage()
}
// Connect to X and quit if we fail.
X, err := xgbutil.NewConn()
if err != nil {
errLg.Fatal(err)
}
// Create the X window before starting anything so that the user knows
// something is going on.
window := newWindow(X)
// Decode all images (in parallel).
names, imgs := decodeImages(findFiles(flag.Args()))
// Die now if we don't have any images!
if len(imgs) == 0 {
errLg.Fatal("No images specified could be shown. Quitting...")
}
// Auto-size the window if appropriate.
if flagAutoResize {
window.Resize(imgs[0].Bounds().Dx(), imgs[0].Bounds().Dy())
}
// Create the canvas and start the image goroutines.
chans := canvas(X, window, names, len(imgs))
for i, img := range imgs {
go newImage(X, names[i], img, i, chans.imgLoadChans[i], chans.imgChan)
}
// Start the main X event loop.
xevent.Main(X)
}
开发者ID:BurntSushi,项目名称:imgv,代码行数:60,代码来源:main.go
示例4: main
func main() {
X, err := xgbutil.NewConn()
if err != nil {
log.Fatalln(err)
}
// The message box uses the keybind module, so we must initialize it.
keybind.Initialize(X)
// Creating a new message prompt is as simple as supply an X connection,
// a theme and a configuration. We use built in defaults here.
msgPrompt := prompt.NewMessage(X,
prompt.DefaultMessageTheme, prompt.DefaultMessageConfig)
// Show maps the message prompt window.
// If a duration is specified, the window does NOT acquire focus and
// automatically disappears after the specified time.
// If a duration is not specified (i.e., '0'), then the window is mapped,
// and acquires focus. It does not disappear until it loses focus or when
// the user hits the "confirm" or "cancel" keys (usually "enter" and
// "escape").
timeout := 2 * time.Second // or "0" for no timeout.
msgPrompt.Show(xwindow.RootGeometry(X), "Hello, world!", timeout, hidden)
xevent.Main(X)
}
开发者ID:pascience,项目名称:foci,代码行数:26,代码来源:main.go
示例5: NewDisplay
func NewDisplay(width, height, border, heading int, name string) (*Display, error) {
d := new(Display)
d.w = float64(width)
d.h = float64(height)
d.bord = float64(border)
d.head = float64(heading)
X, err := xgbutil.NewConn()
if err != nil {
return nil, err
}
keybind.Initialize(X)
d.ximg = xgraphics.New(X, image.Rect(
0,
0,
border*2+width,
border*2+heading+height))
err = d.ximg.CreatePixmap()
if err != nil {
return nil, err
}
painter := NewXimgPainter(d.ximg)
d.gc = draw2d.NewGraphicContextWithPainter(d.ximg, painter)
d.gc.Save()
d.gc.SetStrokeColor(color.White)
d.gc.SetFillColor(color.White)
d.gc.Clear()
d.wid = d.ximg.XShowExtra(name, true)
d.x = X
go func() {
xevent.Main(X)
}()
return d, nil
}
开发者ID:stanim,项目名称:display,代码行数:33,代码来源:display.go
示例6: NewImage
// NewImage returns a new image canvas
// that draws to the given image. The
// minimum point of the given image
// should probably be 0,0.
func NewImage(img draw.Image, name string) (*Canvas, error) {
w := float64(img.Bounds().Max.X - img.Bounds().Min.X)
h := float64(img.Bounds().Max.Y - img.Bounds().Min.Y)
X, err := xgbutil.NewConn()
if err != nil {
return nil, err
}
keybind.Initialize(X)
ximg := xgraphics.New(X, image.Rect(0, 0, int(w), int(h)))
err = ximg.CreatePixmap()
if err != nil {
return nil, err
}
painter := NewPainter(ximg)
gc := draw2d.NewGraphicContextWithPainter(ximg, painter)
gc.SetDPI(dpi)
gc.Scale(1, -1)
gc.Translate(0, -h)
wid := ximg.XShowExtra(name, true)
go func() {
xevent.Main(X)
}()
c := &Canvas{
Canvas: vgimg.NewWith(vgimg.UseImageWithContext(img, gc)),
x: X,
ximg: ximg,
wid: wid,
}
vg.Initialize(c)
return c, nil
}
开发者ID:nolenroyalty,项目名称:bangarang,代码行数:38,代码来源:canvas.go
示例7: run
func run() error {
Xu, err := xgbutil.NewConn()
if err != nil {
return err
}
defer Xu.Conn().Close()
keybind.Initialize(Xu)
if err := randr.Init(Xu.Conn()); err != nil {
return err
}
audio, err := newAudio(Xu)
if err != nil {
return err
}
defer audio.Close()
brightness, err := newBrightness(Xu)
if err != nil {
return err
}
defer brightness.Close()
xevent.Main(Xu)
return nil
}
开发者ID:tv42,项目名称:x11-media-keys,代码行数:26,代码来源:main.go
示例8: showOne
func showOne(testNum int) {
X, err := xgbutil.NewConn()
if err != nil {
log.Fatal(err)
}
fname := testImages[testNum]
fmt.Printf("Working on %s\n", fname)
file, err := os.Open(testDir + fname)
if err != nil {
log.Fatal(err)
}
defer file.Close()
// Decode the image.
img, _, err := image.Decode(file)
if err != nil {
log.Fatal(err)
}
ximg := xgraphics.NewConvert(X, img)
ximg.XShowExtra(fname, true)
xevent.Main(X)
time.Sleep(4 * time.Second)
xevent.Quit(X)
}
开发者ID:ishawge,项目名称:bmp,代码行数:25,代码来源:bmpic.go
示例9: main
func main() {
X, _ = xgbutil.NewConn()
go newGradientWindow(200, 200)
go newGradientWindow(400, 400)
xevent.Main(X)
}
开发者ID:droundy,项目名称:xgbutil,代码行数:8,代码来源:tst_gradient_resize.go
示例10: main
func main() {
X, err := xgbutil.NewConn()
if err != nil {
log.Fatal(err)
}
// Load some font. You may need to change the path depending upon your
// system configuration.
fontReader, err := os.Open(fontPath)
if err != nil {
log.Fatal(err)
}
// Now parse the font.
font, err := xgraphics.ParseFont(fontReader)
if err != nil {
log.Fatal(err)
}
// Create some canvas.
ximg := xgraphics.New(X, image.Rect(0, 0, canvasWidth, canvasHeight))
ximg.For(func(x, y int) xgraphics.BGRA {
return bg
})
// Now write the text.
_, _, err = ximg.Text(10, 10, fg, size, font, msg)
if err != nil {
log.Fatal(err)
}
// Compute extents of first line of text.
_, firsth := xgraphics.Extents(font, size, msg)
// Now show the image in its own window.
win := ximg.XShowExtra("Drawing text using xgraphics", true)
// Now draw some more text below the above and demonstrate how to update
// only the region we've updated.
_, _, err = ximg.Text(10, 10+firsth, fg, size, font, "Some more text.")
if err != nil {
log.Fatal(err)
}
// Now compute extents of the second line of text, so we know which region
// to update.
secw, sech := xgraphics.Extents(font, size, "Some more text.")
// Now repaint on the region that we drew text on. Then update the screen.
bounds := image.Rect(10, 10+firsth, 10+secw, 10+firsth+sech)
ximg.SubImage(bounds).XDraw()
ximg.XPaint(win.Id)
// All we really need to do is block, which could be achieved using
// 'select{}'. Invoking the main event loop however, will emit error
// message if anything went seriously wrong above.
xevent.Main(X)
}
开发者ID:sbinet,项目名称:xgbutil,代码行数:58,代码来源:main.go
示例11: grabKeyboardAndMouse
func grabKeyboardAndMouse(m *Manager) {
if m == nil {
return
}
//go func() {
X, err := xgbutil.NewConn()
if err != nil {
logger.Info("Get New Connection Failed:", err)
return
}
keybind.Initialize(X)
mousebind.Initialize(X)
err = keybind.GrabKeyboard(X, X.RootWin())
if err != nil {
logger.Info("Grab Keyboard Failed:", err)
return
}
grabAllMouseButton(X)
xevent.ButtonPressFun(
func(X *xgbutil.XUtil, e xevent.ButtonPressEvent) {
dbus.Emit(m, "KeyReleaseEvent", "")
ungrabAllMouseButton(X)
keybind.UngrabKeyboard(X)
logger.Info("Button Press Event")
xevent.Quit(X)
}).Connect(X, X.RootWin())
xevent.KeyPressFun(
func(X *xgbutil.XUtil, e xevent.KeyPressEvent) {
value := parseKeyEnvent(X, e.State, e.Detail)
pressKeyStr = value
dbus.Emit(m, "KeyPressEvent", value)
}).Connect(X, X.RootWin())
xevent.KeyReleaseFun(
func(X *xgbutil.XUtil, e xevent.KeyReleaseEvent) {
if strings.ToLower(pressKeyStr) == "super_l" ||
strings.ToLower(pressKeyStr) == "super_r" {
pressKeyStr = "Super"
}
dbus.Emit(m, "KeyReleaseEvent", pressKeyStr)
pressKeyStr = ""
ungrabAllMouseButton(X)
keybind.UngrabKeyboard(X)
logger.Infof("Key: %s\n", pressKeyStr)
xevent.Quit(X)
}).Connect(X, X.RootWin())
xevent.Main(X)
//}()
}
开发者ID:felixonmars,项目名称:dde-daemon,代码行数:56,代码来源:grab.go
示例12: initialize
func initialize() {
X, err := xgbutil.NewConn()
if err != nil {
log.Fatal(err)
}
mousebind.Initialize(X)
xWindow := newWindow(X, INITIAL_WINDOW_WIDTH, INITIAL_WINDOW_HEIGHT)
go xevent.Main(X)
xorg.Initialize(
egl.NativeWindowType(uintptr(xWindow.Id)),
xorg.DefaultConfigAttributes,
xorg.DefaultContextAttributes)
}
开发者ID:nick-fedesna,项目名称:egles,代码行数:13,代码来源:init.go
示例13: main
func main() {
X, err := xgbutil.NewConn()
if err != nil {
log.Fatalf("Could not connect to X: %v", err)
}
keybind.Initialize(X)
keybind.KeyPressFun(
func(X *xgbutil.XUtil, e xevent.KeyPressEvent) {
fmt.Println("Key press!")
}).Connect(X, X.RootWin(), "Mod4-j")
xevent.Main(X)
}
开发者ID:droundy,项目名称:xgbutil,代码行数:14,代码来源:tst_keypress.go
示例14: initEGL
func initEGL(controlCh *controlCh, width, height int) *platform.EGLState {
X, err := xgbutil.NewConn()
if err != nil {
panic(err)
}
mousebind.Initialize(X)
keybind.Initialize(X)
xWindow := newWindow(controlCh, X, width, height)
go xevent.Main(X)
return xorg.Initialize(
egl.NativeWindowType(uintptr(xWindow.Id)),
xorg.DefaultConfigAttributes,
xorg.DefaultContextAttributes,
)
}
开发者ID:remogatto,项目名称:egl-examples,代码行数:15,代码来源:init.go
示例15: main
func main() {
X, err := xgbutil.NewConn()
fatal(err)
keybind.Initialize(X)
slct := prompt.NewSelect(X,
prompt.DefaultSelectTheme, prompt.DefaultSelectConfig)
// Create some artifical groups to use.
artGroups := []prompt.SelectGroup{
slct.NewStaticGroup("Group 1"),
slct.NewStaticGroup("Group 2"),
slct.NewStaticGroup("Group 3"),
slct.NewStaticGroup("Group 4"),
slct.NewStaticGroup("Group 5"),
}
// And now create some artificial items.
items := []*item{
newItem("andrew", 1), newItem("bruce", 2),
newItem("kaitlyn", 3),
newItem("cauchy", 4), newItem("plato", 1),
newItem("platonic", 2),
newItem("andrew gallant", 3),
newItem("Andrew Gallant", 4), newItem("Andrew", 1),
newItem("jim", 1), newItem("jimmy", 2),
newItem("jimbo", 3),
}
groups := make([]*prompt.SelectGroupItem, len(artGroups))
for i, artGroup := range artGroups {
groups[i] = slct.AddGroup(artGroup)
}
for _, item := range items {
item.promptItem = slct.AddChoice(item)
}
geom := headGeom(X)
keybind.KeyPressFun(
func(X *xgbutil.XUtil, ev xevent.KeyPressEvent) {
showGroups := newGroups(groups, items)
slct.Show(geom, prompt.TabCompletePrefix, showGroups)
}).Connect(X, X.RootWin(), selectActivate, true)
println("Loaded...")
xevent.Main(X)
}
开发者ID:dlintw,项目名称:wingo,代码行数:48,代码来源:main.go
示例16: main
func main() {
// Connect to the X server using the DISPLAY environment variable.
X, err := xgbutil.NewConn()
if err != nil {
log.Fatal(err)
}
// Anytime the keybind (mousebind) package is used, keybind.Initialize
// *should* be called once. It isn't strictly necessary, but allows your
// keybindings to persist even if the keyboard mapping is changed during
// run-time. (Assuming you're using the xevent package's event loop.)
// It also handles the case when your modifier map is changed.
keybind.Initialize(X)
// Create a new window. We will listen for key presses and translate them
// only when this window is in focus. (Similar to how `xev` works.)
win, err := xwindow.Generate(X)
if err != nil {
log.Fatalf("Could not generate a new window X id: %s", err)
}
win.Create(X.RootWin(), 0, 0, 500, 500, xproto.CwBackPixel, 0xffffffff)
// Listen for Key{Press,Release} events.
win.Listen(xproto.EventMaskKeyPress, xproto.EventMaskKeyRelease)
// Map the window.
win.Map()
// Notice that we use xevent.KeyPressFun instead of keybind.KeyPressFun,
// because we aren't trying to make a grab *and* because we want to listen
// to *all* key press events, rather than just a particular key sequence
// that has been pressed.
xevent.KeyPressFun(
func(X *xgbutil.XUtil, e xevent.KeyPressEvent) {
// keybind.LookupString does the magic of implementing parts of
// the X Keyboard Encoding to determine an english representation
// of the modifiers/keycode tuple.
// N.B. It's working for me, but probably isn't 100% correct in
// all environments yet.
log.Println("Key:", keybind.LookupString(X, e.State, e.Detail))
}).Connect(X, win.Id)
// Finally, start the main event loop. This will route any appropriate
// KeyPressEvents to your callback function.
log.Println("Program initialized. Start pressing keys!")
xevent.Main(X)
}
开发者ID:droundy,项目名称:xgbutil,代码行数:47,代码来源:main.go
示例17: main
func main() {
// winw, winh := 128, 128
time.Sleep(time.Nanosecond)
X, err := xgbutil.NewConn()
if err != nil {
log.Fatal(err)
}
libre := xproto.Window(0x4a0001d)
xclock := xproto.Window(0x480000a)
showIcon(X, libre, "libre")
showIcon(X, xclock, "xclock")
xevent.Main(X)
}
开发者ID:droundy,项目名称:xgbutil,代码行数:17,代码来源:tst_image.go
示例18: initialize
func initialize() {
var err error
X, err := xgbutil.NewConn()
if err != nil {
log.Fatal(err)
}
mousebind.Initialize(X)
newWindow(X)
go xevent.Main(X)
display = egl.GetDisplay(egl.DEFAULT_DISPLAY)
if ok := egl.Initialize(display, nil, nil); !ok {
egl.LogError(egl.GetError())
}
if ok := egl.ChooseConfig(display, attr, &config, 1, &numConfig); !ok {
egl.LogError(egl.GetError())
}
if ok := egl.GetConfigAttrib(display, config, egl.NATIVE_VISUAL_ID, &vid); !ok {
egl.LogError(egl.GetError())
}
egl.BindAPI(egl.OPENGL_ES_API)
context = egl.CreateContext(display, config, egl.NO_CONTEXT, nil)
surface = egl.CreateWindowSurface(display, config,
egl.NativeWindowType(uintptr(X.RootWin())), nil)
var val egl.Int
if ok := egl.QuerySurface(display, &val, egl.WIDTH, surface); !ok {
egl.LogError(egl.GetError())
}
if ok := egl.QuerySurface(display, &val, egl.HEIGHT, surface); !ok {
egl.LogError(egl.GetError())
}
if ok := egl.GetConfigAttrib(display, config, egl.SURFACE_TYPE, &val); !ok {
egl.LogError(egl.GetError())
}
gl.ClearColor(0.0, 0, 0, 1.0)
p := Program(FragmentShader(fsh), VertexShader(vsh))
gl.UseProgram(p)
gl.BindAttribLocation(p, gl.Uint(attrPos), "pos")
gl.BindAttribLocation(p, gl.Uint(attrColor), "color")
uMatrix = gl.Int(gl.GetUniformLocation(p, "modelviewProjection"))
}
开发者ID:remogatto,项目名称:egles,代码行数:45,代码来源:main.go
示例19: BindKeys
func BindKeys(keymap map[string]string) {
X, err := xgbutil.NewConn()
if err != nil {
log.Fatal(err)
}
keybind.Initialize(X)
for k, v := range keymap {
v := v
err = keybind.KeyPressFun(func(X *xgbutil.XUtil, e xevent.KeyPressEvent) {
h.broadcast <- v
}).Connect(X, X.RootWin(), k, true)
if err != nil {
log.Fatal(err)
}
}
log.Println("Program initialized. Start pressing keys!")
xevent.Main(X)
}
开发者ID:hobeone,项目名称:keysocket-server,代码行数:18,代码来源:main.go
示例20: main
func main() {
X, err := xgbutil.NewConn()
if err != nil {
log.Fatal(err)
}
keybind.Initialize(X)
currentuser, err := user.Current()
if err != nil {
log.Fatal(err)
}
configfile := currentuser.HomeDir + "/.config/hotkeys.conf.json"
watcher, err := inotify.NewWatcher()
if err != nil {
log.Fatal(err)
}
err = watcher.AddWatch(configfile, inotify.IN_CLOSE_WRITE)
if err != nil {
log.Fatal(err)
}
go func() {
for {
select {
case ev := <-watcher.Event:
log.Println(ev)
err := bindall(configfile, X)
if err != nil {
log.Println(err)
continue
}
case err := <-watcher.Error:
log.Println("error:", err)
}
}
}()
err = bindall(configfile, X)
if err != nil {
log.Panicln(err)
}
xevent.Main(X)
}
开发者ID:jeromenerf,项目名称:hotkeys,代码行数:44,代码来源:hotkeys.go
注:本文中的github.com/BurntSushi/xgbutil/xevent.Main函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论