From 980ebf0cee3908635d546e759922fd8d6f812bca Mon Sep 17 00:00:00 2001 From: sbosse Date: Mon, 21 Jul 2025 23:04:39 +0200 Subject: [PATCH] Mon 21 Jul 22:43:21 CEST 2025 --- .../smoketest/keyboard/getkeyboardmapping.js | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 js/x11/examples/smoketest/keyboard/getkeyboardmapping.js diff --git a/js/x11/examples/smoketest/keyboard/getkeyboardmapping.js b/js/x11/examples/smoketest/keyboard/getkeyboardmapping.js new file mode 100644 index 0000000..7c11ec1 --- /dev/null +++ b/js/x11/examples/smoketest/keyboard/getkeyboardmapping.js @@ -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); + } + }); + }); +});