Mon 21 Jul 22:43:21 CEST 2025
This commit is contained in:
parent
2ffbc18528
commit
980ebf0cee
47
js/x11/examples/smoketest/keyboard/getkeyboardmapping.js
Normal file
47
js/x11/examples/smoketest/keyboard/getkeyboardmapping.js
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
var x11 = require('../../../lib');
|
||||||
|
var keysym = require('keysym');
|
||||||
|
|
||||||
|
|
||||||
|
var ks = x11.keySyms;
|
||||||
|
var ks2Name = {};
|
||||||
|
for (var key in ks)
|
||||||
|
ks2Name[ ks[key].code ] = key;
|
||||||
|
var kk2Name = {};
|
||||||
|
|
||||||
|
x11.createClient(function(err, display) {
|
||||||
|
var X = display.client;
|
||||||
|
var min = display.min_keycode;
|
||||||
|
var max = display.max_keycode;
|
||||||
|
X.GetKeyboardMapping(min, max-min, function(err, 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]], sublist[j]]);
|
||||||
|
}
|
||||||
|
|
||||||
|
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, 0, 0, 0, 0, { backgroundPixel: white, eventMask: x11.eventMask.KeyPress});
|
||||||
|
X.MapWindow(wid);
|
||||||
|
|
||||||
|
X.on('event', function(ev) {
|
||||||
|
console.log(ev.type);
|
||||||
|
console.log(ev);
|
||||||
|
//console.log([ev.keycode, kk2Name[ev.keycode], keysym.fromKeysym(kk2Name[ev.keycode][0][1])]);
|
||||||
|
var shift = ev.buttons & 1;
|
||||||
|
var keySyms = kk2Name[ev.keycode];
|
||||||
|
if (keySyms) {
|
||||||
|
var codePoint = keysym.fromKeysym(keySyms[shift ? 1 : 0][1]).unicode;
|
||||||
|
if (codePoint == 13)
|
||||||
|
codePoint = 10;
|
||||||
|
if (codePoint != 0)
|
||||||
|
process.stdout.write(String.fromCharCode(codePoint));
|
||||||
|
//console.log('\n', codePoint);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user