+
+
+
+
+
+
+
+
+
-
-
+
-
+
-
+
@@ -755,51 +791,62 @@
Agent Remote Desktop
-
-
-
- Scaling
-
-
-
- Rate
-
+
+
+
+ Quality
+ |
+
+
+ |
+
+
+
+ Scaling
+ |
+
+
+ |
+
+
+
+ Rate
+ |
+
+
+ |
+
+
Intel® AMT Hardware KVM
-
-
- Encoding
-
-
+
+
+ Encoding |
+
+
+ |
+
+
@@ -2103,8 +2150,7 @@
}
function ondeskkeypress(e) {
- toggleSoftKeys(0);
- Q('DeskSoftInput').value = '';
+ Q('softKeyboard').value = '';
setSessionActivity();
if (desktop && !xxdialogMode && xxcurrentView == 10) {
// Check what keys we are allows to send
@@ -2120,8 +2166,7 @@
}
function ondeskkeydown(e) {
- toggleSoftKeys(0);
- Q('DeskSoftInput').value = '';
+ Q('softKeyboard').value = '';
setSessionActivity();
if (desktop && !xxdialogMode && xxcurrentView == 10) {
// Check what keys we are allows to send
@@ -2137,8 +2182,7 @@
}
function ondeskkeyup(e) {
- toggleSoftKeys(0);
- Q('DeskSoftInput').value = '';
+ Q('softKeyboard').value = '';
setSessionActivity();
if (desktop && !xxdialogMode && xxcurrentView == 10) {
// Check what keys we are allows to send
@@ -3004,6 +3048,7 @@
// Show the right buttons
QV('disconnectbutton1', (deskState != 0));
+ QE('deskFullScreen', (deskState != 0));
QV('connectbutton1', (deskState == 0) && ((meshrights & 8) || (meshrights & 256)) && (currentNode.agent != null) && (currentNode.agent.caps & 1));
QV('connectbutton1h',
(deskState == 0) &&
@@ -3054,7 +3099,7 @@
desktop.onStateChanged = onDesktopStateChange;
desktop.m.bpp = (desktopsettings.encoding == 1 || desktopsettings.encoding == 3) ? 1 : 2;
desktop.m.useZRLE = (desktopsettings.encoding < 3);
- desktop.m.showmouse = desktopsettings.showmouse;
+ desktop.m.showmouse = true;
desktop.m.onScreenSizeChange = deskAdjust;
desktop.Start(desktopNode._id, 16994, '*', '*', 0);
desktop.contype = 2;
@@ -3115,8 +3160,6 @@
function showDesktopSettingsChanged() {
desktopsettings.encoding = d7desktopmode.value;
- desktopsettings.showfocus = d7showfocus.checked;
- desktopsettings.showmouse = d7showcursor.checked;
desktopsettings.quality = d7bitmapquality.value;
desktopsettings.scaling = d7bitmapscaling.value;
desktopsettings.framerate = d7framelimiter.value;
@@ -3137,16 +3180,65 @@
for (var i in ops) { r += ' '; }
QH('d7bitmapquality', r);
d7desktopmode.value = desktopsettings.encoding;
- d7showfocus.checked = desktopsettings.showfocus;
- d7showcursor.checked = desktopsettings.showmouse;
d7bitmapquality.value = 40; // Default value
if (ops.indexOf(parseInt(desktopsettings.quality)) >= 0) { d7bitmapquality.value = desktopsettings.quality; }
d7bitmapscaling.value = desktopsettings.scaling;
if (desktopsettings.framerate) { d7framelimiter.value = desktopsettings.framerate; }
}
+
+ var keyboardShown = false;
+ var keyboardShownTimer = null;
+ var fullScreenMode = false;
+ function toggleKeyboard() {
+ if (keyboardShownTimer != null) { clearTimeout(keyboardShownTimer); }
+ if (keyboardShown) { Q('softKeyboard').blur(); keyboardShown = false; } else { Q('softKeyboard').focus(); keyboardShown = true; }
+ QV('deskkeybutton2a', fullscreen && !keyboardShown);
+ QV('deskkeybutton2b', fullscreen && keyboardShown);
+ }
+
+ function keyboardFocusChange() {
+ keyboardShownTimer = setTimeout(function () {
+ keyboardShownTimer = null;
+ keyboardShown = (Q('softKeyboard') == document.activeElement);
+ QV('deskkeybutton2a', fullscreen && !keyboardShown);
+ QV('deskkeybutton2b', fullscreen && keyboardShown);
+ }, 10);
+ }
+
+ function openFullscreen() {
+ var elem = Q('p10');
+ if (elem.requestFullscreen) { elem.requestFullscreen(); }
+ else if (elem.webkitRequestFullscreen) { elem.webkitRequestFullscreen(); } // Safari
+ else if (elem.msRequestFullscreen) { elem.msRequestFullscreen(); } // IE11
+ fullScreenMode = true;
+ }
+
+ function exitButton() {
+ deskToggleFull();
+ }
+
+ function closeFullscreen() {
+ if (document.exitFullscreen) { document.exitFullscreen(); }
+ else if (document.webkitExitFullscreen) { document.webkitExitFullscreen(); } // Safari
+ else if (document.msExitFullscreen) { document.msExitFullscreen(); } // IE11
+ fullScreenMode = false;
+ }
+
+ function deskMenuButton(x) {
+ toggleMenu(true);
+ if (x == 1) { deskSendKeys(5); } // Win
+ if (x == 2) { deskSendKeys(10); } // CTRL-ALT-DEL
+ if (x == 3) { deskSendKeys(13); } // ESC
+ }
+
+ function toggleMenu(x) {
+ QV('buttonMenu', fullscreen && !x);
+ QV('deskkeybutton3a', fullscreen && x);
+ QV('deskkeybutton3b', fullscreen && !x);
+ }
+
var fullscreen = false;
- /*
function deskToggleFull() {
fullscreen = !fullscreen;
QV('mastheadx', !fullscreen);
@@ -3157,44 +3249,72 @@
QV('column_l_bottomgap', !fullscreen);
QV('idx_deskFullBtn2', fullscreen);
QV('deskFullBtn', !fullscreen);
+ QV('p10deskTopTable', !fullscreen);
+ QV('deskarea1', !fullscreen);
+ QV('deskarea4', !fullscreen);
+ QV('deskkeybutton1', fullscreen);
+ QV('deskkeybutton2a', fullscreen);
+ QV('deskkeybutton2b', false);
+ QV('deskkeybutton3a', fullscreen);
+ QV('deskkeybutton3b', false);
if (fullscreen) {
- QS('container').width = '100%';
- QS('container')['border-right'] = '0';
- QS('container')['border-left'] = '0';
- QS('column_l').padding = '0';
- QS('column_l').width = '100%';
+ QS('page_content').top = '0px';
+ QS('page_content').bottom = '0px';
+ QS('p10desktop').top = '0px';
+ QS('p10desktop').overflow = 'scroll';
+ QS('deskarea3').top = '0px';
+ QS('deskarea3').width = '1920px';
+ QS('deskarea3').height = '1080px';
+ QS('deskarea3')['padding-right'] = '55px';
+ openFullscreen();
} else {
- QS('container').width = '960px';
- QS('container')['border-right'] = '1px solid #b7b7b7';
- QS('container')['border-left'] = '1px solid #b7b7b7';
- QS('column_l').padding = '0 15px';
- QS('column_l').width = '930px';
- toggleFullScreen();
+ QS('page_content').top = '50px';
+ QS('page_content').bottom = '32px';
+ QS('p10desktop').top = '55px';
+ QS('p10desktop').overflow = 'hidden';
+ QS('deskarea3').top = '32px';
+ QS('deskarea3').width = '100%';
+ QS('deskarea3').height = 'calc(100% - 64px)';
+ QS('deskarea3')['padding-right'] = '';
+ closeFullscreen();
}
deskAdjust();
}
- */
function deskAdjust() {
- var x = (Q('DeskParent').clientHeight - Q('Desk').clientHeight) / 2;
- if (x < 0) {
- var mh = Q('DeskParent').clientHeight, mw = 9999;
- if (desktop) { mw = (desktop.m.width / desktop.m.height) * mh; }
- QS('Desk')['max-height'] = mh + 'px';
- QS('Desk')['max-width'] = mw + 'px';
- x = 0;
+ if (fullscreen) {
+ QS('Desk')['margin-top'] = null;
+ QS('Desk')['margin-bottom'] = null;
+ QS('Desk').width = '100%';
+ QS('Desk').height = '100%';
} else {
- QS('Desk')['max-height'] = null;
- QS('Desk')['max-width'] = null;
+ var parentH = Q('DeskParent').clientHeight, parentW = Q('DeskParent').clientWidth;
+ var deskH = Q('Desk').height, deskW = Q('Desk').width;
+ var webPageFullScreen = false;
+
+ // Fixed aspect ratio
+ if ((parentH / parentW) > (deskH / deskW)) {
+ var hNew = ((deskH * parentW) / deskW) + 'px';
+ QS('Desk').height = hNew;
+ QS('Desk').width = '100%';
+ } else {
+ var wNew = ((deskW * parentH) / deskH) + 'px';
+ QS('Desk').width = wNew;
+ QS('Desk').height = '100%';
+ }
+ QS('DeskParent').overflow = 'hidden';
+
+ // Adjust top/bottom margins
+ var x = (Q('DeskParent').clientHeight - Q('Desk').clientHeight) / 2;
+ QS('Desk')['margin-top'] = x + 'px';
+ QS('Desk')['margin-bottom'] = x + 'px';
}
- QS('Desk')['margin-top'] = x + 'px';
- QS('Desk')['margin-bottom'] = x + 'px';
}
// Remote desktop special key combos for Windows
- function deskSendKeys() {
+ function deskSendKeys(key) {
if (xxdialogMode || desktop == null || desktop.State != 3) return;
- var ks = Q('deskkeys').value;
+ var ks = key ? key : Q('deskkeys').value;
if (ks == 0) { // WIN+Down arrow
if (desktop.contype == 2) {
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
@@ -3274,6 +3394,12 @@
} else {
desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.DOWN, 16], [desktop.m.KeyAction.DOWN, 121], [desktop.m.KeyAction.UP, 121], [desktop.m.KeyAction.UP, 16]]); // MeshAgent: Left-Shift Down, F10 down, F10 up, Left-Shift Up
}
+ } else if (ks == 13) { // ESC
+ if (desktop.contype == 2) {
+ desktop.m.sendkey([[27, 1], [27, 0]]); // Intel AMT: ESC press, ESC release
+ } else {
+ desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.DOWN, 27], [desktop.m.KeyAction.UP, 27]]); // MeshAgent: ESC press, ESC release
+ }
}
}
@@ -3282,20 +3408,6 @@
setDialogMode(3, "Special Keys", 3, deskSendKeys);
}
- // Send CTRL-ALT-DEL
- /*
- function sendCAD() {
- if (xxdialogMode || desktop == null || desktop.State != 3) return;
- desktop.m.sendcad();
- }
- */
-
- // Toggle soft keyboard
- function toggleSoftKeys(x) {
- QV('DeskSoftInput', x == 1);
- if (x == 1) { Q('DeskSoftInput').focus(); }
- }
-
// Show process dialogs
function toggleDeskTools() {
setSessionActivity();
@@ -3369,11 +3481,11 @@
QV('DeskScreens', displayCount > 1);
}
- function dmousedown(e) { setSessionActivity(); if ((!xxdialogMode && desktop != null)) desktop.m.mousedown(e) }
- function dmouseup(e) { setSessionActivity(); if ((!xxdialogMode && desktop != null)) desktop.m.mouseup(e) }
- function dmousemove(e) { setSessionActivity(); if ((!xxdialogMode && desktop != null)) desktop.m.mousemove(e) }
- function dmousewheel(e) { setSessionActivity(); if ((!xxdialogMode && desktop != null) && desktop.m.mousewheel) { desktop.m.mousewheel(e); haltEvent(e); return true; } return false; }
- function drotate(x) { if (!xxdialogMode && desktop != null) { desktop.m.setRotation(desktop.m.rotation + x); deskAdjust(); deskAdjust(); } }
+ function dmousedown(e) { setSessionActivity(); if ((!xxdialogMode && desktop != null)) { if (fullscreen) { e.addx = Q('p10desktop').scrollLeft; e.addy = Q('p10desktop').scrollTop; } desktop.m.mousedown(e); } }
+ function dmouseup(e) { setSessionActivity(); if ((!xxdialogMode && desktop != null)) { if (fullscreen) { e.addx = Q('p10desktop').scrollLeft; e.addy = Q('p10desktop').scrollTop; } desktop.m.mouseup(e); } }
+ function dmousemove(e) { setSessionActivity(); if ((!xxdialogMode && desktop != null)) { if (fullscreen) { e.addx = Q('p10desktop').scrollLeft; e.addy = Q('p10desktop').scrollTop; } desktop.m.mousemove(e); } }
+ function dmousewheel(e) { setSessionActivity(); if ((!xxdialogMode && desktop != null) && desktop.m.mousewheel) { if (fullscreen) { e.addx = Q('p10desktop').scrollLeft; e.addy = Q('p10desktop').scrollTop; } desktop.m.mousewheel(e); haltEvent(e); return true; } return false; }
+ function drotate(x) { if (!xxdialogMode && desktop != null) { desktop.m.setRotation(desktop.m.rotation + x); deskAdjust(); } }
function stopProcess(id, name) { setDialogMode(2, "Process Control", 3, stopProcessEx, format("Stop process #{0} \"{1}\"?", id, name), id); return false; }
function stopProcessEx(buttons, tag) { meshserver.send({ action: 'msg', type: 'pskill', nodeid: currentNode._id, value: tag }); setTimeout(refreshDeskTools, 300); }
@@ -4493,7 +4605,7 @@
function putstore(name, val) { try { if ((typeof (localStorage) === 'undefined') || (localStorage.getItem(name) == val)) return; if (val == null) { localStorage.removeItem(name); } else { localStorage.setItem(name, val); } } catch (e) { } if (name[0] != '_') { var s = {}; for (var i = 0, len = localStorage.length; i < len; ++i) { var k = localStorage.key(i); if (k[0] != '_') { s[k] = localStorage.getItem(k); } } meshserver.send({ action: 'userWebState', state: JSON.stringify(s) }); } }
function getstore(name, val) { try { if (typeof (localStorage) === 'undefined') return val; var v = localStorage.getItem(name); if ((v == null) || (v == null)) return val; return v; } catch (e) { return val; } }
- function center() { onDevicesScroll(); QS('dialog').left = ((((getDocWidth() - 300) / 2)) + 'px'); deskAdjust(); deskAdjust(); if (currentNode != null) { drawDeviceTimeline(); } }
+ function center() { onDevicesScroll(); QS('dialog').left = ((((getDocWidth() - 300) / 2)) + 'px'); deskAdjust(); if (currentNode != null) { drawDeviceTimeline(); } }
function messagebox(t, m) { QH('id_dialogMessage', m); setDialogMode(1, t, 1); }
function statusbox(t, m) { QH('id_dialogMessage', m); setDialogMode(1, t); }
function getDocWidth() { if (window.innerWidth) return window.innerWidth; if (document.documentElement && document.documentElement.clientWidth && document.documentElement.clientWidth != 0) return document.documentElement.clientWidth; return document.getElementsByTagName('body')[0].clientWidth; }
|