diff --git a/lib/x11/corereqs.js b/lib/x11/corereqs.js index 61b6f5a..689eceb 100644 --- a/lib/x11/corereqs.js +++ b/lib/x11/corereqs.js @@ -204,6 +204,17 @@ module.exports = { } ], - //TODO: remove when finished - DummyLast: [] + PolyFillRectangle: [ + function(drawable, gc, rects) { // x1, y1, w1, h1, x2, y2, w2, h2... + var format = 'CxSL'; + var numrects4bytes = rects.len*2; + var args = [60, 3+numrects4bytes, drawable, gc]; + for (var i=0; i < rects.length; ++i) + { + format += 'S'; + args.push(rects[i]); + } + return [format, args]; + } + ] } diff --git a/lib/x11/eventmask.js b/lib/x11/eventmask.js index a7ce23d..1b3b95c 100644 --- a/lib/x11/eventmask.js +++ b/lib/x11/eventmask.js @@ -1,4 +1,4 @@ -module.exports.eventMask { +module.exports.eventMask = { KeyPress: 0x00000001, KeyRelease: 0x00000002, ButtonPress: 0x00000004, diff --git a/lib/x11/index.js b/lib/x11/index.js index f8e488d..eeae01c 100644 --- a/lib/x11/index.js +++ b/lib/x11/index.js @@ -1,2 +1,4 @@ var core = require('./xcore'); -module.exports.createClient = core.createClient; \ No newline at end of file +var em = require('./eventmask').eventMask; +module.exports.createClient = core.createClient; +module.exports.eventMask = em; \ No newline at end of file diff --git a/lib/x11/xcore.js b/lib/x11/xcore.js index 4edead6..90de938 100644 --- a/lib/x11/xcore.js +++ b/lib/x11/xcore.js @@ -163,6 +163,14 @@ XClient.prototype.unpackEvent = function(type, seq, extra, raw) event.y = values[6]; event.buttons = values[7]; event.sameScreen = values[8]; + } else if (type == 12) { // Expose + var values = raw.unpack('LSSSSS'); + event.wid = values[0]; + event.x = values[1]; + event.y = values[2]; + event.width = values[3]; + event.height = values[4]; + event.count = values[5]; // TODO: ??? } return event; } diff --git a/test/creategc.js b/test/creategc.js index c807657..d5b052b 100644 --- a/test/creategc.js +++ b/test/creategc.js @@ -1,16 +1,17 @@ var x11 = require('../lib/x11'); var xclient = x11.createClient(); +var PointerMotion = x11.eventMask.PointerMotion; var mapped = true; + xclient.on('connect', function(display) { var X = this; var root = display.screen[0].root; - var wid = X.AllocID(); + var white = display.screen[0].white_pixel; + var black = display.screen[0].black_pixel; - X.CreateWindow(wid, root, 10, 10, 400, 300, 1, 1, 0, { backgroundPixel: 0, eventMask: 0x00000040 }); - X.MapWindow(wid); - + var wid = X.AllocID(); + X.CreateWindow(wid, root, 10, 10, 400, 300, 1, 1, 0, { backgroundPixel: white, eventMask: PointerMotion }); var cid = X.AllocID(); - X.CreateGC(cid, wid); - + X.CreateGC(cid, wid); }); \ No newline at end of file diff --git a/test/createwindow.js b/test/createwindow.js index 1aa932e..3f91bae 100644 --- a/test/createwindow.js +++ b/test/createwindow.js @@ -1,17 +1,19 @@ var x11 = require('../lib/x11'); var xclient = x11.createClient(); +var PointerMotion = x11.eventMask.PointerMotion; xclient.on('connect', function(display) { var X = this; var root = display.screen[0].root; var wid = X.AllocID(); + var white = display.screen[0].white_pixel; + var black = display.screen[0].black_pixel; - X.CreateWindow(wid, root, 10, 10, 400, 300, 1, 1, 0, { backgroundPixel: 0, eventMask: 0x00000040 }); + X.CreateWindow(wid, root, 10, 10, 400, 300, 1, 1, 0, { backgroundPixel: white, eventMask: PointerMotion }); X.MapWindow(wid); var wid1 = X.AllocID(); - X.CreateWindow(wid1, root, 10, 10, 40, 30, 1, 1, 0, { backgroundPixel: xclient.display.screen[0].white_pixel, eventMask: 0x00000040 }); + X.CreateWindow(wid1, root, 10, 10, 40, 30, 1, 1, 0, { backgroundPixel: black, eventMask: PointerMotion }); X.MapWindow(wid1); - }); \ No newline at end of file diff --git a/test/map_unmap.js b/test/map_unmap.js index 80d0dcc..6ccf232 100644 --- a/test/map_unmap.js +++ b/test/map_unmap.js @@ -1,13 +1,17 @@ var x11 = require('../lib/x11'); var xclient = x11.createClient(); +var PointerMotion = x11.eventMask.PointerMotion; var mapped = true; + xclient.on('connect', function(display) { var X = this; var root = display.screen[0].root; var wid = X.AllocID(); + var white = display.screen[0].white_pixel; + var black = display.screen[0].black_pixel; - X.CreateWindow(wid, root, 10, 10, 400, 300, 1, 1, 0, { backgroundPixel: 0, eventMask: 0x00000040 }); + X.CreateWindow(wid, root, 10, 10, 400, 300, 1, 1, 0, { backgroundPixel: white, eventMask: PointerMotion }); X.MapWindow(wid); setInterval(function() { if (!mapped) {