Completed mobile web site full desktop mode.

Ylian Saint-Hilaire committed Nov 23, 2020 at 16:54 UTC 80f016f688dda7a5dfb0509a8922b5e7f9e591bf
9 files changed +151 -36
meshuser.js
+4
@@ -5029,6 +5029,10 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
5029 try { ws.send(JSON.stringify(responseCmd)); } catch (ex) { }
5030 break;
5031 }
5032 + case 'print': {
5033 + console.log(command.value);
5034 + break;
5035 + }
5036 default: {
5037 // Unknown user action
5038 console.log('Unknown action from user ' + user.name + ': ' + command.action + '.');
public/images/mobile-desk-mouse-left.pdn
Binary files /dev/null and b/public/images/mobile-desk-mouse-left.pdn differ
public/images/mobile-desk-mouse-left.png
Binary files /dev/null and b/public/images/mobile-desk-mouse-left.png differ
public/images/mobile-desk-mouse-right.png
Binary files /dev/null and b/public/images/mobile-desk-mouse-right.png differ
public/images/mobile-desk-mouse.png
Binary files /dev/null and b/public/images/mobile-desk-mouse.png differ
public/scripts/amt-desktop-0.0.2-min.js
+1 -1
@@ -1 +1 @@
1 -var CreateAmtRemoteDesktop=function(t,a){var y={};function b(t){return String.fromCharCode.apply(null,t)}function C(t){for(var a=new Uint8Array(t.length),e=0,n=t.length;e<n;++e)a[e]=t.charCodeAt(e);return a}function D(t,a,e,n,o,r,i){var s,c,h,f,d=t[a++],v={},u=0,l=0;if(0==d){if(2==y.bpp)for(f=0;f<i;f++)L(t[a++]+(t[a++]<<8),f);else for(f=0;f<i;f++)K(t[a++],f);k(y.spare,e,n)}else if(1==d){c=t[a++]+(2==y.bpp?t[a++]<<8:0),y.canvas.fillStyle="rgb("+(1==y.bpp?(224&c)+","+((28&c)<<3)+","+A((3&c)<<6):(c>>8&248)+","+(c>>3&252)+","+((31&c)<<3))+")";var g=T(e,n);n=x(e,n),e=g,y.canvas.fillRect(e,n,o,r)}else if(1<d&&d<17){var p=4,m=15;if(2==y.bpp){for(f=0;f<d;f++)v[f]=t[a++]+(t[a++]<<8);for(2==d?m=p=1:d<=4&&(p=2,m=3);u<i&&a<t.byteLength;)for(c=t[a++],f=8-p;0<=f;f-=p)L(v[c>>f&m],u++)}else{for(f=0;f<d;f++)v[f]=t[a++];for(2==d?m=p=1:d<=4&&(p=2,m=3);u<i&&a<t.byteLength;)for(c=t[a++],f=8-p;0<=f;f-=p)K(v[c>>f&m],u++)}k(y.spare,e,n)}else if(128==d){if(2==y.bpp)for(;u<i&&a<t.byteLength;){for(c=t[a++]+(t[a++]<<8),l=1;l+=h=t[a++],255==h;);if(0==y.rotation)w(c,u,l),u+=l;else for(;0<=--l;)L(c,u++)}else for(;u<i&&a<t.byteLength;){for(c=t[a++],l=1;l+=h=t[a++],255==h;);if(0==y.rotation)S(c,u,l),u+=l;else for(;0<=--l;)K(c,u++)}k(y.spare,e,n)}else if(129<d){if(2==y.bpp)for(f=0;f<d-128;f++)v[f]=t[a++]+(t[a++]<<8);else for(f=0;f<d-128;f++)v[f]=t[a++];for(;u<i&&a<t.byteLength;){if(l=1,c=v[(s=t[a++])%128],127<s)for(;l+=h=t[a++],255==h;);if(0==y.rotation)2==y.bpp?w(c,u,l):S(c,u,l),u+=l;else if(2==y.bpp)for(;0<=--l;)L(c,u++);else for(;0<=--l;)K(c,u++)}k(y.spare,e,n)}}function k(t,a,e){if(1!=y.holding){var n=function(t,a){return 0==y.rotation?t:1==y.rotation?y.canvas.canvas.width-y.sparew2-a:2==y.rotation?y.canvas.canvas.width-y.sparew2-t:3==y.rotation?a:0}(a,e);e=function(t,a){return 0==y.rotation?a:1==y.rotation?t:2==y.rotation?y.canvas.canvas.height-y.spareh2-a:3==y.rotation?y.canvas.canvas.height-y.spareh-t:0}(a,e),a=n,y.canvas.putImageData(t,a,e)}}function K(t,a){var e=a<<2;if(0<y.rotation)if(1==y.rotation){var n=a%y.sparew,o=Math.floor(a/y.sparew);e=(a=n*y.sparew2+(y.sparew2-1-o))<<2}else if(2==y.rotation)e=y.sparew*y.spareh*4-4-e;else if(3==y.rotation){n=a%y.sparew,o=Math.floor(a/y.sparew);e=(a=(y.sparew2-1-n)*y.sparew2+o)<<2}y.spare.data[e]=224&t,y.spare.data[e+1]=(28&t)<<3,y.spare.data[e+2]=A((3&t)<<6)}function L(t,a){var e=a<<2;if(0<y.rotation)if(1==y.rotation){var n=a%y.sparew,o=Math.floor(a/y.sparew);e=(a=n*y.sparew2+(y.sparew2-1-o))<<2}else if(2==y.rotation)e=y.sparew*y.spareh*4-4-e;else if(3==y.rotation){n=a%y.sparew,o=Math.floor(a/y.sparew);e=(a=(y.sparew2-1-n)*y.sparew2+o)<<2}y.spare.data[e]=t>>8&248,y.spare.data[e+1]=t>>3&252,y.spare.data[e+2]=(31&t)<<3}function S(t,a,e){for(var n=a<<2,o=224&t,r=(28&t)<<3,i=A((3&t)<<6);0<=--e;)y.spare.data[n]=o,y.spare.data[n+1]=r,y.spare.data[n+2]=i,n+=4}function w(t,a,e){for(var n=a<<2,o=t>>8&248,r=t>>3&252,i=(31&t)<<3;0<=--e;)y.spare.data[n]=o,y.spare.data[n+1]=r,y.spare.data[n+2]=i,n+=4}function T(t){return 0==y.rotation?t:1==y.rotation?t:2==y.rotation?t-y.canvas.canvas.width:3==y.rotation?t-y.canvas.canvas.height:0}function x(t,a){return 0==y.rotation?a:1==y.rotation?a-y.canvas.canvas.width:2==y.rotation?a-y.canvas.canvas.height:3==y.rotation?a:0}function A(t){return 127<t?t+32:t}function I(){if(1!=y.holding)if(0<y.focusmode){var t=2*y.focusmode;y.send(String.fromCharCode(3,1)+ShortToStr(Math.max(Math.min(y.ox,y.mx)-y.focusmode,0))+ShortToStr(Math.max(Math.min(y.oy,y.my)-y.focusmode,0))+ShortToStr(t+Math.abs(y.ox-y.mx))+ShortToStr(t+Math.abs(y.oy-y.my))),y.ox=y.mx,y.oy=y.my}else y.send(String.fromCharCode(3,1,0,0,0,0)+ShortToStr(y.rwidth)+ShortToStr(y.rheight))}y.canvasid=t,y.CanvasId=Q(t),y.scrolldiv=a,y.canvas=Q(t).getContext("2d"),y.protocol=2,y.state=0,y.acc=null,y.ScreenWidth=960,y.ScreenHeight=700,y.width=0,y.height=0,y.rwidth=0,y.rheight=0,y.bpp=2,y.useZRLE=!0,y.showmouse=!0,y.buttonmask=0,y.localKeyMap=!0,y.spare=null,y.sparew=0,y.spareh=0,y.sparew2=0,y.spareh2=0,y.sparecache={},y.ZRLEfirst=1,y.onScreenSizeChange=null,y.frameRateDelay=0,y.noMouseRotate=!1,y.rotation=0,y.kvmDataSupported=!1,y.onKvmData=null,y.onKvmDataPending=[],y.onKvmDataAck=-1,y.holding=!1,y.lastKeepAlive=Date.now(),y.mNagleTimer=null,y.mx=0,y.my=0,y.ox=-1,y.oy=-1,y.focusmode=0,y.inflate=ZLIB.inflateInit(-15),y.xxStateChange=function(t){0==t?(y.canvas.fillStyle="#000000",y.canvas.fillRect(0,0,y.width,y.height),y.canvas.canvas.width=y.rwidth=y.width=640,y.canvas.canvas.height=y.rheight=y.height=400,QS(y.canvasid).cursor="default"):QS(y.canvasid).cursor=y.showmouse?"default":"none"},y.ProcessBinaryData=function(t){if(null==y.acc)y.acc=new Uint8Array(t);else{var a=new Uint8Array(y.acc.byteLength+t.byteLength);a.set(y.acc,0),a.set(new Uint8Array(t),y.acc.byteLength),y.acc=a}for(;null!=y.acc&&0<y.acc.byteLength;){var e=0,n=new DataView(y.acc.buffer);if(0==y.state&&12<=y.acc.byteLength)e=12,y.state=1,y.send("RFB 003.008\n");else if(1==y.state&&1<=y.acc.byteLength)e=y.acc[0]+1,y.send(String.fromCharCode(1)),y.state=2;else if(2==y.state&&4<=y.acc.byteLength){if(e=4,0!=n.getUint32(0))return y.Stop();y.send(String.fromCharCode(1)),y.state=3}else if(3==y.state&&24<=y.acc.byteLength){y.rotation=0;var o=n.getUint32(20);if(y.acc.byteLength<24+o)return;e=24+o,y.canvas.canvas.width=y.rwidth=y.width=y.ScreenWidth=n.getUint16(0),y.canvas.canvas.height=y.rheight=y.height=y.ScreenHeight=n.getUint16(2);var r="";y.useZRLE&&(r+=IntToStr(16)),r+=IntToStr(0),r+=IntToStr(1092),y.send(String.fromCharCode(2,0)+ShortToStr(r.length/4+1)+r+IntToStr(-223)),1==y.bpp&&y.send(String.fromCharCode(0,0,0,0,8,8,0,1)+ShortToStr(7)+ShortToStr(7)+ShortToStr(3)+String.fromCharCode(5,2,0,0,0,0)),y.state=4,y.parent&&y.parent.xxStateChange(3),I(),y.ox=-1,null!=y.onScreenSizeChange&&y.onScreenSizeChange(y,y.ScreenWidth,y.ScreenHeight)}else if(4==y.state)switch(y.acc[0]){case 0:if(y.acc.byteLength<4)return;y.state=100+n.getUint16(2),e=4;break;case 2:e=1;break;case 3:if(y.acc.byteLength<8)return;var i=n.getUint32(4)+8;if(y.acc.byteLength<i)return;e=M(y.acc,n)}else if(100<y.state&&12<=y.acc.byteLength){var s=n.getUint16(0),c=n.getUint16(2),h=n.getUint16(4),f=n.getUint16(6),d=h*f,v=n.getUint32(8);if(v<17){if(h<1||64<h||f<1||64<f)return console.log("Invalid tile size ("+h+","+f+"), disconnecting."),y.Stop();if(y.sparew!=h||y.spareh!=f){y.sparew=y.sparew2=h,y.spareh=y.spareh2=f,1!=y.rotation&&3!=y.rotation||(y.sparew2=f,y.spareh2=h);var u=y.sparew2+"x"+y.spareh2;if(y.spare=y.sparecache[u],!y.spare){y.sparecache[u]=y.spare=y.canvas.createImageData(y.sparew2,y.spareh2);for(var l=y.sparew2*y.spareh2<<2,g=3;g<l;g+=4)y.spare.data[g]=255}}}if(4294967073==v)y.canvas.canvas.width=y.rwidth=y.width=h,y.canvas.canvas.height=y.rheight=y.height=f,y.send(String.fromCharCode(3,0,0,0,0,0)+ShortToStr(y.width)+ShortToStr(y.height)),e=12,null!=y.onScreenSizeChange&&y.onScreenSizeChange(y,y.ScreenWidth,y.ScreenHeight);else if(0==v){var p=12,m=12+d*y.bpp;if(y.acc.byteLength<m)return;if(e=m,2==y.bpp)for(g=0;g<d;g++)L(n.getUint16(p,!0),g),p+=2;else for(g=0;g<d;g++)K(y.acc[p++],g);k(y.spare,s,c)}else{if(16!=v)return y.Stop();if(y.acc.byteLength<16)return;var S=n.getUint32(12);if(y.acc.byteLength<16+S)return;p=16;if(5<S&&0==y.acc[p]&&n.getUint16(p+1,!0)==S-5)D(y.acc,p+5,s,c,h,f,d,S);else{var w=y.inflate.inflate(b(new Uint8Array(y.acc.buffer.slice(p,p+S-0))));0<w.length?D(C(w),0,s,c,h,f,d,w.length):console.log("Invalid deflate data")}e=16+S}100==--y.state&&(y.state=4,0==y.frameRateDelay?I():setTimeout(I,y.frameRateDelay))}if(0==e)return;e!=y.acc.byteLength?y.acc=new Uint8Array(y.acc.buffer.slice(e)):y.acc=null}},y.hold=function(t){y.holding!=t&&(y.holding=t,y.canvas.fillStyle="#000000",y.canvas.fillRect(0,0,y.width,y.height),0==y.holding?(y.canvas.canvas.width==y.width&&y.canvas.canvas.height==y.height||(y.canvas.canvas.width=y.width,y.canvas.canvas.height=y.height,null!=y.onScreenSizeChange&&y.onScreenSizeChange(y,y.ScreenWidth,y.ScreenHeight)),y.Send(String.fromCharCode(3,0,0,0,0,0)+ShortToStr(y.width)+ShortToStr(y.height))):(y.UnGrabMouseInput(),y.UnGrabKeyInput()))},y.tcanvas=null,y.setRotation=function(t){for(;t<0;)t+=4;var a=t%4;if(1!=y.holding){if(a==y.rotation)return!0;var e=y.canvas.canvas.width,n=y.canvas.canvas.height;1!=y.rotation&&3!=y.rotation||(e=y.canvas.canvas.height,n=y.canvas.canvas.width),null==y.tcanvas&&(y.tcanvas=document.createElement("canvas"));var o=y.tcanvas.getContext("2d");return o.setTransform(1,0,0,1,0,0),o.canvas.width=e,o.canvas.height=n,o.rotate(-90*y.rotation*Math.PI/180),0==y.rotation&&o.drawImage(y.canvas.canvas,0,0),1==y.rotation&&o.drawImage(y.canvas.canvas,-y.canvas.canvas.width,0),2==y.rotation&&o.drawImage(y.canvas.canvas,-y.canvas.canvas.width,-y.canvas.canvas.height),3==y.rotation&&o.drawImage(y.canvas.canvas,0,-y.canvas.canvas.height),0!=y.rotation&&2!=y.rotation||(y.canvas.canvas.height=e,y.canvas.canvas.width=n),1!=y.rotation&&3!=y.rotation||(y.canvas.canvas.height=n,y.canvas.canvas.width=e),y.canvas.setTransform(1,0,0,1,0,0),y.canvas.rotate(90*a*Math.PI/180),y.rotation=a,y.canvas.drawImage(y.tcanvas,T(0),x(0,0)),y.width=y.canvas.canvas.width,y.height=y.canvas.canvas.height,null!=y.onScreenResize&&y.onScreenResize(y,y.width,y.height,y.CanvasId),!0}y.rotation=a},y.Start=function(){for(var t in y.state=0,y.acc=null,y.ZRLEfirst=1,y.inflate.inflateReset(),y.onKvmDataPending=[],y.onKvmDataAck=-1,y.kvmDataSupported=!1,y.sparecache)delete y.sparecache[t]},y.Stop=function(){y.UnGrabMouseInput(),y.UnGrabKeyInput(),y.parent&&y.parent.Stop()},y.send=function(t){y.parent&&y.parent.send(t)};var o={Pause:19,CapsLock:20,Space:32,Quote:39,Minus:45,NumpadMultiply:42,NumpadAdd:43,PrintScreen:44,Comma:44,NumpadSubtract:45,NumpadDecimal:46,Period:46,Slash:47,NumpadDivide:47,Semicolon:59,Equal:61,OSLeft:91,BracketLeft:91,OSRight:91,Backslash:92,BracketRight:93,ContextMenu:93,Backquote:96,NumLock:144,ScrollLock:145,Backspace:65288,Tab:65289,Enter:65293,NumpadEnter:65293,Escape:65307,Delete:65535,Home:65360,PageUp:65365,PageDown:65366,ArrowLeft:65361,ArrowUp:65362,ArrowRight:65363,ArrowDown:65364,End:65367,Insert:65379,F1:65470,F2:65471,F3:65472,F4:65473,F5:65474,F6:65475,F7:65476,F8:65477,F9:65478,F10:65479,F11:65480,F12:65481,ShiftLeft:65505,ShiftRight:65506,ControlLeft:65507,ControlRight:65508,AltLeft:65513,AltRight:65514,MetaLeft:65511,MetaRight:65512};function e(t,a){if((a=a||window.event).code&&0==y.localKeyMap){null!=(e=function(t){return t.code.startsWith("Key")&&4==t.code.length?t.code.charCodeAt(3)+(0==t.shiftKey?32:0):t.code.startsWith("Digit")&&6==t.code.length?t.code.charCodeAt(5):t.code.startsWith("Numpad")&&7==t.code.length?t.code.charCodeAt(6):o[t.code]}(a))&&y.sendkey(e,t)}else{var e,n=e=a.keyCode;0==a.shiftKey&&65<=e&&e<=90&&(n=e+32),112<=e&&e<=124&&(n=e+65358),8==e&&(n=65288),9==e&&(n=65289),13==e&&(n=65293),16==e&&(n=65505),17==e&&(n=65507),18==e&&(n=65513),27==e&&(n=65307),33==e&&(n=65365),34==e&&(n=65366),35==e&&(n=65367),36==e&&(n=65360),37==e&&(n=65361),38==e&&(n=65362),39==e&&(n=65363),40==e&&(n=65364),45==e&&(n=65379),46==e&&(n=65535),96<=e&&e<=105&&(n=e-48),106==e&&(n=42),107==e&&(n=43),109==e&&(n=45),110==e&&(n=46),111==e&&(n=47),186==e&&(n=59),187==e&&(n=61),188==e&&(n=44),189==e&&(n=45),190==e&&(n=46),191==e&&(n=47),192==e&&(n=96),219==e&&(n=91),220==e&&(n=92),221==e&&(n=93),222==e&&(n=39),y.sendkey(n,t)}return y.haltEvent(a)}function M(t,a){if(t.byteLength<8)return 0;var e=a.getUint32(4)+8;if(t.byteLength<e)return 0;if(null!=y.onKvmData){var n=b(t.slice(8,e));16<=n.length&&"\0KvmDataChannel"==n.substring(0,15)&&(0==y.kvmDataSupported&&(y.kvmDataSupported=!0,console.log("KVM Data Channel Supported.")),(-1==y.onKvmDataAck&&16==n.length||0!=n.charCodeAt(15))&&(y.onKvmDataAck=!0),16<=n.length&&y.onKvmData(n.substring(16)),1==y.onKvmDataAck&&0<y.onKvmDataPending.length&&y.sendKvmData(y.onKvmDataPending.shift()))}return e}y.sendkey=function(t,a){if("object"==typeof t){var e="";for(var n in t)e+=String.fromCharCode(4,t[n][1],0,0)+IntToStr(t[n][0]);y.send(e)}else y.send(String.fromCharCode(4,a,0,0)+IntToStr(t))},y.sendKvmData=function(t){!0!==y.onKvmDataAck?y.onKvmDataPending.push(t):(t="\0KvmDataChannel\0"+t,y.send(String.fromCharCode(6,0,0,0)+IntToStr(t.length)+t),y.onKvmDataAck=!1)},y.sendKeepAlive=function(){y.lastKeepAlive<Date.now()-5e3&&(y.lastKeepAlive=Date.now(),y.send(String.fromCharCode(6,0,0,0)+IntToStr(16)+"\0KvmDataChannel\0"))},y.SendCtrlAltDelMsg=function(){y.sendcad()};var n=!(y.sendcad=function(){y.sendkey([[65507,1],[65513,1],[65535,1],[65535,0],[65513,0],[65507,0]])}),r=!1;return y.GrabMouseInput=function(){if(1!=n){var t=y.canvas.canvas;t.onmouseup=y.mouseup,t.onmousedown=y.mousedown,t.onmousemove=y.mousemove,n=!0}},y.UnGrabMouseInput=function(){if(0!=n){var t=y.canvas.canvas;t.onmousemove=null,t.onmouseup=null,t.onmousedown=null,n=!1}},y.GrabKeyInput=function(){1!=r&&(document.onkeyup=y.handleKeyUp,document.onkeydown=y.handleKeyDown,document.onkeypress=y.handleKeys,r=!0)},y.UnGrabKeyInput=function(){0!=r&&(document.onkeyup=null,document.onkeydown=null,document.onkeypress=null,r=!1)},y.handleKeys=function(t){return y.haltEvent(t)},y.handleKeyUp=function(t){return e(0,t)},y.handleKeyDown=function(t){return e(1,t)},y.haltEvent=function(t){return t.preventDefault&&t.preventDefault(),t.stopPropagation&&t.stopPropagation(),!1},y.mousedblclick=function(t){},y.mousedown=function(t){return y.buttonmask|=1<<t.button,y.mousemove(t,1)},y.mouseup=function(t){return y.buttonmask&=65535-(1<<t.button),y.mousemove(t,1)},y.mousemove=function(t,a){if(y.state<4)return!0;var e=y.canvas.canvas.height/Q(y.canvasid).offsetHeight,n=y.canvas.canvas.width/Q(y.canvasid).offsetWidth,o=y.getPositionOfControl(Q(y.canvasid));if(y.mx=(event.pageX-o[0])*n,y.my=(event.pageY-o[1])*e,event.addx&&(y.mx+=event.addx),event.addy&&(y.my+=event.addy),1!=y.noMouseRotate&&(y.mx2=function(t,a){return 0==y.rotation?t:1==y.rotation?a:2==y.rotation?y.canvas.canvas.width-t:3==y.rotation?y.canvas.canvas.height-a:0}(y.mx,y.my),y.my=function(t,a){return 0==y.rotation?a:1==y.rotation?y.canvas.canvas.width-t:2==y.rotation?y.canvas.canvas.height-a:3==y.rotation?t:0}(y.mx,y.my),y.mx=y.mx2),1==a?(y.send(String.fromCharCode(5,y.buttonmask)+ShortToStr(y.mx)+ShortToStr(y.my)),null!=y.mNagleTimer&&(clearTimeout(y.mNagleTimer),y.mNagleTimer=null)):null==y.mNagleTimer&&(y.mNagleTimer=setTimeout(function(){y.send(String.fromCharCode(5,y.buttonmask)+ShortToStr(y.mx)+ShortToStr(y.my)),y.mNagleTimer=null},50)),QV("DeskFocus",y.focusmode),0!=y.focusmode){var r=Math.min(y.mx,y.canvas.canvas.width-y.focusmode),i=Math.min(y.my,y.canvas.canvas.height-y.focusmode),s=2*y.focusmode,c=Q(y.canvasid),h=c.offsetHeight/y.canvas.canvas.height,f=c.offsetWidth/y.canvas.canvas.width,d=QS("DeskFocus"),v=y.getPositionOfControl(Q(y.canvasid).parentElement);d.left=Math.max((r-y.focusmode)*h,0)+(pos[0]-v[0])+"px",d.top=Math.max((i-y.focusmode)*f,0)+(pos[1]-v[1])+"px",d.width=s*h-6+"px",d.height=s*h-6+"px"}return y.haltEvent(t)},y.getPositionOfControl=function(t){var a=Array(2);for(a[0]=a[1]=0;t;)a[0]+=t.offsetLeft,a[1]+=t.offsetTop,t=t.offsetParent;return a},y}
\ No newline at end of file
1 +var CreateAmtRemoteDesktop=function(a,t){var y={};function b(a){return String.fromCharCode.apply(null,a)}function C(a){for(var t=new Uint8Array(a.length),e=0,n=a.length;e<n;++e)t[e]=a.charCodeAt(e);return t}function D(a,t,e,n,o,r,i){var s,c,h,f,v=a[t++],d={},u=0,l=0;if(0==v){if(2==y.bpp)for(f=0;f<i;f++)L(a[t++]+(a[t++]<<8),f);else for(f=0;f<i;f++)K(a[t++],f);k(y.spare,e,n)}else if(1==v){c=a[t++]+(2==y.bpp?a[t++]<<8:0),y.canvas.fillStyle="rgb("+(1==y.bpp?(224&c)+","+((28&c)<<3)+","+M((3&c)<<6):(c>>8&248)+","+(c>>3&252)+","+((31&c)<<3))+")";var p=T(e,n);n=x(e,n),e=p,y.canvas.fillRect(e,n,o,r)}else if(1<v&&v<17){var g=4,m=15;if(2==y.bpp){for(f=0;f<v;f++)d[f]=a[t++]+(a[t++]<<8);for(2==v?m=g=1:v<=4&&(g=2,m=3);u<i&&t<a.byteLength;)for(c=a[t++],f=8-g;0<=f;f-=g)L(d[c>>f&m],u++)}else{for(f=0;f<v;f++)d[f]=a[t++];for(2==v?m=g=1:v<=4&&(g=2,m=3);u<i&&t<a.byteLength;)for(c=a[t++],f=8-g;0<=f;f-=g)K(d[c>>f&m],u++)}k(y.spare,e,n)}else if(128==v){if(2==y.bpp)for(;u<i&&t<a.byteLength;){for(c=a[t++]+(a[t++]<<8),l=1;l+=h=a[t++],255==h;);if(0==y.rotation)w(c,u,l),u+=l;else for(;0<=--l;)L(c,u++)}else for(;u<i&&t<a.byteLength;){for(c=a[t++],l=1;l+=h=a[t++],255==h;);if(0==y.rotation)S(c,u,l),u+=l;else for(;0<=--l;)K(c,u++)}k(y.spare,e,n)}else if(129<v){if(2==y.bpp)for(f=0;f<v-128;f++)d[f]=a[t++]+(a[t++]<<8);else for(f=0;f<v-128;f++)d[f]=a[t++];for(;u<i&&t<a.byteLength;){if(l=1,c=d[(s=a[t++])%128],127<s)for(;l+=h=a[t++],255==h;);if(0==y.rotation)2==y.bpp?w(c,u,l):S(c,u,l),u+=l;else if(2==y.bpp)for(;0<=--l;)L(c,u++);else for(;0<=--l;)K(c,u++)}k(y.spare,e,n)}}function k(a,t,e){if(1!=y.holding){var n=function(a,t){return 0==y.rotation?a:1==y.rotation?y.canvas.canvas.width-y.sparew2-t:2==y.rotation?y.canvas.canvas.width-y.sparew2-a:3==y.rotation?t:0}(t,e);e=function(a,t){return 0==y.rotation?t:1==y.rotation?a:2==y.rotation?y.canvas.canvas.height-y.spareh2-t:3==y.rotation?y.canvas.canvas.height-y.spareh-a:0}(t,e),t=n,y.canvas.putImageData(a,t,e)}}function K(a,t){var e=t<<2;if(0<y.rotation)if(1==y.rotation){var n=t%y.sparew,o=Math.floor(t/y.sparew);e=(t=n*y.sparew2+(y.sparew2-1-o))<<2}else if(2==y.rotation)e=y.sparew*y.spareh*4-4-e;else if(3==y.rotation){n=t%y.sparew,o=Math.floor(t/y.sparew);e=(t=(y.sparew2-1-n)*y.sparew2+o)<<2}y.spare.data[e]=224&a,y.spare.data[e+1]=(28&a)<<3,y.spare.data[e+2]=M((3&a)<<6)}function L(a,t){var e=t<<2;if(0<y.rotation)if(1==y.rotation){var n=t%y.sparew,o=Math.floor(t/y.sparew);e=(t=n*y.sparew2+(y.sparew2-1-o))<<2}else if(2==y.rotation)e=y.sparew*y.spareh*4-4-e;else if(3==y.rotation){n=t%y.sparew,o=Math.floor(t/y.sparew);e=(t=(y.sparew2-1-n)*y.sparew2+o)<<2}y.spare.data[e]=a>>8&248,y.spare.data[e+1]=a>>3&252,y.spare.data[e+2]=(31&a)<<3}function S(a,t,e){for(var n=t<<2,o=224&a,r=(28&a)<<3,i=M((3&a)<<6);0<=--e;)y.spare.data[n]=o,y.spare.data[n+1]=r,y.spare.data[n+2]=i,n+=4}function w(a,t,e){for(var n=t<<2,o=a>>8&248,r=a>>3&252,i=(31&a)<<3;0<=--e;)y.spare.data[n]=o,y.spare.data[n+1]=r,y.spare.data[n+2]=i,n+=4}function T(a){return 0==y.rotation?a:1==y.rotation?a:2==y.rotation?a-y.canvas.canvas.width:3==y.rotation?a-y.canvas.canvas.height:0}function x(a,t){return 0==y.rotation?t:1==y.rotation?t-y.canvas.canvas.width:2==y.rotation?t-y.canvas.canvas.height:3==y.rotation?t:0}function M(a){return 127<a?a+32:a}function A(){if(1!=y.holding)if(0<y.focusmode){var a=2*y.focusmode;y.send(String.fromCharCode(3,1)+ShortToStr(Math.max(Math.min(y.ox,y.mx)-y.focusmode,0))+ShortToStr(Math.max(Math.min(y.oy,y.my)-y.focusmode,0))+ShortToStr(a+Math.abs(y.ox-y.mx))+ShortToStr(a+Math.abs(y.oy-y.my))),y.ox=y.mx,y.oy=y.my}else y.send(String.fromCharCode(3,1,0,0,0,0)+ShortToStr(y.rwidth)+ShortToStr(y.rheight))}y.canvasid=a,y.CanvasId=Q(a),y.scrolldiv=t,y.canvas=Q(a).getContext("2d"),y.protocol=2,y.state=0,y.acc=null,y.ScreenWidth=960,y.ScreenHeight=700,y.width=0,y.height=0,y.rwidth=0,y.rheight=0,y.bpp=2,y.useZRLE=!0,y.showmouse=!0,y.buttonmask=0,y.localKeyMap=!0,y.spare=null,y.sparew=0,y.spareh=0,y.sparew2=0,y.spareh2=0,y.sparecache={},y.ZRLEfirst=1,y.onScreenSizeChange=null,y.frameRateDelay=0,y.noMouseRotate=!1,y.rotation=0,y.kvmDataSupported=!1,y.onKvmData=null,y.onKvmDataPending=[],y.onKvmDataAck=-1,y.holding=!1,y.lastKeepAlive=Date.now(),y.SwapMouse=!1,y.mNagleTimer=null,y.mx=0,y.my=0,y.ox=-1,y.oy=-1,y.focusmode=0,y.inflate=ZLIB.inflateInit(-15),y.xxStateChange=function(a){0==a?(y.canvas.fillStyle="#000000",y.canvas.fillRect(0,0,y.width,y.height),y.canvas.canvas.width=y.rwidth=y.width=640,y.canvas.canvas.height=y.rheight=y.height=400,QS(y.canvasid).cursor="default"):QS(y.canvasid).cursor=y.showmouse?"default":"none"},y.ProcessBinaryData=function(a){if(null==y.acc)y.acc=new Uint8Array(a);else{var t=new Uint8Array(y.acc.byteLength+a.byteLength);t.set(y.acc,0),t.set(new Uint8Array(a),y.acc.byteLength),y.acc=t}for(;null!=y.acc&&0<y.acc.byteLength;){var e=0,n=new DataView(y.acc.buffer);if(0==y.state&&12<=y.acc.byteLength)e=12,y.state=1,y.send("RFB 003.008\n");else if(1==y.state&&1<=y.acc.byteLength)e=y.acc[0]+1,y.send(String.fromCharCode(1)),y.state=2;else if(2==y.state&&4<=y.acc.byteLength){if(e=4,0!=n.getUint32(0))return y.Stop();y.send(String.fromCharCode(1)),y.state=3}else if(3==y.state&&24<=y.acc.byteLength){y.rotation=0;var o=n.getUint32(20);if(y.acc.byteLength<24+o)return;e=24+o,y.canvas.canvas.width=y.rwidth=y.width=y.ScreenWidth=n.getUint16(0),y.canvas.canvas.height=y.rheight=y.height=y.ScreenHeight=n.getUint16(2);var r="";y.useZRLE&&(r+=IntToStr(16)),r+=IntToStr(0),r+=IntToStr(1092),y.send(String.fromCharCode(2,0)+ShortToStr(r.length/4+1)+r+IntToStr(-223)),1==y.bpp&&y.send(String.fromCharCode(0,0,0,0,8,8,0,1)+ShortToStr(7)+ShortToStr(7)+ShortToStr(3)+String.fromCharCode(5,2,0,0,0,0)),y.state=4,y.parent&&y.parent.xxStateChange(3),A(),y.ox=-1,null!=y.onScreenSizeChange&&y.onScreenSizeChange(y,y.ScreenWidth,y.ScreenHeight)}else if(4==y.state)switch(y.acc[0]){case 0:if(y.acc.byteLength<4)return;y.state=100+n.getUint16(2),e=4;break;case 2:e=1;break;case 3:if(y.acc.byteLength<8)return;var i=n.getUint32(4)+8;if(y.acc.byteLength<i)return;e=I(y.acc,n)}else if(100<y.state&&12<=y.acc.byteLength){var s=n.getUint16(0),c=n.getUint16(2),h=n.getUint16(4),f=n.getUint16(6),v=h*f,d=n.getUint32(8);if(d<17){if(h<1||64<h||f<1||64<f)return console.log("Invalid tile size ("+h+","+f+"), disconnecting."),y.Stop();if(y.sparew!=h||y.spareh!=f){y.sparew=y.sparew2=h,y.spareh=y.spareh2=f,1!=y.rotation&&3!=y.rotation||(y.sparew2=f,y.spareh2=h);var u=y.sparew2+"x"+y.spareh2;if(y.spare=y.sparecache[u],!y.spare){y.sparecache[u]=y.spare=y.canvas.createImageData(y.sparew2,y.spareh2);for(var l=y.sparew2*y.spareh2<<2,p=3;p<l;p+=4)y.spare.data[p]=255}}}if(4294967073==d)y.canvas.canvas.width=y.rwidth=y.width=h,y.canvas.canvas.height=y.rheight=y.height=f,y.send(String.fromCharCode(3,0,0,0,0,0)+ShortToStr(y.width)+ShortToStr(y.height)),e=12,null!=y.onScreenSizeChange&&y.onScreenSizeChange(y,y.ScreenWidth,y.ScreenHeight);else if(0==d){var g=12,m=12+v*y.bpp;if(y.acc.byteLength<m)return;if(e=m,2==y.bpp)for(p=0;p<v;p++)L(n.getUint16(g,!0),p),g+=2;else for(p=0;p<v;p++)K(y.acc[g++],p);k(y.spare,s,c)}else{if(16!=d)return y.Stop();if(y.acc.byteLength<16)return;var S=n.getUint32(12);if(y.acc.byteLength<16+S)return;g=16;if(5<S&&0==y.acc[g]&&n.getUint16(g+1,!0)==S-5)D(y.acc,g+5,s,c,h,f,v,S);else{var w=y.inflate.inflate(b(new Uint8Array(y.acc.buffer.slice(g,g+S-0))));0<w.length?D(C(w),0,s,c,h,f,v,w.length):console.log("Invalid deflate data")}e=16+S}100==--y.state&&(y.state=4,0==y.frameRateDelay?A():setTimeout(A,y.frameRateDelay))}if(0==e)return;e!=y.acc.byteLength?y.acc=new Uint8Array(y.acc.buffer.slice(e)):y.acc=null}},y.hold=function(a){y.holding!=a&&(y.holding=a,y.canvas.fillStyle="#000000",y.canvas.fillRect(0,0,y.width,y.height),0==y.holding?(y.canvas.canvas.width==y.width&&y.canvas.canvas.height==y.height||(y.canvas.canvas.width=y.width,y.canvas.canvas.height=y.height,null!=y.onScreenSizeChange&&y.onScreenSizeChange(y,y.ScreenWidth,y.ScreenHeight)),y.Send(String.fromCharCode(3,0,0,0,0,0)+ShortToStr(y.width)+ShortToStr(y.height))):(y.UnGrabMouseInput(),y.UnGrabKeyInput()))},y.tcanvas=null,y.setRotation=function(a){for(;a<0;)a+=4;var t=a%4;if(1!=y.holding){if(t==y.rotation)return!0;var e=y.canvas.canvas.width,n=y.canvas.canvas.height;1!=y.rotation&&3!=y.rotation||(e=y.canvas.canvas.height,n=y.canvas.canvas.width),null==y.tcanvas&&(y.tcanvas=document.createElement("canvas"));var o=y.tcanvas.getContext("2d");return o.setTransform(1,0,0,1,0,0),o.canvas.width=e,o.canvas.height=n,o.rotate(-90*y.rotation*Math.PI/180),0==y.rotation&&o.drawImage(y.canvas.canvas,0,0),1==y.rotation&&o.drawImage(y.canvas.canvas,-y.canvas.canvas.width,0),2==y.rotation&&o.drawImage(y.canvas.canvas,-y.canvas.canvas.width,-y.canvas.canvas.height),3==y.rotation&&o.drawImage(y.canvas.canvas,0,-y.canvas.canvas.height),0!=y.rotation&&2!=y.rotation||(y.canvas.canvas.height=e,y.canvas.canvas.width=n),1!=y.rotation&&3!=y.rotation||(y.canvas.canvas.height=n,y.canvas.canvas.width=e),y.canvas.setTransform(1,0,0,1,0,0),y.canvas.rotate(90*t*Math.PI/180),y.rotation=t,y.canvas.drawImage(y.tcanvas,T(0),x(0,0)),y.width=y.canvas.canvas.width,y.height=y.canvas.canvas.height,null!=y.onScreenResize&&y.onScreenResize(y,y.width,y.height,y.CanvasId),!0}y.rotation=t},y.Start=function(){for(var a in y.state=0,y.acc=null,y.ZRLEfirst=1,y.inflate.inflateReset(),y.onKvmDataPending=[],y.onKvmDataAck=-1,y.kvmDataSupported=!1,y.sparecache)delete y.sparecache[a]},y.Stop=function(){y.UnGrabMouseInput(),y.UnGrabKeyInput(),y.parent&&y.parent.Stop()},y.send=function(a){y.parent&&y.parent.send(a)};var o={Pause:19,CapsLock:20,Space:32,Quote:39,Minus:45,NumpadMultiply:42,NumpadAdd:43,PrintScreen:44,Comma:44,NumpadSubtract:45,NumpadDecimal:46,Period:46,Slash:47,NumpadDivide:47,Semicolon:59,Equal:61,OSLeft:91,BracketLeft:91,OSRight:91,Backslash:92,BracketRight:93,ContextMenu:93,Backquote:96,NumLock:144,ScrollLock:145,Backspace:65288,Tab:65289,Enter:65293,NumpadEnter:65293,Escape:65307,Delete:65535,Home:65360,PageUp:65365,PageDown:65366,ArrowLeft:65361,ArrowUp:65362,ArrowRight:65363,ArrowDown:65364,End:65367,Insert:65379,F1:65470,F2:65471,F3:65472,F4:65473,F5:65474,F6:65475,F7:65476,F8:65477,F9:65478,F10:65479,F11:65480,F12:65481,ShiftLeft:65505,ShiftRight:65506,ControlLeft:65507,ControlRight:65508,AltLeft:65513,AltRight:65514,MetaLeft:65511,MetaRight:65512};function e(a,t){if((t=t||window.event).code&&0==y.localKeyMap){null!=(e=function(a){return a.code.startsWith("Key")&&4==a.code.length?a.code.charCodeAt(3)+(0==a.shiftKey?32:0):a.code.startsWith("Digit")&&6==a.code.length?a.code.charCodeAt(5):a.code.startsWith("Numpad")&&7==a.code.length?a.code.charCodeAt(6):o[a.code]}(t))&&y.sendkey(e,a)}else{var e,n=e=t.keyCode;0==t.shiftKey&&65<=e&&e<=90&&(n=e+32),112<=e&&e<=124&&(n=e+65358),8==e&&(n=65288),9==e&&(n=65289),13==e&&(n=65293),16==e&&(n=65505),17==e&&(n=65507),18==e&&(n=65513),27==e&&(n=65307),33==e&&(n=65365),34==e&&(n=65366),35==e&&(n=65367),36==e&&(n=65360),37==e&&(n=65361),38==e&&(n=65362),39==e&&(n=65363),40==e&&(n=65364),45==e&&(n=65379),46==e&&(n=65535),96<=e&&e<=105&&(n=e-48),106==e&&(n=42),107==e&&(n=43),109==e&&(n=45),110==e&&(n=46),111==e&&(n=47),186==e&&(n=59),187==e&&(n=61),188==e&&(n=44),189==e&&(n=45),190==e&&(n=46),191==e&&(n=47),192==e&&(n=96),219==e&&(n=91),220==e&&(n=92),221==e&&(n=93),222==e&&(n=39),y.sendkey(n,a)}return y.haltEvent(t)}function I(a,t){if(a.byteLength<8)return 0;var e=t.getUint32(4)+8;if(a.byteLength<e)return 0;if(null!=y.onKvmData){var n=b(a.slice(8,e));16<=n.length&&"\0KvmDataChannel"==n.substring(0,15)&&(0==y.kvmDataSupported&&(y.kvmDataSupported=!0,console.log("KVM Data Channel Supported.")),(-1==y.onKvmDataAck&&16==n.length||0!=n.charCodeAt(15))&&(y.onKvmDataAck=!0),16<=n.length&&y.onKvmData(n.substring(16)),1==y.onKvmDataAck&&0<y.onKvmDataPending.length&&y.sendKvmData(y.onKvmDataPending.shift()))}return e}y.sendkey=function(a,t){if("object"==typeof a){var e="";for(var n in a)e+=String.fromCharCode(4,a[n][1],0,0)+IntToStr(a[n][0]);y.send(e)}else y.send(String.fromCharCode(4,t,0,0)+IntToStr(a))},y.sendKvmData=function(a){!0!==y.onKvmDataAck?y.onKvmDataPending.push(a):(a="\0KvmDataChannel\0"+a,y.send(String.fromCharCode(6,0,0,0)+IntToStr(a.length)+a),y.onKvmDataAck=!1)},y.sendKeepAlive=function(){y.lastKeepAlive<Date.now()-5e3&&(y.lastKeepAlive=Date.now(),y.send(String.fromCharCode(6,0,0,0)+IntToStr(16)+"\0KvmDataChannel\0"))},y.SendCtrlAltDelMsg=function(){y.sendcad()};var n=!(y.sendcad=function(){y.sendkey([[65507,1],[65513,1],[65535,1],[65535,0],[65513,0],[65507,0]])}),r=!1;return y.GrabMouseInput=function(){if(1!=n){var a=y.canvas.canvas;a.onmouseup=y.mouseup,a.onmousedown=y.mousedown,a.onmousemove=y.mousemove,n=!0}},y.UnGrabMouseInput=function(){if(0!=n){var a=y.canvas.canvas;a.onmousemove=null,a.onmouseup=null,a.onmousedown=null,n=!1}},y.GrabKeyInput=function(){1!=r&&(document.onkeyup=y.handleKeyUp,document.onkeydown=y.handleKeyDown,document.onkeypress=y.handleKeys,r=!0)},y.UnGrabKeyInput=function(){0!=r&&(document.onkeyup=null,document.onkeydown=null,document.onkeypress=null,r=!1)},y.handleKeys=function(a){return y.haltEvent(a)},y.handleKeyUp=function(a){return e(0,a)},y.handleKeyDown=function(a){return e(1,a)},y.haltEvent=function(a){return a.preventDefault&&a.preventDefault(),a.stopPropagation&&a.stopPropagation(),!1},y.mousedblclick=function(a){},y.mousedown=function(a){var t=a.button;return y.SwapMouse&&(0==t?t=2:2==t&&(t=0)),y.buttonmask|=1<<t,y.mousemove(a,1)},y.mouseup=function(a){var t=a.button;return y.SwapMouse&&(0==t?t=2:2==t&&(t=0)),y.buttonmask&=65535-(1<<t),y.mousemove(a,1)},y.mousemove=function(a,t){if(y.state<4)return!0;var e=y.canvas.canvas.height/Q(y.canvasid).offsetHeight,n=y.canvas.canvas.width/Q(y.canvasid).offsetWidth,o=y.getPositionOfControl(Q(y.canvasid));if(y.mx=(event.pageX-o[0])*n,y.my=(event.pageY-o[1])*e,event.addx&&(y.mx+=event.addx),event.addy&&(y.my+=event.addy),1!=y.noMouseRotate&&(y.mx2=function(a,t){return 0==y.rotation?a:1==y.rotation?t:2==y.rotation?y.canvas.canvas.width-a:3==y.rotation?y.canvas.canvas.height-t:0}(y.mx,y.my),y.my=function(a,t){return 0==y.rotation?t:1==y.rotation?y.canvas.canvas.width-a:2==y.rotation?y.canvas.canvas.height-t:3==y.rotation?a:0}(y.mx,y.my),y.mx=y.mx2),1==t?(y.send(String.fromCharCode(5,y.buttonmask)+ShortToStr(y.mx)+ShortToStr(y.my)),null!=y.mNagleTimer&&(clearTimeout(y.mNagleTimer),y.mNagleTimer=null)):null==y.mNagleTimer&&(y.mNagleTimer=setTimeout(function(){y.send(String.fromCharCode(5,y.buttonmask)+ShortToStr(y.mx)+ShortToStr(y.my)),y.mNagleTimer=null},50)),QV("DeskFocus",y.focusmode),0!=y.focusmode){var r=Math.min(y.mx,y.canvas.canvas.width-y.focusmode),i=Math.min(y.my,y.canvas.canvas.height-y.focusmode),s=2*y.focusmode,c=Q(y.canvasid),h=c.offsetHeight/y.canvas.canvas.height,f=c.offsetWidth/y.canvas.canvas.width,v=QS("DeskFocus"),d=y.getPositionOfControl(Q(y.canvasid).parentElement);v.left=Math.max((r-y.focusmode)*h,0)+(pos[0]-d[0])+"px",v.top=Math.max((i-y.focusmode)*f,0)+(pos[1]-d[1])+"px",v.width=s*h-6+"px",v.height=s*h-6+"px"}return y.haltEvent(a)},y.getPositionOfControl=function(a){var t=Array(2);for(t[0]=t[1]=0;a;)t[0]+=a.offsetLeft,t[1]+=a.offsetTop,a=a.offsetParent;return t},y}
\ No newline at end of file
public/scripts/amt-desktop-0.0.2.js
+11 -2
@@ -46,6 +46,7 @@ var CreateAmtRemoteDesktop = function (divid, scrolldiv) {
46 obj.holding = false;
47 obj.lastKeepAlive = Date.now();
48 // ###END###{DesktopInband}
49 + obj.SwapMouse = false;
50
51 obj.mNagleTimer = null; // Mouse motion slowdown timer
52 obj.mx = 0; // Last mouse x position
@@ -823,8 +824,16 @@ var CreateAmtRemoteDesktop = function (divid, scrolldiv) {
824
825 // RFB "PointerEvent" and mouse handlers
826 obj.mousedblclick = function (e) { }
826 - obj.mousedown = function (e) { obj.buttonmask |= (1 << e.button); return obj.mousemove(e, 1); }
827 - obj.mouseup = function (e) { obj.buttonmask &= (0xFFFF - (1 << e.button)); return obj.mousemove(e, 1); }
827 + obj.mousedown = function (e) {
828 + var b = e.button;
829 + if (obj.SwapMouse) { if (b == 0) { b = 2; } else if (b == 2) { b = 0; } }
830 + obj.buttonmask |= (1 << b); return obj.mousemove(e, 1);
831 + }
832 + obj.mouseup = function (e) {
833 + var b = e.button;
834 + if (obj.SwapMouse) { if (b == 0) { b = 2; } else if (b == 2) { b = 0; } }
835 + obj.buttonmask &= (0xFFFF - (1 << b)); return obj.mousemove(e, 1);
836 + }
837 obj.mousemove = function (e, force) {
838 if (obj.state < 4) return true;
839 var ScaleFactorHeight = (obj.canvas.canvas.height / Q(obj.canvasid).offsetHeight);
translate/translate.json
+69 -3
@@ -2348,6 +2348,18 @@
2348 "default.handlebars->29->568"
2349 ]
2350 },
2351 + {
2352 + "en": "ALT + F4",
2353 + "xloc": [
2354 + "default-mobile.handlebars->container->page_content->column_l->p10->deskButtonMenu->19"
2355 + ]
2356 + },
2357 + {
2358 + "en": "ALT + TAB",
2359 + "xloc": [
2360 + "default-mobile.handlebars->container->page_content->column_l->p10->deskButtonMenu->23"
2361 + ]
2362 + },
2363 {
2364 "cs": "AMT",
2365 "de": "AMT",
@@ -6482,6 +6494,12 @@
6494 "default.handlebars->29->482"
6495 ]
6496 },
6497 + {
6498 + "en": "CTRL + W",
6499 + "xloc": [
6500 + "default-mobile.handlebars->container->page_content->column_l->p10->deskButtonMenu->21"
6501 + ]
6502 + },
6503 {
6504 "cs": "Chyba volání",
6505 "de": "Aufruf-Fehler",
@@ -9948,7 +9966,7 @@
9966 {
9967 "en": "Ctrl-Alt-Del",
9968 "xloc": [
9951 - "default-mobile.handlebars->container->page_content->column_l->p10->buttonMenu->3"
9969 + "default-mobile.handlebars->container->page_content->column_l->p10->deskButtonMenu->3"
9970 ]
9971 },
9972 {
@@ -13229,7 +13247,7 @@
13247 "zh-chs": "ESC",
13248 "zh-cht": "ESC",
13249 "xloc": [
13232 - "default-mobile.handlebars->container->page_content->column_l->p10->buttonMenu->5",
13250 + "default-mobile.handlebars->container->page_content->column_l->p10->deskButtonMenu->5",
13251 "default.handlebars->container->column_l->p11->deskarea0->deskarea4->3",
13252 "default.handlebars->container->column_l->p12->termTable->1->1->6->1->3"
13253 ]
@@ -32826,6 +32844,18 @@
32844 "message2.handlebars->5->15"
32845 ]
32846 },
32847 + {
32848 + "en": "Shift + F10",
32849 + "xloc": [
32850 + "default-mobile.handlebars->container->page_content->column_l->p10->deskButtonMenu->27"
32851 + ]
32852 + },
32853 + {
32854 + "en": "Shift + WIN + M",
32855 + "xloc": [
32856 + "default-mobile.handlebars->container->page_content->column_l->p10->deskButtonMenu->15"
32857 + ]
32858 + },
32859 {
32860 "cs": "Shift+Win+M",
32861 "de": "Umschalten+Win+M",
@@ -35169,6 +35199,12 @@
35199 "default.handlebars->29->362"
35200 ]
35201 },
35202 + {
35203 + "en": "TAB",
35204 + "xloc": [
35205 + "default-mobile.handlebars->container->page_content->column_l->p10->deskButtonMenu->25"
35206 + ]
35207 + },
35208 {
35209 "cs": "Směrování TCP",
35210 "de": "TCP-Routing",
@@ -39213,6 +39249,36 @@
39249 "default.handlebars->29->64"
39250 ]
39251 },
39252 + {
39253 + "en": "WIN + Down",
39254 + "xloc": [
39255 + "default-mobile.handlebars->container->page_content->column_l->p10->deskButtonMenu->7"
39256 + ]
39257 + },
39258 + {
39259 + "en": "WIN + L",
39260 + "xloc": [
39261 + "default-mobile.handlebars->container->page_content->column_l->p10->deskButtonMenu->11"
39262 + ]
39263 + },
39264 + {
39265 + "en": "WIN + M",
39266 + "xloc": [
39267 + "default-mobile.handlebars->container->page_content->column_l->p10->deskButtonMenu->13"
39268 + ]
39269 + },
39270 + {
39271 + "en": "WIN + R",
39272 + "xloc": [
39273 + "default-mobile.handlebars->container->page_content->column_l->p10->deskButtonMenu->17"
39274 + ]
39275 + },
39276 + {
39277 + "en": "WIN + Up",
39278 + "xloc": [
39279 + "default-mobile.handlebars->container->page_content->column_l->p10->deskButtonMenu->9"
39280 + ]
39281 + },
39282 {
39283 "cs": "Čeká se na druhého uživatele…",
39284 "de": "Warte auf anderen Benutzer...",
@@ -39646,7 +39712,7 @@
39712 "zh-chs": "Win",
39713 "zh-cht": "Win",
39714 "xloc": [
39649 - "default-mobile.handlebars->container->page_content->column_l->p10->buttonMenu->1",
39715 + "default-mobile.handlebars->container->page_content->column_l->p10->deskButtonMenu->1",
39716 "default-mobile.handlebars->dialog->3->dialog3->deskkeys->5",
39717 "default.handlebars->container->column_l->p11->deskarea0->deskarea4->3->deskkeys->3",
39718 "desktop.handlebars->p11->deskarea0->deskarea4->3->deskkeys->3"
views/default-mobile.handlebars
+66 -30
@@ -604,15 +604,30 @@
604 </div>
605
606 <img id="deskkeybutton1" src="images/mobile-desk-exit.png" class="deskButton" style="top:10px;display:none" onclick="exitButton()" />
607 - <img id="deskkeybutton2a" src="images/mobile-desk-keyboard-open.png" class="deskButton" style="top:60px;display:none" onclick="toggleKeyboard()" />
608 - <img id="deskkeybutton2b" src="images/mobile-desk-keyboard-close.png" class="deskButton" style="top:60px;display:none" onclick="toggleKeyboard()" />
609 - <img id="deskkeybutton3a" src="images/mobile-desk-menu-open.png" class="deskButton" style="top:110px;display:none" onclick="toggleMenu(false)" />
610 - <img id="deskkeybutton3b" src="images/mobile-desk-menu-close.png" class="deskButton" style="top:110px;display:none" onclick="toggleMenu(true)" />
611 - <div style="position:absolute;top:0;left:0;z-index:200;opacity:0;width:1px;height:1px"><input id="softKeyboard" type="text" style="z-index:200;width:1px;height:1px" onfocus="keyboardFocusChange()" onblur="keyboardFocusChange()" onkeypress="return ondeskkeypress(event)" onkeydown="return ondeskkeydown(event)" onkeyup="return ondeskkeyup(event)" /></div>
612 - <div id="buttonMenu" style="display:none;position:absolute;top:10px;left:10px;right:55px;bottom:10px;z-index:1000">
613 - <div class="menuButton" onclick="deskMenuButton(1)">Win</div>
614 - <div class="menuButton" onclick="deskMenuButton(2)">Ctrl-Alt-Del</div>
615 - <div class="menuButton" onclick="deskMenuButton(3)">ESC</div>
607 + <img id="deskkeybutton3a" src="images/mobile-desk-menu-open.png" class="deskButton" style="top:60px;display:none" onclick="toggleMenu(false)" />
608 + <img id="deskkeybutton3b" src="images/mobile-desk-menu-close.png" class="deskButton" style="top:60px;display:none" onclick="toggleMenu(true)" />
609 + <img id="deskkeybutton4a" src="images/mobile-desk-mouse-left.png" class="deskButton" style="top:110px;display:none" onclick="deskChangeMouseButton(0)" />
610 + <img id="deskkeybutton4b" src="images/mobile-desk-mouse-right.png" class="deskButton" style="top:110px;display:none" onclick="deskChangeMouseButton(1)" />
611 + <img id="deskkeybutton2a" src="images/mobile-desk-keyboard-open.png" class="deskButton" style="top:160px;display:none" onclick="toggleKeyboard()" />
612 + <img id="deskkeybutton2b" src="images/mobile-desk-keyboard-close.png" class="deskButton" style="top:160px;display:none" onclick="toggleKeyboard()" />
613 + <div style="position:absolute;top:0;left:0;z-index:200;opacity:0;width:1px;height:1px">
614 + <input id="softKeyboard" autocomplete="off" type="password" style="z-index:200;opacity:0;width:1px;height:1px" onfocus="keyboardFocusChange()" onblur="keyboardFocusChange()" onkeypress="return ondeskkeypress(event)" onkeydown="return ondeskkeydown(event)" onkeyup="return ondeskkeyup(event)" />
615 + </div>
616 + <div id="deskButtonMenu" style="display:none;position:absolute;top:10px;left:10px;right:55px;bottom:10px;z-index:1000">
617 + <div class="menuButton" onclick="deskMenuButton(5)">Win</div>
618 + <div class="menuButton" onclick="deskMenuButton(10)">Ctrl-Alt-Del</div>
619 + <div class="menuButton" onclick="deskMenuButton(13)">ESC</div>
620 + <div class="menuButton" onclick="deskMenuButton(0)">WIN + Down</div>
621 + <div class="menuButton" onclick="deskMenuButton(1)">WIN + Up</div>
622 + <div class="menuButton" onclick="deskMenuButton(2)">WIN + L</div>
623 + <div class="menuButton" onclick="deskMenuButton(3)">WIN + M</div>
624 + <div class="menuButton" onclick="deskMenuButton(4)">Shift + WIN + M</div>
625 + <div class="menuButton" onclick="deskMenuButton(6)">WIN + R</div>
626 + <div class="menuButton" onclick="deskMenuButton(7)">ALT + F4</div>
627 + <div class="menuButton" onclick="deskMenuButton(8)">CTRL + W</div>
628 + <div class="menuButton" onclick="deskMenuButton(9)">ALT + TAB</div>
629 + <div class="menuButton" onclick="deskMenuButton(11)">TAB</div>
630 + <div class="menuButton" onclick="deskMenuButton(12)">Shift + F10</div>
631 </div>
632
633 <div id=p10desktop style="overflow:hidden;position:absolute;top:55px;bottom:0px;width:100%;display:none">
@@ -922,6 +937,11 @@
937 QH('p1message', "Connecting...");
938 go(1);
939
940 + // Document keys
941 + document.onkeypress = ondeskkeypress;
942 + document.onkeydown = ondeskkeydown;
943 + document.onkeyup = ondeskkeyup;
944 +
945 // Connect to the mesh server
946 meshserver = MeshServerCreateControl(domainUrl, authCookie);
947 meshserver.onStateChanged = onStateChanged;
@@ -1711,7 +1731,6 @@
1731 Q('apassword1').focus();
1732 }
1733
1714 -
1734 function account_showChangePassword() {
1735 if (xxdialogMode) return false;
1736 var x = '<table style=margin-left:10px>';
@@ -2149,10 +2168,12 @@
2168 updateDevices();
2169 }
2170
2171 + var gotKeyPressEvent = false;
2172 function ondeskkeypress(e) {
2153 - Q('softKeyboard').value = '';
2173 setSessionActivity();
2155 - if (desktop && !xxdialogMode && xxcurrentView == 10) {
2174 + if (desktop && !xxdialogMode && (xxcurrentView == 10) && (currentDevicePanel == 1)) {
2175 + gotKeyPressEvent = true;
2176 + Q('softKeyboard').value = '';
2177 // Check what keys we are allows to send
2178 if (currentNode != null) {
2179 var meshrights = GetMeshRights(currentNode.meshid);
@@ -2166,9 +2187,10 @@
2187 }
2188
2189 function ondeskkeydown(e) {
2169 - Q('softKeyboard').value = '';
2190 setSessionActivity();
2171 - if (desktop && !xxdialogMode && xxcurrentView == 10) {
2191 + if (desktop && !xxdialogMode && (xxcurrentView == 10) && (currentDevicePanel == 1)) {
2192 + gotKeyPressEvent = false;
2193 + Q('softKeyboard').value = '';
2194 // Check what keys we are allows to send
2195 if (currentNode != null) {
2196 var meshrights = GetMeshRights(currentNode.meshid);
@@ -2182,9 +2204,10 @@
2204 }
2205
2206 function ondeskkeyup(e) {
2185 - Q('softKeyboard').value = '';
2207 setSessionActivity();
2187 - if (desktop && !xxdialogMode && xxcurrentView == 10) {
2208 + if (desktop && !xxdialogMode && (xxcurrentView == 10) && (currentDevicePanel == 1)) {
2209 + var inputStr = Q('softKeyboard').value;
2210 + Q('softKeyboard').value = '';
2211 // Check what keys we are allows to send
2212 if (currentNode != null) {
2213 var meshrights = GetMeshRights(currentNode.meshid);
@@ -2193,7 +2216,14 @@
2216 var limitedInputAllowed = ((meshrights != 0xFFFFFFFF) && (((meshrights & 8) != 0) && ((meshrights & 256) == 0) && ((meshrights & 4096) != 0)));
2217 if (limitedInputAllowed == true) { if ((e.altKey == true) || (e.ctrlKey == true) || ((e.keyCode < 32) && (e.keyCode != 8) && (e.keyCode != 13)) || (e.keyCode > 90)) return false; }
2218 }
2196 - return desktop.m.handleKeyUp(e);
2219 + if ((gotKeyPressEvent == false) && (inputStr.length > 0) && desktop.m.SendKeyUnicode) {
2220 + // This is a mobile keyboard, we need to send that is in the input control.
2221 + var inputchar = inputStr[inputStr.length - 1].charCodeAt(0);
2222 + desktop.m.SendKeyUnicode(desktop.m.KeyAction.DOWN, inputchar);
2223 + desktop.m.SendKeyUnicode(desktop.m.KeyAction.UP, inputchar);
2224 + } else {
2225 + return desktop.m.handleKeyUp(e);
2226 + }
2227 }
2228 }
2229
@@ -3215,29 +3245,33 @@
3245 }
3246
3247 function exitButton() {
3248 + QV('deskButtonMenu', false);
3249 deskToggleFull();
3250 }
3251
3252 function closeFullscreen() {
3253 + if (fullScreenMode = false) return;
3254 if (document.exitFullscreen) { document.exitFullscreen(); }
3255 else if (document.webkitExitFullscreen) { document.webkitExitFullscreen(); } // Safari
3256 else if (document.msExitFullscreen) { document.msExitFullscreen(); } // IE11
3257 fullScreenMode = false;
3258 }
3259
3228 - function deskMenuButton(x) {
3229 - toggleMenu(true);
3230 - if (x == 1) { deskSendKeys(5); } // Win
3231 - if (x == 2) { deskSendKeys(10); } // CTRL-ALT-DEL
3232 - if (x == 3) { deskSendKeys(13); } // ESC
3233 - }
3260 + function deskMenuButton(x) { toggleMenu(true); deskSendKeys(x); }
3261
3262 function toggleMenu(x) {
3236 - QV('buttonMenu', fullscreen && !x);
3263 + QV('deskButtonMenu', fullscreen && !x);
3264 QV('deskkeybutton3a', fullscreen && x);
3265 QV('deskkeybutton3b', fullscreen && !x);
3266 }
3267
3268 + function deskChangeMouseButton(x) {
3269 + if (desktop == null) return;
3270 + desktop.m.SwapMouse = !desktop.m.SwapMouse;
3271 + QV('deskkeybutton4a', fullscreen && (!desktop.m.SwapMouse));
3272 + QV('deskkeybutton4b', fullscreen && (desktop.m.SwapMouse));
3273 + }
3274 +
3275 var fullscreen = false;
3276 function deskToggleFull() {
3277 fullscreen = !fullscreen;
@@ -3257,6 +3291,8 @@
3291 QV('deskkeybutton2b', false);
3292 QV('deskkeybutton3a', fullscreen);
3293 QV('deskkeybutton3b', false);
3294 + QV('deskkeybutton4a', fullscreen && (!desktop.m.SwapMouse));
3295 + QV('deskkeybutton4b', fullscreen && (desktop.m.SwapMouse));
3296 if (fullscreen) {
3297 QS('page_content').top = '0px';
3298 QS('page_content').bottom = '0px';
@@ -3315,19 +3351,19 @@
3351 function deskSendKeys(key) {
3352 if (xxdialogMode || desktop == null || desktop.State != 3) return;
3353 var ks = key ? key : Q('deskkeys').value;
3318 - if (ks == 0) { // WIN+Down arrow
3354 + if (ks == 0) { // WIN + Down arrow
3355 if (desktop.contype == 2) {
3356 desktop.m.sendkey([[0xffe7, 1], [0xff54, 1], [0xff54, 0], [0xffe7, 0]]); // Intel AMT: Meta-left down, Down arrow press, Down arrow release, Meta-left release
3357 } else {
3358 desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.EXDOWN, 0x5B], [desktop.m.KeyAction.DOWN, 40], [desktop.m.KeyAction.UP, 40], [desktop.m.KeyAction.EXUP, 0x5B]]); // Agent: L-Winkey press, Down arrow press, Down arrow release, L-Winkey release
3359 }
3324 - } else if (ks == 1) { // WIN+Up arrow
3360 + } else if (ks == 1) { // WIN + Up arrow
3361 if (desktop.contype == 2) {
3362 desktop.m.sendkey([[0xffe7, 1], [0xff52, 1], [0xff52, 0], [0xffe7, 0]]); // Intel AMT: Meta-left down, Up arrow press, Up arrow release, Meta-left release
3363 } else {
3364 desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.EXDOWN, 0x5B], [desktop.m.KeyAction.DOWN, 38], [desktop.m.KeyAction.UP, 38], [desktop.m.KeyAction.EXUP, 0x5B]]); // MeshAgent: L-Winkey press, Up arrow press, Up arrow release, L-Winkey release
3365 }
3330 - } else if (ks == 2) { // WIN+L arrow
3366 + } else if (ks == 2) { // WIN + L
3367 if (desktop.contype == 2) {
3368 desktop.m.sendkey([[0xffe7, 1], [0x6c, 1], [0x6c, 0], [0xffe7, 0]]); // Intel AMT: Meta-left down, 'l' press, 'l' release, Meta-left release
3369 } else {
@@ -3338,13 +3374,13 @@
3374 //desktop.m.SendKeyMsgKC(desktop.m.KeyAction.UP, 76);
3375 //desktop.m.SendKeyMsgKC(desktop.m.KeyAction.EXUP, 0x5B);
3376 }
3341 - } else if (ks == 3) { // WIN+M arrow
3377 + } else if (ks == 3) { // WIN + M
3378 if (desktop.contype == 2) {
3379 desktop.m.sendkey([[0xffe7, 1], [0x6d, 1], [0x6d, 0], [0xffe7, 0]]); // Intel AMT: Meta-left down, 'm' press, 'm' release, Meta-left release
3380 } else {
3381 desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.EXDOWN, 0x5B], [desktop.m.KeyAction.DOWN, 77], [desktop.m.KeyAction.UP, 77], [desktop.m.KeyAction.EXUP, 0x5B]]); // MeshAgent: L-Winkey press, 'M' press, 'M' release, L-Winkey release
3382 }
3347 - } else if (ks == 4) { // Shift+WIN+M arrow
3383 + } else if (ks == 4) { // Shift + WIN + M
3384 if (desktop.contype == 2) {
3385 desktop.m.sendkey([[0xffe1, 1], [0xffe7, 1], [0x6d, 1], [0x6d, 0], [0xffe7, 0], [0xffe1, 0]]); // Intel AMT: Shift-left down, Meta-left down, 'm' press, 'm' release, Meta-left release, Shift-left release
3386 } else {
@@ -3356,7 +3392,7 @@
3392 } else {
3393 desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.EXDOWN, 0x5B], [desktop.m.KeyAction.EXUP, 0x5B]]); // MeshAgent: L-Winkey press, L-Winkey release
3394 }
3359 - } else if (ks == 6) { // WIN+R
3395 + } else if (ks == 6) { // WIN + R
3396 if (desktop.contype == 2) {
3397 desktop.m.sendkey([[0xffe7, 1], [0x72, 1], [0x72, 0], [0xffe7, 0]]); // Intel AMT: Meta-left down, 'r' press, 'r' release, Meta-left release
3398 } else {