From 0cb3aa2a6c255aaa733e62e26ca0ffef773a7a6e Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Thu, 8 Nov 2012 17:20:51 +0900 Subject: [PATCH] implement ctrl-lock and alt-lock for vnc_auto.html --- include/rfb.js | 29 ++++++++++++++++++++++++++++- vnc_auto.html | 14 +++++++++++++- 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/include/rfb.js b/include/rfb.js index b7be99f8..4e318eed 100644 --- a/include/rfb.js +++ b/include/rfb.js @@ -126,7 +126,12 @@ var that = {}, // Public API methods mouse_buttonMask = 0, mouse_arr = [], viewportDragging = false, - viewportDragPos = {}; + viewportDragPos = {}, + + /* Soft key */ + wrapWithSoftKeyLock, + softKeyState = {}, + softKey = { CtrlLock: 0xFFE3, AltLock: 0xFFE9 }; // Configuration attributes Util.conf_defaults(conf, that, defaults, [ @@ -596,12 +601,26 @@ checkEvents = function() { setTimeout(checkEvents, conf.check_rate); }; +wrapWithSoftKeyLock = function(arr) { + var k; + for (k in softKeyState) { + if (softKeyState[k]) { + arr = keyEvent(softKey[k], 1).concat(arr); + arr = arr.concat(keyEvent(softKey[k], 0)); + } + } + return arr; +} + keyPress = function(keysym, down) { var arr; if (conf.view_only) { return; } // View only, skip keyboard events arr = keyEvent(keysym, down); + if (down) { + arr = wrapWithSoftKeyLock(arr); + } arr = arr.concat(fbUpdateRequests()); ws.send(arr); }; @@ -1829,15 +1848,23 @@ that.sendKey = function(code, down) { if (typeof down !== 'undefined') { Util.Info("Sending key code (" + (down ? "down" : "up") + "): " + code); arr = arr.concat(keyEvent(code, down ? 1 : 0)); + if (down) { + arr = wrapWithSoftKeyLock(arr); + } } else { Util.Info("Sending key code (down + up): " + code); arr = arr.concat(keyEvent(code, 1)); + arr = wrapWithSoftKeyLock(arr); arr = arr.concat(keyEvent(code, 0)); } arr = arr.concat(fbUpdateRequests()); ws.send(arr); }; +that.updateSoftKeyState = function(name, value) { + softKeyState[name] = value; +}; + that.clipboardPasteFrom = function(text) { if (rfb_state !== "normal") { return; } //Util.Debug(">> clipboardPasteFrom: " + text.substr(0,40) + "..."); diff --git a/vnc_auto.html b/vnc_auto.html index 1a67ef1b..6f1af127 100644 --- a/vnc_auto.html +++ b/vnc_auto.html @@ -25,7 +25,13 @@
-
Loading
+
+ + + +