56 lines
1.6 KiB
JavaScript
56 lines
1.6 KiB
JavaScript
var x11 = require('../core/x11');
|
|
|
|
var Exposure = x11.eventMask.Exposure;
|
|
var PointerMotion = x11.eventMask.PointerMotion;
|
|
var KeyPress = x11.eventMask.KeyPress;
|
|
var ButtonPress = x11.eventMask.ButtonPress;
|
|
var ButtonRelease= x11.eventMask.ButtonRelease;
|
|
|
|
x11.createClient(function(err, display) {
|
|
if (!err) {
|
|
var X = display.client;
|
|
var root = display.screen[0].root;
|
|
var wid = X.AllocID();
|
|
X.CreateWindow(
|
|
wid,
|
|
root, // new window id, parent
|
|
0,
|
|
0,
|
|
400,
|
|
500, // x, y, w, h
|
|
0,
|
|
0,
|
|
0,
|
|
0, // border, depth, class, visual
|
|
{ eventMask: Exposure | PointerMotion | KeyPress | ButtonPress | ButtonRelease} // other parameters
|
|
);
|
|
X.MapWindow(wid);
|
|
var gc = X.AllocID();
|
|
X.CreateGC(gc, wid);
|
|
var white = display.screen[0].white_pixel;
|
|
var black = display.screen[0].black_pixel;
|
|
cidBlack = X.AllocID();
|
|
cidWhite = X.AllocID();
|
|
X.CreateGC(cidBlack, wid, { foreground: black, background: white });
|
|
X.CreateGC(cidWhite, wid, { foreground: white, background: black });
|
|
X.on('event', function(ev) {
|
|
// print(ev)
|
|
switch (ev.type) {
|
|
case x11.eventType.Expose:
|
|
X.PolyFillRectangle(wid, cidWhite, [0, 0, 500, 500]);
|
|
X.PolyText8(wid, cidBlack, 50, 50, ['Hello World, Node.JS!']);
|
|
X.PolyText8(wid, cidBlack, 50, 70, ['New line']);
|
|
break;
|
|
case x11.eventType.KeyPress:
|
|
if (ev.keycode == 24 /*q*/) process.exit()
|
|
break;
|
|
}
|
|
});
|
|
X.on('error', function(e) {
|
|
console.log(e);
|
|
});
|
|
} else {
|
|
console.log(err);
|
|
}
|
|
});
|