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() {