mirror of
https://github.com/danbulant/node-x11
synced 2026-05-27 05:52:02 +00:00
use keyboard mapping instead of raw keycodes
This commit is contained in:
parent
564f4f0126
commit
37a2ce9e3a
1 changed files with 33 additions and 23 deletions
|
|
@ -1,3 +1,8 @@
|
||||||
|
process.on('uncaughtException', function (err) {
|
||||||
|
console.log(err);
|
||||||
|
console.log('Caught exception: ' + err);
|
||||||
|
});
|
||||||
|
|
||||||
var figs = [
|
var figs = [
|
||||||
//[ 0, 0, 4, 0],
|
//[ 0, 0, 4, 0],
|
||||||
|
|
||||||
|
|
@ -108,7 +113,7 @@ function deleteLines()
|
||||||
var x11 = require('../lib/x11');
|
var x11 = require('../lib/x11');
|
||||||
var Exposure = x11.eventMask.Exposure;
|
var Exposure = x11.eventMask.Exposure;
|
||||||
var KeyPress = x11.eventMask.KeyPress;
|
var KeyPress = x11.eventMask.KeyPress;
|
||||||
var sqsize = 50;
|
var sqsize = 15;
|
||||||
var wid, cidBlack, cidWhite;
|
var wid, cidBlack, cidWhite;
|
||||||
var angle = 0;
|
var angle = 0;
|
||||||
var gamestate = 'stopped';
|
var gamestate = 'stopped';
|
||||||
|
|
@ -246,7 +251,23 @@ function drop()
|
||||||
|
|
||||||
|
|
||||||
x11.createClient(function(display) {
|
x11.createClient(function(display) {
|
||||||
|
var ks = x11.keySyms;
|
||||||
|
var ks2Name = {};
|
||||||
|
for (var key in ks)
|
||||||
|
ks2Name[ ks[key] ] = key;
|
||||||
|
var kk2Name = {};
|
||||||
|
var min = display.min_keycode;
|
||||||
|
var max = display.max_keycode;
|
||||||
X = display.client;
|
X = display.client;
|
||||||
|
X.GetKeyboardMapping(min, max-min, function(list) {
|
||||||
|
for (var i=0; i < list.length; ++i)
|
||||||
|
{
|
||||||
|
var name = kk2Name[i+min] = [];
|
||||||
|
var sublist = list[i];
|
||||||
|
for (var j =0; j < sublist.length; ++j)
|
||||||
|
name.push(ks2Name[sublist[j]]);
|
||||||
|
}
|
||||||
|
|
||||||
var root = display.screen[0].root;
|
var root = display.screen[0].root;
|
||||||
var white = display.screen[0].white_pixel;
|
var white = display.screen[0].white_pixel;
|
||||||
var black = display.screen[0].black_pixel;
|
var black = display.screen[0].black_pixel;
|
||||||
|
|
@ -261,19 +282,6 @@ x11.createClient(function(display) {
|
||||||
clearCup();
|
clearCup();
|
||||||
startGame();
|
startGame();
|
||||||
|
|
||||||
|
|
||||||
var up = 111;
|
|
||||||
var down = 116;
|
|
||||||
var left = 113;
|
|
||||||
var right = 114;
|
|
||||||
|
|
||||||
//TODO keykode -> keysym
|
|
||||||
/*
|
|
||||||
var up = 98;
|
|
||||||
var down = 104;
|
|
||||||
var left = 100;
|
|
||||||
var right = 102;
|
|
||||||
*/
|
|
||||||
X.on('event', function(ev) {
|
X.on('event', function(ev) {
|
||||||
switch(ev.type) {
|
switch(ev.type) {
|
||||||
case 6:
|
case 6:
|
||||||
|
|
@ -281,19 +289,21 @@ x11.createClient(function(display) {
|
||||||
case 12: // expose
|
case 12: // expose
|
||||||
draw(); break;
|
draw(); break;
|
||||||
case 2:
|
case 2:
|
||||||
//console.log('keycode', ev);
|
var key = kk2Name[ev.keycode][0];
|
||||||
//console.log(X.keymap[ev.keycode]);
|
console.log(key);
|
||||||
// 111, 113, 114, 116, 65
|
switch(key) {
|
||||||
switch(ev.keycode) {
|
case 'XK_Up': rotateUp(); break;
|
||||||
case up: rotateUp(); break;
|
case 'XK_Down': rotateDown(); break;
|
||||||
case down: rotateDown(); break;
|
case 'XK_Left': moveLeft(); break;
|
||||||
case left: moveLeft(); break;
|
case 'XK_Right': moveRight(); break;
|
||||||
case right: moveRight(); break;
|
case 'XK_space': drop(); break;
|
||||||
case 65: drop(); break;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
console.log('default event', ev);
|
console.log('default event', ev);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue