UNPKG

keysym

Version:

Look up X11 keysyms, unicode positions, and names.

48 lines (40 loc) 1.49 kB
var assert = require('assert'); var ks = require('keysym'); var Hash = require('hashish'); exports.symmetric = function () { assert.ok(ks.records.length > 50); // at least ks.records.forEach(function (rec) { var k = ks.fromKeysym(rec.keysym); assert.deepEqual(rec, k); var u = ks.fromUnicode(rec.unicode) .filter(function (r) { return r.names == rec.names })[0]; assert.deepEqual(rec, u); rec.names.forEach(function (name) { var n = ks.fromName(name); assert.deepEqual(rec, n); }); }); }; var Lazy = require('lazy'); var fs = require('fs'); exports.fromFile = function () { var s = fs.createReadStream(__dirname + '/../data/keysyms.txt'); Lazy(s).lines.map(String) .filter(function (line) { return line.match(/^0x/) }) .forEach(function (line) { var m = line.match(/0x(\S+)\s+U(\S+)/) .slice(1) .map(function (x) { return parseInt(x, 16) }) ; var sym = m[0], code = m[1]; var name = line.match(/# (\S+)/)[1]; var r1 = ks.fromName(name); assert.equal(r1.keysym, sym); assert.equal(r1.unicode, code); var r2 = ks.fromKeysym(sym); assert.equal(r2.keysym, sym); assert.equal(r2.unicode, code); assert.equal(r1.names, r2.names); }) ; };