Added support for unicode keys in desktop multiplexor.
Ylian Saint-Hilaire committed
Nov 19, 2020 at 12:15 UTC
680a82a43160b911483ec6461161686b759f63e8
2 files changed
+14
-11
meshdesktopmultiplex.js
+11
-8
@@ -452,15 +452,15 @@ function CreateDesktopMultiplexor(parent, domain, nodeid, func) {
452
var cmdsize = data.readUInt16BE(2);
453
//console.log('ViewerData', data.length, command, cmdsize);
454
switch (command) {
455
- case 1:// Key Events, forward to agent
455
+ case 1: // Key Events, forward to agent
456
//console.log('Viewer-Keys');
457
obj.sendToAgent(data);
458
break;
459
- case 2:// Mouse events, forward to agent
459
+ case 2: // Mouse events, forward to agent
460
//console.log('Viewer-Mouse');
461
obj.sendToAgent(data);
462
break;
463
- case 5:// Compression
463
+ case 5: // Compression
464
if (data.length < 10) return;
465
//viewer.imageType = data[4]; // Always 1=JPEG
466
viewer.imageCompression = data[5];
@@ -493,12 +493,12 @@ function CreateDesktopMultiplexor(parent, domain, nodeid, func) {
493
obj.sendToAgent(cmd);
494
}
495
break;
496
- case 6:// Refresh, handle this on the server
496
+ case 6: // Refresh, handle this on the server
497
//console.log('Viewer-Refresh');
498
viewer.dataPtr = obj.firstData; // Start over
499
if (viewer.sending == false) { sendViewerNext(viewer); }
500
break;
501
- case 8:// Pause and unpause
501
+ case 8: // Pause and unpause
502
if (data.length != 5) break;
503
var pause = data[4]; // 0 = Unpause, 1 = Pause
504
if (viewer.desktopPaused == (pause == 1)) break;
@@ -513,13 +513,16 @@ function CreateDesktopMultiplexor(parent, domain, nodeid, func) {
513
obj.sendToAgent(data);
514
}
515
break;
516
- case 10:// CTRL-ALT-DEL, forward to agent
516
+ case 10: // CTRL-ALT-DEL, forward to agent
517
obj.sendToAgent(data);
518
break;
519
- case 12:// SET DISPLAY, forward to agent
519
+ case 12: // SET DISPLAY, forward to agent
520
obj.sendToAgent(data);
521
break;
522
- case 14:// Touch setup
522
+ case 14: // Touch setup
523
+ break;
524
+ case 85: // Unicode Key Events, forward to agent
525
+ obj.sendToAgent(data);
526
break;
527
default:
528
console.log('Un-handled viewer command: ' + command);
views/default.handlebars
+3
-3
@@ -1519,7 +1519,7 @@
1519
}
1520
1521
// Enable browser clipboard read if supported
1522
- QV('DeskClipboardInButton', navigator.clipboard.readText != null);
1522
+ QV('DeskClipboardInButton', (navigator.clipboard != null) && (navigator.clipboard.readText != null));
1523
1524
// Session Refresh Timer
1525
if (sessionTime >= 10) { sessionRefreshTimer = setTimeout(refreshCookieSession, Math.round((sessionTime * 60000) * 0.8)); }
@@ -2197,7 +2197,7 @@
2197
if ((message.tag == 1) && (xxdialogTag == 'clipboard')) {
2198
Q('d2clipText').value = message.data; // Put remote clipboard data into dialog box
2199
} else if (message.tag == 2) {
2200
- navigator.clipboard.writeText(message.data).then(function() { console.log('ok'); }).catch(function(err) { console.log(err); }) // Put remote clipboard data into our clipboard
2200
+ if (navigator.clipboard != null) { navigator.clipboard.writeText(message.data).then(function() { console.log('ok'); }).catch(function(err) { console.log(err); }) } // Put remote clipboard data into our clipboard
2201
}
2202
} else if ((message.type == 'setclip') && (xxdialogTag == 'clipboard') && (currentNode != null) && (currentNode._id == message.nodeid)) {
2203
// Display success/fail on the clipboard dialog box.
@@ -6189,7 +6189,7 @@
6189
}
6190
6191
function deskClipboardOutFunction() {
6192
- if (navigator.clipboard.readText) { navigator.clipboard.readText().then(function(text) { meshserver.send({ action: 'msg', type: 'setclip', nodeid: currentNode._id, data: text }); }).catch(function(err) { }); }
6192
+ if ((navigator.clipboard != null) && (navigator.clipboard.readText != null)) { navigator.clipboard.readText().then(function(text) { meshserver.send({ action: 'msg', type: 'setclip', nodeid: currentNode._id, data: text }); }).catch(function(err) { }); }
6193
}
6194
6195
function deskRefreshFunction() {