2015-07-23 08:53:56 -05:00
|
|
|
describe('TileBench', function () {
|
2015-07-27 09:53:18 -05:00
|
|
|
// 25 s timeout
|
|
|
|
this.timeout(25000);
|
2015-07-23 08:53:56 -05:00
|
|
|
var map;
|
|
|
|
var loadCount = 0;
|
|
|
|
|
|
|
|
var log = function (msg) {
|
|
|
|
// write custom log messages
|
|
|
|
var cont = document.getElementById('mocha-report');
|
|
|
|
var li = document.createElement('li');
|
|
|
|
li.style.class = 'test pass';
|
|
|
|
li.innerHTML = '<h2>' + msg + '</h2>';
|
|
|
|
cont.appendChild(li);
|
|
|
|
}
|
|
|
|
|
|
|
|
before(function () {
|
|
|
|
// initialize the map and load the document
|
2015-07-27 02:34:07 -05:00
|
|
|
map = L.map('map', {
|
2015-07-23 08:53:56 -05:00
|
|
|
center: [0, 0],
|
|
|
|
zoom: 10,
|
|
|
|
minZoom: 1,
|
|
|
|
maxZoom: 20,
|
|
|
|
server: 'ws://localhost:9980',
|
|
|
|
doubleClickZoom: false
|
|
|
|
});
|
|
|
|
|
|
|
|
var docLayer = new L.TileLayer('', {
|
|
|
|
doc: 'file:///home/mihai/Desktop/test_docs/eval.odt',
|
|
|
|
useSocket : true,
|
2015-07-23 09:17:56 -05:00
|
|
|
edit: false,
|
2015-07-23 08:53:56 -05:00
|
|
|
readOnly: false
|
|
|
|
});
|
2015-07-27 09:53:18 -05:00
|
|
|
|
|
|
|
// add a timestamp to tile messages so we can identify
|
|
|
|
// the response
|
|
|
|
docLayer.sendMessage = L.bind(function (msg, coords) {
|
|
|
|
var now = Date.now();
|
|
|
|
if (msg.startsWith('tile')) {
|
|
|
|
msg += ' timestamp=' + now;
|
|
|
|
}
|
|
|
|
L.Log.log(msg, L.OUTGOING, coords, now);
|
|
|
|
this._map.socket.send(msg);
|
|
|
|
}, docLayer);
|
|
|
|
|
|
|
|
// don't pre-fetch tiles
|
|
|
|
docLayer._preFetchTiles = L.Util.falseFn;
|
|
|
|
|
2015-07-23 08:53:56 -05:00
|
|
|
map.addLayer(docLayer);
|
2015-07-27 02:34:07 -05:00
|
|
|
map.addControl(L.control.scroll());
|
2015-07-23 08:53:56 -05:00
|
|
|
});
|
|
|
|
|
|
|
|
afterEach(function () {
|
2015-08-07 01:44:10 -05:00
|
|
|
map.off('statusindicator');
|
2015-07-23 08:53:56 -05:00
|
|
|
});
|
|
|
|
|
|
|
|
after(function () {
|
|
|
|
map.socket.onclose = undefined;
|
|
|
|
map.socket.onerror = undefined;
|
|
|
|
map.socket.close();
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('Benchmarking', function () {
|
|
|
|
it('Load all new tiles', function (done) {
|
2015-08-07 01:44:10 -05:00
|
|
|
map.on('statusindicator', L.bind(function (e) {
|
|
|
|
if (e.statusType === 'alltilesloaded') {
|
|
|
|
loadCount += 1;
|
|
|
|
done();
|
|
|
|
}
|
2015-07-23 08:53:56 -05:00
|
|
|
}, done));
|
|
|
|
|
|
|
|
});
|
|
|
|
|
2015-07-27 09:53:18 -05:00
|
|
|
it('Edit the document', function (done) {
|
|
|
|
L.Log.clear();
|
|
|
|
|
|
|
|
// allow 2 seconds to pass after the last key input
|
|
|
|
var aproxTime = keyInput[keyInput.length - 1][0] + 2000;
|
|
|
|
|
|
|
|
setTimeout(L.bind(function () {
|
2015-08-07 01:44:10 -05:00
|
|
|
map.on('statusindicator', L.bind(function (e) {
|
|
|
|
if (e.statusType === 'alltilesloaded') {
|
|
|
|
loadCount += 1;
|
|
|
|
getTimes(done);
|
|
|
|
}
|
2015-07-27 09:53:18 -05:00
|
|
|
}, done));
|
|
|
|
|
|
|
|
|
|
|
|
// request an empty tile and when it arrives we know that the
|
|
|
|
// server has finished processing all other messages
|
|
|
|
var docLayer = map._docLayer;
|
|
|
|
var x = Math.floor(docLayer._docWidthTwips / docLayer._tileWidthTwips);
|
|
|
|
var y = Math.floor(docLayer._docHeightTwips / docLayer._tileHeightTwips);
|
|
|
|
var coords = new L.Point(x, y);
|
|
|
|
coords.z = map.getZoom();
|
|
|
|
coords.part = docLayer._currentPart;
|
|
|
|
var key = docLayer._tileCoordsToKey(coords);
|
|
|
|
if (docLayer._tiles[key]) {
|
|
|
|
// the tile is already here, the whole document is loaded
|
|
|
|
getTimes(done);
|
|
|
|
}
|
|
|
|
var fragment = document.createDocumentFragment();
|
|
|
|
docLayer._addTile(coords, fragment);
|
|
|
|
}, done), aproxTime);
|
|
|
|
|
|
|
|
for (var i = 0; i < keyInput.length; i++) {
|
|
|
|
setTimeout(L.bind(function () {
|
|
|
|
map._docLayer.sendMessage(keyInput[this][1]);
|
|
|
|
}, i), keyInput[i][0]);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2015-07-23 08:53:56 -05:00
|
|
|
it('Scroll to the bottom', function (done) {
|
2015-07-27 02:34:07 -05:00
|
|
|
$('.scroll-container').mCustomScrollbar('scrollTo', 'bottom', {scrollInertia: 3000});
|
2015-07-23 08:53:56 -05:00
|
|
|
// check how we're doing 200ms after the scroll has ended
|
|
|
|
// (allow enough time to request new tiles)
|
|
|
|
this.timeOut = setTimeout(L.bind(function () {
|
|
|
|
if (map._docLayer._emptyTilesCount === 0) {
|
|
|
|
// no pending tile requests
|
|
|
|
done();
|
|
|
|
}
|
|
|
|
else {
|
2015-08-07 01:44:10 -05:00
|
|
|
map.on('statusindicator', L.bind(function (e) {
|
|
|
|
if (e.statusType === 'alltilesloaded') {
|
|
|
|
loadCount += 1;
|
|
|
|
clearTimeout(this.timeOut);
|
|
|
|
done();
|
|
|
|
}
|
2015-07-23 08:53:56 -05:00
|
|
|
}, done));
|
|
|
|
}
|
|
|
|
}, done), 3200);
|
|
|
|
});
|
|
|
|
});
|
2015-07-27 09:53:18 -05:00
|
|
|
|
|
|
|
var getTimes = function (done) {
|
|
|
|
var incoming = [];
|
|
|
|
var outgoing = [];
|
|
|
|
var logs = L.Log._logs;
|
|
|
|
for (var i = 0; i < logs.length; i++) {
|
|
|
|
if (logs[i].coords !== undefined) {
|
|
|
|
if (logs[i].direction === L.INCOMING) {
|
|
|
|
logs[i].msg = logs[i].msg.replace(':', '');
|
|
|
|
incoming.push(logs[i]);
|
|
|
|
}
|
|
|
|
else if (logs[i].direction === L.OUTGOING) {
|
|
|
|
outgoing.push(logs[i]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
time_deltas = [];
|
|
|
|
for (i = 0; i < outgoing.length; i++) {
|
|
|
|
for (j = 0; j < incoming.length; j++) {
|
|
|
|
if (outgoing[i].msg === incoming[j].msg) {
|
|
|
|
time_deltas.push(incoming[j].time - outgoing[i].time);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
var min = 20000,
|
|
|
|
max = 0,
|
|
|
|
avg = 0;
|
|
|
|
for (i = 0; i < time_deltas.length; i++) {
|
|
|
|
min = Math.min(min, time_deltas[i]);
|
|
|
|
max = Math.max(max, time_deltas[i]);
|
|
|
|
avg += time_deltas[i];
|
|
|
|
}
|
|
|
|
avg = Math.round(avg / time_deltas.length);
|
|
|
|
|
|
|
|
log('Min time: ' + min + ' ms');
|
|
|
|
log('Max time: ' + max + ' ms');
|
|
|
|
log('Avg time: ' + avg + ' ms');
|
|
|
|
|
|
|
|
done();
|
|
|
|
};
|
|
|
|
|
|
|
|
var keyInput = [
|
|
|
|
[135, 'key type=input char=84 key=0'],
|
|
|
|
[237, 'key type=up char=0 key=16'],
|
|
|
|
[254, 'key type=up char=0 key=84'],
|
|
|
|
[372, 'key type=input char=104 key=0'],
|
|
|
|
[455, 'key type=input char=105 key=0'],
|
|
|
|
[510, 'key type=up char=0 key=72'],
|
|
|
|
[520, 'key type=input char=115 key=0'],
|
|
|
|
[580, 'key type=up char=0 key=73'],
|
|
|
|
[603, 'key type=input char=32 key=0'],
|
|
|
|
[635, 'key type=up char=0 key=83'],
|
|
|
|
[701, 'key type=up char=0 key=1284'],
|
|
|
|
[875, 'key type=input char=116 key=0'],
|
|
|
|
[915, 'key type=input char=101 key=0'],
|
|
|
|
[993, 'key type=up char=0 key=84'],
|
|
|
|
[1014, 'key type=up char=0 key=69'],
|
|
|
|
[1148, 'key type=input char=115 key=0'],
|
|
|
|
[1244, 'key type=up char=0 key=83'],
|
|
|
|
[1319, 'key type=input char=116 key=0'],
|
|
|
|
[1377, 'key type=input char=115 key=0'],
|
|
|
|
[1418, 'key type=up char=0 key=84'],
|
|
|
|
[1466, 'key type=input char=32 key=0'],
|
|
|
|
[1493, 'key type=up char=0 key=83'],
|
|
|
|
[1544, 'key type=up char=0 key=1284'],
|
|
|
|
[1687, 'key type=input char=116 key=0'],
|
|
|
|
[1760, 'key type=input char=104 key=0'],
|
|
|
|
[1773, 'key type=up char=0 key=84'],
|
|
|
|
[1828, 'key type=input char=101 key=0'],
|
|
|
|
[1886, 'key type=up char=0 key=72'],
|
|
|
|
[1952, 'key type=up char=0 key=69'],
|
|
|
|
[1957, 'key type=input char=32 key=0'],
|
|
|
|
[2071, 'key type=up char=0 key=1284'],
|
|
|
|
[2176, 'key type=input char=115 key=0'],
|
|
|
|
[2250, 'key type=input char=101 key=0'],
|
|
|
|
[2282, 'key type=up char=0 key=83'],
|
|
|
|
[2349, 'key type=up char=0 key=69'],
|
|
|
|
[2430, 'key type=input char=114 key=0'],
|
|
|
|
[2512, 'key type=up char=0 key=82'],
|
|
|
|
[2702, 'key type=input char=118 key=0'],
|
|
|
|
[2751, 'key type=input char=101 key=0'],
|
|
|
|
[2806, 'key type=up char=0 key=86'],
|
|
|
|
[2873, 'key type=up char=0 key=69'],
|
|
|
|
[2927, 'key type=input char=114 key=0'],
|
|
|
|
[3032, 'key type=up char=0 key=82'],
|
|
|
|
[3064, 'key type=input char=39 key=0'],
|
|
|
|
[3160, 'key type=input char=115 key=0'],
|
|
|
|
[3175, 'key type=up char=0 key=222'],
|
|
|
|
[3243, 'key type=input char=32 key=0'],
|
|
|
|
[3269, 'key type=up char=0 key=83'],
|
|
|
|
[3337, 'key type=up char=0 key=1284'],
|
|
|
|
[3535, 'key type=input char=114 key=0'],
|
|
|
|
[3574, 'key type=input char=101 key=0'],
|
|
|
|
[3646, 'key type=up char=0 key=82'],
|
|
|
|
[3705, 'key type=up char=0 key=69'],
|
|
|
|
[3804, 'key type=input char=112 key=0'],
|
|
|
|
[3868, 'key type=input char=111 key=0'],
|
|
|
|
[3953, 'key type=up char=0 key=80'],
|
|
|
|
[4056, 'key type=up char=0 key=79'],
|
|
|
|
[4262, 'key type=input char=110 key=0'],
|
|
|
|
[4362, 'key type=input char=115 key=0'],
|
|
|
|
[4390, 'key type=up char=0 key=78'],
|
|
|
|
[4449, 'key type=input char=101 key=0'],
|
|
|
|
[4513, 'key type=up char=0 key=83'],
|
|
|
|
[4535, 'key type=input char=32 key=0'],
|
|
|
|
[4560, 'key type=up char=0 key=69'],
|
|
|
|
[4631, 'key type=up char=0 key=1284'],
|
|
|
|
[4771, 'key type=input char=116 key=0'],
|
|
|
|
[4818, 'key type=input char=105 key=0'],
|
|
|
|
[4853, 'key type=up char=0 key=84'],
|
|
|
|
[4908, 'key type=up char=0 key=73'],
|
|
|
|
[4990, 'key type=input char=109 key=0'],
|
|
|
|
[5038, 'key type=input char=101 key=0'],
|
|
|
|
[5118, 'key type=up char=0 key=77'],
|
|
|
|
[5157, 'key type=input char=32 key=0'],
|
|
|
|
[5195, 'key type=up char=0 key=69'],
|
|
|
|
[5273, 'key type=up char=0 key=1284'],
|
|
|
|
[5410, 'key type=input char=119 key=0'],
|
|
|
|
[5462, 'key type=input char=104 key=0'],
|
|
|
|
[5522, 'key type=up char=0 key=87'],
|
|
|
|
[5523, 'key type=input char=105 key=0'],
|
|
|
|
[5591, 'key type=up char=0 key=72'],
|
|
|
|
[5632, 'key type=up char=0 key=73'],
|
|
|
|
[5857, 'key type=input char=108 key=0'],
|
|
|
|
[5941, 'key type=input char=101 key=0'],
|
|
|
|
[5990, 'key type=up char=0 key=76'],
|
|
|
|
[6039, 'key type=input char=32 key=0'],
|
|
|
|
[6057, 'key type=up char=0 key=69'],
|
|
|
|
[6126, 'key type=up char=0 key=1284'],
|
|
|
|
[6274, 'key type=input char=101 key=0'],
|
|
|
|
[6354, 'key type=up char=0 key=69'],
|
|
|
|
[6450, 'key type=input char=100 key=0'],
|
|
|
|
[6563, 'key type=input char=105 key=0'],
|
|
|
|
[6566, 'key type=up char=0 key=68'],
|
|
|
|
[6673, 'key type=up char=0 key=73'],
|
|
|
|
[6695, 'key type=input char=116 key=0'],
|
|
|
|
[6794, 'key type=input char=105 key=0'],
|
|
|
|
[6799, 'key type=up char=0 key=84'],
|
|
|
|
[6850, 'key type=input char=110 key=0'],
|
|
|
|
[6885, 'key type=up char=0 key=73'],
|
|
|
|
[6970, 'key type=input char=103 key=0'],
|
|
|
|
[6974, 'key type=up char=0 key=78'],
|
|
|
|
[7064, 'key type=up char=0 key=71'],
|
|
|
|
[7176, 'key type=input char=46 key=0'],
|
|
|
|
[7297, 'key type=up char=0 key=190'],
|
|
|
|
[7323, 'key type=input char=32 key=0'],
|
|
|
|
[7422, 'key type=up char=0 key=1284'],
|
|
|
|
[7580, 'key type=input char=73 key=0'],
|
|
|
|
[7655, 'key type=up char=0 key=16'],
|
|
|
|
[7679, 'key type=up char=0 key=73'],
|
|
|
|
[7829, 'key type=input char=39 key=0'],
|
|
|
|
[7875, 'key type=up char=0 key=222'],
|
|
|
|
[7922, 'key type=input char=109 key=0'],
|
|
|
|
[8072, 'key type=input char=32 key=0'],
|
|
|
|
[8082, 'key type=up char=0 key=77'],
|
|
|
|
[8169, 'key type=up char=0 key=1284'],
|
|
|
|
[8340, 'key type=input char=116 key=0'],
|
|
|
|
[8399, 'key type=up char=0 key=84'],
|
|
|
|
[8503, 'key type=input char=114 key=0'],
|
|
|
|
[8553, 'key type=input char=121 key=0'],
|
|
|
|
[8618, 'key type=up char=0 key=82'],
|
|
|
|
[8640, 'key type=up char=0 key=89'],
|
|
|
|
[8773, 'key type=input char=105 key=0'],
|
|
|
|
[8862, 'key type=input char=110 key=0'],
|
|
|
|
[8935, 'key type=input char=103 key=0'],
|
|
|
|
[8945, 'key type=up char=0 key=73'],
|
|
|
|
[9019, 'key type=input char=32 key=0'],
|
|
|
|
[9025, 'key type=up char=0 key=78'],
|
|
|
|
[9047, 'key type=up char=0 key=71'],
|
|
|
|
[9124, 'key type=up char=0 key=1284'],
|
|
|
|
[9257, 'key type=input char=116 key=0'],
|
|
|
|
[9357, 'key type=input char=111 key=0'],
|
|
|
|
[9396, 'key type=input char=32 key=0'],
|
|
|
|
[9397, 'key type=up char=0 key=84'],
|
|
|
|
[9487, 'key type=up char=0 key=79'],
|
|
|
|
[9488, 'key type=up char=0 key=1284'],
|
|
|
|
[9646, 'key type=input char=119 key=0'],
|
|
|
|
[9766, 'key type=up char=0 key=87'],
|
|
|
|
[9919, 'key type=input char=114 key=0'],
|
|
|
|
[9988, 'key type=input char=105 key=0'],
|
|
|
|
[10024, 'key type=up char=0 key=82'],
|
|
|
|
[10098, 'key type=up char=0 key=73'],
|
|
|
|
[10200, 'key type=input char=116 key=0'],
|
|
|
|
[10253, 'key type=input char=101 key=0'],
|
|
|
|
[10334, 'key type=up char=0 key=84'],
|
|
|
|
[10349, 'key type=input char=32 key=0'],
|
|
|
|
[10388, 'key type=up char=0 key=69'],
|
|
|
|
[10462, 'key type=up char=0 key=1284'],
|
|
|
|
[10620, 'key type=input char=97 key=0'],
|
|
|
|
[10727, 'key type=up char=0 key=65'],
|
|
|
|
[10847, 'key type=input char=115 key=0'],
|
|
|
|
[10953, 'key type=input char=32 key=0'],
|
|
|
|
[10978, 'key type=up char=0 key=83'],
|
|
|
|
[11059, 'key type=up char=0 key=1284'],
|
|
|
|
[11262, 'key type=input char=105 key=0'],
|
|
|
|
[11341, 'key type=input char=102 key=0'],
|
|
|
|
[11385, 'key type=up char=0 key=73'],
|
|
|
|
[11428, 'key type=input char=32 key=0'],
|
|
|
|
[11454, 'key type=up char=0 key=70'],
|
|
|
|
[11537, 'key type=up char=0 key=1284'],
|
|
|
|
[11696, 'key type=input char=73 key=0'],
|
|
|
|
[11797, 'key type=up char=0 key=73'],
|
|
|
|
[11814, 'key type=up char=0 key=16'],
|
|
|
|
[11917, 'key type=input char=39 key=0'],
|
|
|
|
[12028, 'key type=input char=109 key=0'],
|
|
|
|
[12034, 'key type=up char=0 key=222'],
|
|
|
|
[12171, 'key type=up char=0 key=77'],
|
|
|
|
[12195, 'key type=input char=32 key=0'],
|
|
|
|
[12302, 'key type=up char=0 key=1284'],
|
|
|
|
[12422, 'key type=input char=110 key=0'],
|
|
|
|
[12510, 'key type=input char=111 key=0'],
|
|
|
|
[12565, 'key type=up char=0 key=78'],
|
|
|
|
[12631, 'key type=input char=116 key=0'],
|
|
|
|
[12654, 'key type=up char=0 key=79'],
|
|
|
|
[12726, 'key type=input char=32 key=0'],
|
|
|
|
[12751, 'key type=up char=0 key=84'],
|
|
|
|
[12830, 'key type=up char=0 key=1284'],
|
|
|
|
[12963, 'key type=input char=101 key=0'],
|
|
|
|
[13044, 'key type=up char=0 key=69'],
|
|
|
|
[13176, 'key type=input char=120 key=0'],
|
|
|
|
[13319, 'key type=up char=0 key=88'],
|
|
|
|
[13460, 'key type=input char=112 key=0'],
|
|
|
|
[13542, 'key type=input char=101 key=0'],
|
|
|
|
[13606, 'key type=up char=0 key=80'],
|
|
|
|
[13637, 'key type=up char=0 key=69'],
|
|
|
|
[13788, 'key type=input char=99 key=0'],
|
|
|
|
[13908, 'key type=up char=0 key=67'],
|
|
|
|
[14061, 'key type=input char=116 key=0'],
|
|
|
|
[14130, 'key type=input char=105 key=0'],
|
|
|
|
[14167, 'key type=up char=0 key=84'],
|
|
|
|
[14216, 'key type=input char=110 key=0'],
|
|
|
|
[14272, 'key type=up char=0 key=73'],
|
|
|
|
[14339, 'key type=input char=103 key=0'],
|
|
|
|
[14363, 'key type=up char=0 key=78'],
|
|
|
|
[14457, 'key type=up char=0 key=71'],
|
|
|
|
[14500, 'key type=input char=32 key=0'],
|
|
|
|
[14590, 'key type=up char=0 key=1284'],
|
|
|
|
[15056, 'key type=input char=97 key=0'],
|
|
|
|
[15139, 'key type=input char=110 key=0'],
|
|
|
|
[15158, 'key type=up char=0 key=65'],
|
|
|
|
[15268, 'key type=up char=0 key=78'],
|
|
|
|
[15383, 'key type=input char=121 key=0'],
|
|
|
|
[15503, 'key type=input char=32 key=0'],
|
|
|
|
[15505, 'key type=up char=0 key=89'],
|
|
|
|
[15613, 'key type=up char=0 key=1284'],
|
|
|
|
[15769, 'key type=input char=108 key=0'],
|
|
|
|
[15888, 'key type=input char=97 key=0'],
|
|
|
|
[15903, 'key type=up char=0 key=76'],
|
|
|
|
[15981, 'key type=up char=0 key=65'],
|
|
|
|
[16148, 'key type=input char=116 key=0'],
|
|
|
|
[16196, 'key type=input char=101 key=0'],
|
|
|
|
[16275, 'key type=up char=0 key=84'],
|
|
|
|
[16308, 'key type=input char=110 key=0'],
|
|
|
|
[16341, 'key type=up char=0 key=69'],
|
|
|
|
[16441, 'key type=up char=0 key=78'],
|
|
|
|
[16833, 'key type=input char=99 key=0'],
|
|
|
|
[16875, 'key type=input char=121 key=0'],
|
|
|
|
[16948, 'key type=up char=0 key=67'],
|
|
|
|
[16966, 'key type=up char=0 key=89'],
|
|
|
|
[17582, 'key type=input char=32 key=0'],
|
|
|
|
[17672, 'key type=up char=0 key=1284'],
|
|
|
|
[17773, 'key type=input char=102 key=0'],
|
|
|
|
[17898, 'key type=up char=0 key=70'],
|
|
|
|
[17962, 'key type=input char=111 key=0'],
|
|
|
|
[18102, 'key type=input char=114 key=0'],
|
|
|
|
[18133, 'key type=up char=0 key=79'],
|
|
|
|
[18214, 'key type=up char=0 key=82'],
|
|
|
|
[18294, 'key type=input char=109 key=0'],
|
|
|
|
[18423, 'key type=input char=32 key=0'],
|
|
|
|
[18428, 'key type=up char=0 key=77'],
|
|
|
|
[18529, 'key type=up char=0 key=1284'],
|
|
|
|
[18563, 'key type=input char=105 key=0'],
|
|
|
|
[18674, 'key type=up char=0 key=73'],
|
|
|
|
[18703, 'key type=input char=116 key=0'],
|
|
|
|
[18799, 'key type=up char=0 key=84'],
|
|
|
|
[19067, 'key type=input char=46 key=0'],
|
|
|
|
[19147, 'key type=up char=0 key=190'],
|
|
|
|
[19440, 'key type=input char=32 key=0'],
|
|
|
|
[19511, 'key type=up char=0 key=1284'],
|
|
|
|
];
|
2015-07-23 08:53:56 -05:00
|
|
|
});
|