diff --git a/js/x11/core/examples/smoketest/sendevent.js b/js/x11/core/examples/smoketest/sendevent.js new file mode 100644 index 0000000..ac6d364 --- /dev/null +++ b/js/x11/core/examples/smoketest/sendevent.js @@ -0,0 +1,63 @@ +var x11 = require('../../lib'); + +var xclient = x11.createClient({debug: true}); +var Exposure = x11.eventMask.Exposure; +var PointerMotion = x11.eventMask.PointerMotion; +var pts = []; + +xclient.on('connect', function(display) { + var X = this; + var root = display.screen[0].root; + var white = display.screen[0].white_pixel; + var black = display.screen[0].black_pixel; + + function createWindow() + { + var wid = X.AllocID(); + // id, parentId, x, y, width, height, borderWidth, depth, _class, visual, values + X.CreateWindow( + wid, root, + 10, 10, 400, 300, + 0, 0, 0, 0, { + backgroundPixel: white, eventMask: Exposure|PointerMotion + }); + X.MapWindow(wid); + return wid; + } + + var wid = createWindow(); + var wid1 = createWindow(); + + var gc = X.AllocID(); + X.CreateGC(gc, wid, { foreground: black, background: white } ); + + X.on('event', function(ev) { + //console.log(ev); + if (ev.type == 12) + { + // expose + } else if (ev.type == 6) { + X.PolyPoint(0, ev.wid, gc, [ev.x, ev.y]); + // send copy of event to the second window + if (ev.wid == wid) // don't send it from second window + { + // set window in the event we are sending + var n = wid1; + var offset = 12; + var buf = ev.rawData; + buf[offset++] = n & 0xff; + buf[offset++] = (n >> 8) & 0xff; + buf[offset++] = (n >> 16) & 0xff; + buf[offset++] = (n >> 24) & 0xff; + + X.SendEvent(wid1, 1, PointerMotion, ev.rawData); + } else { + console.log('GotData!'); + } + } + }); + + //X.on('error', function(e) { + // console.log(e); + //}); +});