All new mesh agents for all platforms..

Ylian Saint-Hilaire committed Jan 7, 2021 at 14:28 UTC c1aa77c5ddac326d6217432e3bf99489f9367e8d
31 files changed +310 -205
agents/MeshCmd-signed.exe
Binary files a/agents/MeshCmd-signed.exe and b/agents/MeshCmd-signed.exe differ
agents/MeshCmd64-signed.exe
Binary files a/agents/MeshCmd64-signed.exe and b/agents/MeshCmd64-signed.exe differ
agents/MeshService-signed.exe
Binary files a/agents/MeshService-signed.exe and b/agents/MeshService-signed.exe differ
agents/MeshService.exe
Binary files a/agents/MeshService.exe and b/agents/MeshService.exe differ
agents/MeshService64-signed.exe
Binary files a/agents/MeshService64-signed.exe and b/agents/MeshService64-signed.exe differ
agents/MeshService64.exe
Binary files a/agents/MeshService64.exe and b/agents/MeshService64.exe differ
agents/hashagents.js
+1
@@ -20,6 +20,7 @@ var agents = {
20 'meshagent_mips24kc': 28,
21 'meshagent_osx-arm-64': 29,
22 'meshagent_freebsd_x86-64': 30,
23 + 'meshagent_mipsel24kc': 40,
24 'meshagent_osx-universal-64': 10005
25 }
26
agents/hashagents.txt
+22 -20
@@ -1,41 +1,43 @@
1 3: MeshService-signed.exe
2 -C5A3A0E72CB84A63D143AB1EBD252806C744F7FEF836C046D2248DABC620C011A8A17F6C206A7D05B590C29BD6CB13FB
2 +D04F8B16986ADB1BFF47BDDD59F46340383D11CD41D6469BB00389CF13D0D83F9B4D888A3ED3786D64B6ADC02A0C0F8B
3 4: MeshService64-signed.exe
4 -B81478F62DEA3689060CC8CAB88472700D2EFFE9CE746FBA0DA4C8B0463B313C0E93E8E9915533917EA2FA975A43EF80
4 +5BB4C3A33DDA9969DCB09D49CCC03BDADADF0AE92C2C6B4CDEDC15ADDEF3E7610692AA9A9D035D5394FF366E01583143
5 5: meshagent_x86
6 -A7380290EB6FADE9959F7350B3968CC9E30E651C521FD7E0B70A57E1FE6BB62B35F56A31F2753D374D4A2F9FF0384A88
6 +2BA71A13889CB8122F692C08F7E584105AC1F06F35B76626250193A802E38758C64631D8D21E368E1DD4C7979BCD2737
7 6: meshagent_x86-64
8 -C257887C2B841C1FB11DDE43D7B1613221E5B8587AF18017B209D53179385F13E1E033E39CADF2468FAB215D9AC0BBD6
8 +C0976857CF0DD1CF3C351BBC3600B01F44C37320E55C560B80FFE4C210DAB3F3679D00B783F9D71220AE8B4EB8CC2C3D
9 9: meshagent_arm
10 -C32755B0D81ABC75E0280DFE9B8DB1BB0BB5BAA427D3B56DBAE3F1C82EDCD47F8D41D976B868B45DE44F8C17E9F3DF8E
10 +D9712B3887D0CFC42AB34AA5F20CFF6DEA365763D15AB9AB96944A4C4D79397A6739B2655FE7A43D9E682365AEA1D04C
11 7: meshagent_mips
12 -0507248CDB453A4A39118FBDBDD97DFDD0D352FEABB921B41805B7FB9625944C1D5CE8052DEB3D85D62595BF38C7285D
12 +B1BBA76A882A94DDBA7495C47E12D08084E8DF4FBDC42B845D3EDA8251619E09C2711A86938709F7632A74CEBCB2E0BD
13 13: meshagent_pogo
14 -813FA30DC7E621847E86FA0D46CE93F26C437434DDDC9D4310C3DAD753522DBA5093F9B30614C10DFC85CC0C8E47C147
14 +3446406EBC932C86FDBE1E1CE4054C69CFB0205BAA628637A6FF9EC0D7FD9F5D4E367DDC7176BD6C8BBB403C56B2F417
15 15: meshagent_poky
16 -9A00421800BA4D1BC33BCB92F75CFBB4F89ADBEB226B3511231D6A43193AF725BD9671A0B575EA31E62E80BE97C31BDF
16 +BFAB371D470FEDD71F596A70C1644F1B9C26A63C02CB7C9FEEBD6DE7BE8E4DD3626E82584DE9AE6A0C5C16B87C0F8AC2
17 16: meshagent_osx-x86-64
18 -2C38C6485EFAF676939115D95DCA6A2940869877AEE94141205AC3B0B4BB0A2824E243E36364B57FA1F382A637008C47
18 +7557D0B215D3515A42A34E785B6E2FED7B6DA080C95110D9E2C39AC5E51B3CC7ECDBDB6C35D74976F2035EBCF3C243D4
19 18: meshagent_poky64
20 -A88917ACF1D8F10C8010D4D559D05AAD80E2734028DF62519ADAC6D698CF9876979E4B8C18E90136EA702583077A84C5
20 +BDFEDE77C241042383D321019999D8BAFC2CAE9F3EC7F624FE010BC4143D22A1247011184E303AA66F3AD5E26ABCAA1A
21 19: meshagent_x86_nokvm
22 -E15237BA64E133A7FC195715B1AFC83E0E78D1989D41AF2A078A32C33F4649CD3028C98E4B96EE331C9375ECE83BB0DF
22 +325002F2672CB7E6796149519D1C57CEABF20590CC0AD1E216C68829F3A0233184E45E4E86ED6377BB1F2BB0FB3421AF
23 20: meshagent_x86-64_nokvm
24 -0636C2229A637ED1E7052C4F4D51911AA268F409C896FFF3132C7E579D80619DE2761EEA7312AA61402929201BEFD4DE
24 +0E3B0B1B4B20AF17FC2ED6F533704C870C5F5E7BFAE05AF4DBA300CBF9F314857858FC5C8CC4B5239EEF5161D0CCE370
25 24: meshagent_arm-linaro
26 -8FACABD8642C81B6384B3FBCA13229ABEF9E437C99573AB02772AD99BD7AAEDBB890FECB2701E795A80A4CDE270E11E1
26 +7DAB24A6E91C7C487917DB0AEFC64355741831F44A8BB03ADDE894AC5245AFE1CB579622D4AB91C6D54EC0F277F316B1
27 25: meshagent_armhf
28 -A6379984018A32037918FEF6E2A98EA74F19084C360AB86A75AF961F190B55145C1990D8928710A52A60C3838D44E4DE
28 +B7EF3319345E087B30A659217045AB1113700E699D2DF323B21CC2686EEA40CC026F4D5360FDAEDE83A729E24ACD0356
29 26: meshagent_arm64
30 -30DD71FCAF2AFA658D17ADCCEFDF3CC49710FA0B924F913AB3404FF52EC30C0DD0FD04EB7B44DF5F7A7B12B0E9210857
30 +4D6DC7639CC08125826CE1533C1521AE2851DDA9A86AEC5BA49A119EB83EBBE97FE84BF47339319487B8284CA94ADC6B
31 27: meshagent_armhf2
32 -705ECB4FAECE84532D7342F9967558C3D2453498253ED6D88BACCEA63840DE0561BA8EEB024D3F17CBA45B66BB6FF592
32 +C5DE4DEFE076565AEE46C3E18AE8230E99BB48B80408FC258391984F4FCFFC0B4FA4A021A1E6F257E3FFBF6A3CD5E1AA
33 28: meshagent_mips24kc
34 -E1BC0CEF35D1632E8E05DC200C1B8E6C8C8DB46528CCB7DDE90BFF13AA31FBB7082D7E9AF0E9BE133948FFE543EC319B
34 +B5F6381B6E1B27B96B6E2DD4311A1B9F72ADE517E91E8C4F90BD96AA0DAAFF683F6F0D3D7C85C064FD7537040CF7A155
35 29: meshagent_osx-arm-64
36 -FCB0289AC41FADA104A3384CF0C1F1E4ACDCD1FA2C159184E188B0C0AC08AACF60D68259B158F0B8531569B34B015421
36 +E0AD07AF070BDD0C06B8A7C0066748AF98A5FE4456166460783C66F37B30492E1FE3C9E3F8F23937C8088D17E760E4A8
37 30: meshagent_freebsd_x86-64
38 -5415F85F6CCE836FD22D3D5B5C5EC01EED4049FCA0B1594D9EFD4B3376FB8EA7AB58DF8DF38BFA1F27489772751BEF60
38 +8F101BD69F85A6F55517113B9BAC860ECF45FA002B141095023C258A677C057BB9A3E9EEF45CBAA69CCDC8F92AF41BBD
39 +40: meshagent_mipsel24kc
40 +F8E9A1FC4554A94E02B73B9E726C5467E73A41B899EDAD469606B2B0879FF4F200CDD7BAD45A4BE979EF8B8CF706843D
41 10005: meshagent_osx-universal-64
40 -E96593397A9E2ACA86C6CB71C0C352F80F8918AFB593C147F64EF4E9DDF105C9780D66459DA21D8C761C9D55B4D52D4E
42 +551B21C162F8C60575C741B45C6C068B6AD7A53299C521D1D61F7239EC2A6EAE917ED948FD5F0EBB5D19ECB40602C227
43
agents/meshagent_arm
Binary files a/agents/meshagent_arm and b/agents/meshagent_arm differ
agents/meshagent_arm-linaro
Binary files a/agents/meshagent_arm-linaro and b/agents/meshagent_arm-linaro differ
agents/meshagent_arm64
Binary files a/agents/meshagent_arm64 and b/agents/meshagent_arm64 differ
agents/meshagent_armhf
Binary files a/agents/meshagent_armhf and b/agents/meshagent_armhf differ
agents/meshagent_armhf2
Binary files a/agents/meshagent_armhf2 and b/agents/meshagent_armhf2 differ
agents/meshagent_freebsd_x86-64
Binary files a/agents/meshagent_freebsd_x86-64 and b/agents/meshagent_freebsd_x86-64 differ
agents/meshagent_mips
Binary files a/agents/meshagent_mips and b/agents/meshagent_mips differ
agents/meshagent_mips24kc
Binary files a/agents/meshagent_mips24kc and b/agents/meshagent_mips24kc differ
agents/meshagent_mipsel24kc
Binary files /dev/null and b/agents/meshagent_mipsel24kc differ
agents/meshagent_osx-arm-64
Binary files a/agents/meshagent_osx-arm-64 and b/agents/meshagent_osx-arm-64 differ
agents/meshagent_osx-universal-64
Binary files a/agents/meshagent_osx-universal-64 and b/agents/meshagent_osx-universal-64 differ
agents/meshagent_osx-x86-64
Binary files a/agents/meshagent_osx-x86-64 and b/agents/meshagent_osx-x86-64 differ
agents/meshagent_pogo
Binary files a/agents/meshagent_pogo and b/agents/meshagent_pogo differ
agents/meshagent_poky
Binary files a/agents/meshagent_poky and b/agents/meshagent_poky differ
agents/meshagent_poky64
Binary files a/agents/meshagent_poky64 and b/agents/meshagent_poky64 differ
agents/meshagent_x86
Binary files a/agents/meshagent_x86 and b/agents/meshagent_x86 differ
agents/meshagent_x86-64
Binary files a/agents/meshagent_x86-64 and b/agents/meshagent_x86-64 differ
agents/meshagent_x86-64_nokvm
Binary files a/agents/meshagent_x86-64_nokvm and b/agents/meshagent_x86-64_nokvm differ
agents/meshagent_x86_nokvm
Binary files a/agents/meshagent_x86_nokvm and b/agents/meshagent_x86_nokvm differ
meshcentral.js
+1
@@ -2339,6 +2339,7 @@ function CreateMeshCentralServer(config, args) {
2339 28: { id: 28, localname: 'meshagent_mips24kc', rname: 'meshagent', desc: 'Linux MIPS24KC (OpenWRT)', update: true, amt: false, platform: 'linux', core: 'linux-noamt', rcore: 'linux-recovery', arcore: 'linux-agentrecovery' }, // MIPS Router with OpenWRT
2340 29: { id: 29, localname: 'meshagent_osx-arm-64', rname: 'meshagent', desc: 'Apple macOS ARM-64', update: true, amt: false, platform: 'osx', core: 'linux-noamt', rcore: 'linux-recovery', arcore: 'linux-agentrecovery' }, // Apple Silicon ARM 64bit
2341 30: { id: 30, localname: 'meshagent_freebsd_x86-64', rname: 'meshagent', desc: 'FreeBSD x86-64', update: true, amt: false, platform: 'freebsd', core: 'linux-noamt', rcore: 'linux-recovery', arcore: 'linux-agentrecovery' }, // FreeBSD x64
2342 + 40: { id: 28, localname: 'meshagent_mipsel24kc', rname: 'meshagent', desc: 'Linux MIPSEL24KC (OpenWRT)', update: true, amt: false, platform: 'linux', core: 'linux-noamt', rcore: 'linux-recovery', arcore: 'linux-agentrecovery' }, // MIPS Router with OpenWRT
2343 10003: { id: 3, localname: 'MeshService.exe', rname: 'meshagent.exe', desc: 'Win x86-32 service, unsigned', update: true, amt: true, platform: 'win32', core: 'windows-amt', rcore: 'linux-recovery', arcore: 'linux-agentrecovery' }, // Unsigned version of the Windows MeshAgent x86
2344 10004: { id: 4, localname: 'MeshService64.exe', rname: 'meshagent.exe', desc: 'Win x86-64 service, unsigned', update: true, amt: true, platform: 'win32', core: 'windows-amt', rcore: 'linux-recovery', arcore: 'linux-agentrecovery' }, // Unsigned version of the Windows MeshAgent x64
2345 10005: { id: 10005, localname: 'meshagent_osx-universal-64', rname: 'meshagent', desc: 'Apple macOS Universal Binary', update: true, amt: false, platform: 'osx', core: 'linux-noamt', rcore: 'linux-recovery', arcore: 'linux-agentrecovery' } // Apple Silicon + x86 universal binary
translate/translate.json
+80 -2
@@ -856,6 +856,84 @@
856 "player.handlebars->p11->deskarea0->deskarea4->1->timespan"
857 ]
858 },
859 + {
860 + "en": "0x020009",
861 + "xloc": [
862 + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->3->deskkeys"
863 + ]
864 + },
865 + {
866 + "en": "0x020073",
867 + "xloc": [
868 + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->3->deskkeys"
869 + ]
870 + },
871 + {
872 + "en": "0x080057",
873 + "xloc": [
874 + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->3->deskkeys"
875 + ]
876 + },
877 + {
878 + "en": "0x0A0053",
879 + "xloc": [
880 + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->3->deskkeys"
881 + ]
882 + },
883 + {
884 + "en": "0x100000",
885 + "xloc": [
886 + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->3->deskkeys"
887 + ]
888 + },
889 + {
890 + "en": "0x100025",
891 + "xloc": [
892 + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->3->deskkeys"
893 + ]
894 + },
895 + {
896 + "en": "0x100026",
897 + "xloc": [
898 + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->3->deskkeys"
899 + ]
900 + },
901 + {
902 + "en": "0x100027",
903 + "xloc": [
904 + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->3->deskkeys"
905 + ]
906 + },
907 + {
908 + "en": "0x100028",
909 + "xloc": [
910 + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->3->deskkeys"
911 + ]
912 + },
913 + {
914 + "en": "0x10004C",
915 + "xloc": [
916 + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->3->deskkeys"
917 + ]
918 + },
919 + {
920 + "en": "0x10004D",
921 + "xloc": [
922 + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->3->deskkeys"
923 + ]
924 + },
925 + {
926 + "en": "0x100052",
927 + "xloc": [
928 + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->3->deskkeys"
929 + ]
930 + },
931 + {
932 + "en": "0x11004D",
933 + "xloc": [
934 + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->3->deskkeys"
935 + ]
936 + },
937 {
938 "cs": "1 aktivní relace",
939 "de": "1 aktive Sitzung",
@@ -19010,7 +19088,7 @@
19088 "zh-cht": "輸入",
19089 "xloc": [
19090 "default-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea4->1->3->11->DeskControlSpan",
19013 - "default.handlebars->container->column_l->p11->deskarea0->deskarea4->3->11->DeskControlSpan",
19091 + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->3->13->DeskControlSpan",
19092 "desktop.handlebars->p11->deskarea0->deskarea4->3->9->DeskControlSpan"
19093 ]
19094 },
@@ -38929,7 +39007,7 @@
39007 "zh-chs": "切换鼠标和键盘输入",
39008 "zh-cht": "切換鼠標和鍵盤輸入",
39009 "xloc": [
38932 - "default.handlebars->container->column_l->p11->deskarea0->deskarea4->3->11",
39010 + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->3->13",
39011 "desktop.handlebars->p11->deskarea0->deskarea4->3->9"
39012 ]
39013 },
views/default-mobile.handlebars
+94 -102
@@ -684,22 +684,21 @@
684 <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)" />
685 </div>
686 <div id="deskButtonMenu" style="display:none;position:absolute;top:10px;left:10px;right:55px;bottom:10px;z-index:1000">
687 - <div class="menuButton" onclick="deskMenuButton(5)">Win</div>
688 - <div class="menuButton" onclick="deskMenuButton(10)">Ctrl-Alt-Del</div>
689 - <div class="menuButton" onclick="deskMenuButton(13)">ESC</div>
690 - <div class="menuButton" onclick="deskMenuButton(0)">WIN + Down</div>
691 - <div class="menuButton" onclick="deskMenuButton(1)">WIN + Up</div>
692 - <div class="menuButton" onclick="deskMenuButton(2)">WIN + L</div>
693 - <div class="menuButton" onclick="deskMenuButton(3)">WIN + M</div>
694 - <div class="menuButton" onclick="deskMenuButton(4)">Shift + WIN + M</div>
695 - <div class="menuButton" onclick="deskMenuButton(6)">WIN + R</div>
696 - <div class="menuButton" onclick="deskMenuButton(7)">ALT + F4</div>
697 - <div class="menuButton" onclick="deskMenuButton(8)">CTRL + W</div>
698 - <div class="menuButton" onclick="deskMenuButton(9)">ALT + TAB</div>
699 - <div class="menuButton" onclick="deskMenuButton(11)">TAB</div>
700 - <div class="menuButton" onclick="deskMenuButton(12)">Shift + F10</div>
687 + <div class="menuButton" onclick="deskMenuButton(0x100000)">Win</div>
688 + <div class="menuButton" onclick="deskMenuButton(0x0A0053)">Ctrl-Alt-Del</div>
689 + <div class="menuButton" onclick="deskMenuButton(0x00001B)">ESC</div>
690 + <div class="menuButton" onclick="deskMenuButton(0x100028)">WIN + Down</div>
691 + <div class="menuButton" onclick="deskMenuButton(0x100026)">WIN + Up</div>
692 + <div class="menuButton" onclick="deskMenuButton(0x10004C)">WIN + L</div>
693 + <div class="menuButton" onclick="deskMenuButton(0x10004D)">WIN + M</div>
694 + <div class="menuButton" onclick="deskMenuButton(0x11004D)">Shift + WIN + M</div>
695 + <div class="menuButton" onclick="deskMenuButton(0x100052)">WIN + R</div>
696 + <div class="menuButton" onclick="deskMenuButton(0x020073)">ALT + F4</div>
697 + <div class="menuButton" onclick="deskMenuButton(0x080057)">CTRL + W</div>
698 + <div class="menuButton" onclick="deskMenuButton(0x020009)">ALT + TAB</div>
699 + <div class="menuButton" onclick="deskMenuButton(0x000009)">TAB</div>
700 + <div class="menuButton" onclick="deskMenuButton(0x010079)">Shift + F10</div>
701 </div>
702 -
702 <div id=p10desktop style="overflow:hidden;position:absolute;top:55px;bottom:0px;width:100%;display:none">
703 <div id=deskarea1 style="position:absolute;top:0px;width:100%;height:32px">
704 <div style="padding-top:2px;padding-bottom:2px;background:#C0C0C0;height:32px">
@@ -3482,94 +3481,87 @@
3481 }
3482
3483 // Remote desktop special key combos for Windows
3485 - function deskSendKeys(key) {
3484 + function deskSendKeys(xkey) {
3485 if (xxdialogMode || desktop == null || desktop.State != 3) return;
3487 - var ks = key ? key : Q('deskkeys').value;
3488 - if (ks == 0) { // WIN + Down arrow
3489 - if (desktop.contype == 2) {
3490 - 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
3491 - } else {
3492 - 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
3493 - }
3494 - } else if (ks == 1) { // WIN + Up arrow
3495 - if (desktop.contype == 2) {
3496 - 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
3497 - } else {
3498 - 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
3499 - }
3500 - } else if (ks == 2) { // WIN + L
3501 - if (desktop.contype == 2) {
3502 - desktop.m.sendkey([[0xffe7, 1], [0x6c, 1], [0x6c, 0], [0xffe7, 0]]); // Intel AMT: Meta-left down, 'l' press, 'l' release, Meta-left release
3503 - } else {
3504 - desktop.sendCtrlMsg('{"action":"lock"}');
3505 - //desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.EXDOWN,0x5B],[desktop.m.KeyAction.DOWN,76],[desktop.m.KeyAction.UP,76],[desktop.m.KeyAction.EXUP,0x5B]]); // MeshAgent: L-Winkey press, 'L' press, 'L' release, L-Winkey release
3506 - //desktop.m.SendKeyMsgKC(desktop.m.KeyAction.EXDOWN, 0x5B);
3507 - //desktop.m.SendKeyMsgKC(desktop.m.KeyAction.DOWN, 76);
3508 - //desktop.m.SendKeyMsgKC(desktop.m.KeyAction.UP, 76);
3509 - //desktop.m.SendKeyMsgKC(desktop.m.KeyAction.EXUP, 0x5B);
3510 - }
3511 - } else if (ks == 3) { // WIN + M
3512 - if (desktop.contype == 2) {
3513 - desktop.m.sendkey([[0xffe7, 1], [0x6d, 1], [0x6d, 0], [0xffe7, 0]]); // Intel AMT: Meta-left down, 'm' press, 'm' release, Meta-left release
3514 - } else {
3515 - 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
3516 - }
3517 - } else if (ks == 4) { // Shift + WIN + M
3518 - if (desktop.contype == 2) {
3519 - 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
3520 - } else {
3521 - desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.DOWN, 16], [desktop.m.KeyAction.EXDOWN, 0x5B], [desktop.m.KeyAction.DOWN, 77], [desktop.m.KeyAction.UP, 77], [desktop.m.KeyAction.EXUP, 0x5B], [desktop.m.KeyAction.UP, 16]]); // MeshAgent: L-shift press, L-Winkey press, 'M' press, 'M' release, L-Winkey release, L-shift release
3522 - }
3523 - } else if (ks == 5) { // WIN
3524 - if (desktop.contype == 2) {
3525 - desktop.m.sendkey([[0xffe7, 1], [0xffe7, 0]]); // Intel AMT: Meta-left down, Meta-left release
3526 - } else {
3527 - desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.EXDOWN, 0x5B], [desktop.m.KeyAction.EXUP, 0x5B]]); // MeshAgent: L-Winkey press, L-Winkey release
3528 - }
3529 - } else if (ks == 6) { // WIN + R
3530 - if (desktop.contype == 2) {
3531 - desktop.m.sendkey([[0xffe7, 1], [0x72, 1], [0x72, 0], [0xffe7, 0]]); // Intel AMT: Meta-left down, 'r' press, 'r' release, Meta-left release
3532 - } else {
3533 - desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.EXDOWN, 0x5B], [desktop.m.KeyAction.DOWN, 82], [desktop.m.KeyAction.UP, 82], [desktop.m.KeyAction.EXUP, 0x5B]]); // MeshAgent: L-Winkey press, 'R' press, 'R' release, L-Winkey release
3534 - }
3535 - } else if (ks == 7) { // ALT-F4
3536 - if (desktop.contype == 2) {
3537 - desktop.m.sendkey([[0xffe9, 1], [0xffc1, 1], [0xffc1, 0], [0xffe9, 0]]); // Intel AMT: Alt down, 'F4' press, 'F4' release, Alt release
3538 - } else {
3539 - desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.EXDOWN, 18], [desktop.m.KeyAction.DOWN, 115], [desktop.m.KeyAction.UP, 115], [desktop.m.KeyAction.EXUP, 18]]); // MeshAgent: Alt press, 'F4' press, 'F4' release, Alt release
3540 - }
3541 - } else if (ks == 8) { // CTRL-W
3542 - if (desktop.contype == 2) {
3543 - desktop.m.sendkey([[0xffe3, 1], [0x77, 1], [0x77, 0], [0xffe3, 0]]); // Intel AMT: Ctrl down, 'w' press, 'w' release, Ctrl release
3544 - } else {
3545 - desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.EXDOWN, 17], [desktop.m.KeyAction.DOWN, 87], [desktop.m.KeyAction.UP, 87], [desktop.m.KeyAction.EXUP, 17]]); // MeshAgent: Ctrl press, 'W' press, 'W' release, Ctrl release
3546 - }
3547 - } else if (ks == 9) { // ALT-TAB
3548 - if (desktop.contype == 2) {
3549 - desktop.m.sendkey([[0xffe9, 1], [0xff09, 1], [0xff09, 0], [0xffe9, 0]]); // Intel AMT: Alt down, 'TAB' press, 'TAB' release, Alt release
3550 - } else {
3551 - desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.EXDOWN, 18], [desktop.m.KeyAction.DOWN, 9], [desktop.m.KeyAction.UP, 9], [desktop.m.KeyAction.EXUP, 18]]); // MeshAgent: Alt press, 'TAB' press, 'TAB' release, Alt release
3552 - }
3553 - } else if (ks == 10) { // CTRL-ALT-DEL
3554 - desktop.m.sendcad();
3555 - } else if (ks == 11) { // TAB
3556 - if (desktop.contype == 2) {
3557 - desktop.m.sendkey([[0xff09, 1], [0xff09, 0]]); // Intel AMT: 'TAB' press, 'TAB' release
3558 - } else {
3559 - desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.DOWN, 9], [desktop.m.KeyAction.UP, 9]]); // MeshAgent: 'TAB' press, 'TAB' release
3560 - }
3561 - } else if (ks == 12) { // Shift-F10
3562 - if (desktop.contype == 2) {
3563 - desktop.m.sendkey([[0xffe1, 1], [0xffc7, 1], [0xffc7, 0], [0xffe1, 0]]); // Intel AMT: Left-Shift Down, F10 down, F10 up, Left-Shift Up
3564 - } else {
3565 - 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
3566 - }
3567 - } else if (ks == 13) { // ESC
3568 - if (desktop.contype == 2) {
3569 - desktop.m.sendkey([[27, 1], [27, 0]]); // Intel AMT: ESC press, ESC release
3570 - } else {
3571 - desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.DOWN, 27], [desktop.m.KeyAction.UP, 27]]); // MeshAgent: ESC press, ESC release
3572 - }
3486 +
3487 + // Construct the key command
3488 + var ks = xkey ? xkey : parseInt(Q('deskkeys').value);
3489 + if (ks == 0x0A0053) { desktop.m.sendcad(); return; } // CTRL-ALT-DEL
3490 + if ((desktop.contype == 1) && (ks == 0x100052)) { desktop.sendCtrlMsg('{"action":"lock"}'); return; } // Lock desktop
3491 +
3492 + var flags = (ks & 0xFF0000) >> 16, key = (ks & 0xFFFF), keyArray = [], keyArray2 = [];
3493 + var amtTranslate = {
3494 + 8: 0xff08, // BackSpace
3495 + 9: 0xff09, // Tab
3496 + 13: 0xff0d, // Return or Enter
3497 + 27: 0xff1b, // Escape
3498 + 45: 0xff63, // Insert
3499 + 46: 0xffff, // Delete
3500 + 36: 0xff50, // Home
3501 + 35: 0xff57, // End
3502 + 33: 0xff55, // Page Up
3503 + 34: 0xff56, // Page Down
3504 + 37: 0xff51, // Left arrow
3505 + 38: 0xff52, // Up arrow
3506 + 39: 0xff53, // Right arrow
3507 + 40: 0xff54, // Down arrow
3508 + 112: 0xffbe, // F1
3509 + 113: 0xffbf, // F2
3510 + 114: 0xffc0, // F3
3511 + 115: 0xffc1, // F4
3512 + 116: 0xffc2, // F5
3513 + 117: 0xffc3, // F6
3514 + 118: 0xffc4, // F7
3515 + 119: 0xffc5, // F8
3516 + 120: 0xffc6, // F9
3517 + 121: 0xffc7, // F10
3518 + 122: 0xffc8, // F11
3519 + 123: 0xffc9 // F12
3520 + }
3521 +
3522 + // 0x010000 = Shift
3523 + // 0x020000 = Left-Alt
3524 + // 0x080000 = Ctrl
3525 + // 0x100000 = Window
3526 +
3527 + // Examples:
3528 + // WIN+DOWN = 0x100028
3529 + // WIN+UP = 0x100026
3530 + // WIN+L = 0x10004C
3531 + // WIN+M = 0x10004D
3532 + // Shift+WIN+M = 0x11004D
3533 + // WIN = 0x100000
3534 + // WIN+R = 0x100052
3535 + // ALT+F4 = 0x020073
3536 + // CTRL+W = 0x080057
3537 + // ALT+TAB = 0x020009
3538 + // CTRL-ALT-DEL = 0x0A0053
3539 + // WIN-LEFT = 0x100025
3540 + // WIN-RIGHT = 0x100027
3541 + // SHIFT+F10 = 0x010079
3542 +
3543 + if (desktop.contype == 2) {
3544 + // Intel AMT
3545 + if (flags & 1) { keyArray.push([0xffe1, 1]); keyArray2.push([0xffe1, 0]); } // Shift
3546 + if (flags & 2) { keyArray.push([0xffe9, 1]); keyArray2.push([0xffe9, 0]); } // Left-alt
3547 + if (flags & 8) { keyArray.push([0xffe3, 1]); keyArray2.push([0xffe3, 0]); } // Ctrl
3548 + if (flags & 16) { keyArray.push([0xffe7, 1]); keyArray2.push([0xffe7, 0]); } // Windows key
3549 + if (amtTranslate[key]) { key = amtTranslate[key]; }
3550 + if ((key >= 65) && (key <= 90)) { key += 32; }
3551 + if (key != 0) { keyArray.push([key, 1]); keyArray2.push([key, 0]); }
3552 + keyArray2.reverse();
3553 + for (var i = 0; i < keyArray2.length; i++) { keyArray.push(keyArray2[i]); }
3554 + desktop.m.sendkey(keyArray);
3555 + } else {
3556 + // Agent desktop
3557 + if (flags & 1) { keyArray.push([desktop.m.KeyAction.DOWN, 16]); keyArray2.push([desktop.m.KeyAction.UP, 16]); } // Shift
3558 + if (flags & 2) { keyArray.push([desktop.m.KeyAction.EXDOWN, 18]); keyArray2.push([desktop.m.KeyAction.EXUP, 18]); } // Left-alt
3559 + if (flags & 8) { keyArray.push([desktop.m.KeyAction.EXDOWN, 17]); keyArray2.push([desktop.m.KeyAction.EXUP, 17]); } // Ctrl
3560 + if (flags & 16) { keyArray.push([desktop.m.KeyAction.EXDOWN, 0x5B]); keyArray2.push([desktop.m.KeyAction.EXUP, 0x5B]); } // Windows key
3561 + if (key != 0) { keyArray.push([desktop.m.KeyAction.DOWN, key]); keyArray2.push([desktop.m.KeyAction.UP, key]); }
3562 + keyArray2.reverse();
3563 + for (var i = 0; i < keyArray2.length; i++) { keyArray.push(keyArray2[i]); }
3564 + desktop.m.SendKeyMsgKC(keyArray);
3565 }
3566 }
3567
views/default.handlebars
+112 -81
@@ -627,6 +627,7 @@
627 <span id=DeskRefreshButton title="Refresh the desktop"><img id=DeskRefreshButtonImage src='images/icon-refresh.png' onclick=deskRefreshFunction() height=16 width=16 style=padding-top:2px /></span>
628 </div>
629 <div>
630 + <!--
631 <select id="deskkeys">
632 <option value=10>Ctrl+Alt+Del</option>
633 <option value=5>Win</option>
@@ -642,6 +643,37 @@
643 <option value=11>Win+Left</option>
644 <option value=12>Win+Right</option>
645 </select>
646 +
647 + // WIN+DOWN = 0x100028
648 + // WIN+UP = 0x100026
649 + // WIN+L = 0x10004C
650 + // WIN+M = 0x10004D
651 + // Shift+WIN+M = 0x11004D
652 + // WIN = 0x100000
653 + // WIN+R = 0x100052
654 + // ALT+F4 = 0x020073
655 + // CTRL+W = 0x080057
656 + // ALT+TAB = 0x020009
657 + // CTRL-ALT-DEL = 0x0A0053
658 + // WIN-LEFT = 0x100025
659 + // WIN-RIGHT = 0x100027
660 +
661 + -->
662 + <select id="deskkeys">
663 + <option value=0x0A0053>Ctrl+Alt+Del</option>
664 + <option value=0x100000>Win</option>
665 + <option value=0x100028>Win+Down</option>
666 + <option value=0x100026>Win+Up</option>
667 + <option value=0x10004C>Win+L</option>
668 + <option value=0x10004D>Win+M</option>
669 + <option value=0x11004D>Shift+Win+M</option>
670 + <option value=0x100052>Win+R</option>
671 + <option value=0x020073>Alt-F4</option>
672 + <option value=0x080057>Ctrl-W</option>
673 + <option value=0x020009>Alt-Tab</option>
674 + <option value=0x100025>Win+Left</option>
675 + <option value=0x100027>Win+Right</option>
676 + </select>
677 <input id="DeskWD" type=button value="Send" onkeypress="return false" onkeydown="return false" onclick="deskSendKeys()" />
678 <input id="DeskESC" style="display:none" type="button" value="ESC" onkeypress="return false" onkeydown="return false" onclick="sendDeskEsc()" />
679 <input id="DeskClip" style="" type="button" value="Clipboard" onkeypress="return false" onkeydown="return false" onclick="showDeskClip()" />
@@ -7429,86 +7461,85 @@
7461 function deskSendKeys() {
7462 Q('DeskWD').blur();
7463 if (xxdialogMode || desktop == null || desktop.State != 3) return;
7432 - var ks = Q('deskkeys').value;
7433 - if (ks == 0) { // WIN+Down arrow
7434 - if (desktop.contype == 2) {
7435 - 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
7436 - } else {
7437 - 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
7438 - }
7439 - } else if (ks == 1) { // WIN+Up arrow
7440 - if (desktop.contype == 2) {
7441 - 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
7442 - } else {
7443 - 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
7444 - }
7445 - } else if (ks == 2) { // WIN+L arrow
7446 - if (desktop.contype == 2) {
7447 - desktop.m.sendkey([[0xffe7,1],[0x6c,1],[0x6c,0],[0xffe7,0]]); // Intel AMT: Meta-left down, 'l' press, 'l' release, Meta-left release
7448 - } else {
7449 - desktop.sendCtrlMsg('{"action":"lock"}');
7450 - //desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.EXDOWN,0x5B],[desktop.m.KeyAction.DOWN,76],[desktop.m.KeyAction.UP,76],[desktop.m.KeyAction.EXUP,0x5B]]); // MeshAgent: L-Winkey press, 'L' press, 'L' release, L-Winkey release
7451 - //desktop.m.SendKeyMsgKC(desktop.m.KeyAction.EXDOWN, 0x5B);
7452 - //desktop.m.SendKeyMsgKC(desktop.m.KeyAction.DOWN, 76);
7453 - //desktop.m.SendKeyMsgKC(desktop.m.KeyAction.UP, 76);
7454 - //desktop.m.SendKeyMsgKC(desktop.m.KeyAction.EXUP, 0x5B);
7455 - }
7456 - } else if (ks == 3) { // WIN+M arrow
7457 - if (desktop.contype == 2) {
7458 - desktop.m.sendkey([[0xffe7,1],[0x6d,1],[0x6d,0],[0xffe7,0]]); // Intel AMT: Meta-left down, 'm' press, 'm' release, Meta-left release
7459 - } else {
7460 - 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
7461 - }
7462 - } else if (ks == 4) { // Shift+WIN+M arrow
7463 - if (desktop.contype == 2) {
7464 - 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
7465 - } else {
7466 - desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.DOWN,16],[desktop.m.KeyAction.EXDOWN,0x5B],[desktop.m.KeyAction.DOWN,77],[desktop.m.KeyAction.UP,77],[desktop.m.KeyAction.EXUP,0x5B],[desktop.m.KeyAction.UP, 16]]); // MeshAgent: L-shift press, L-Winkey press, 'M' press, 'M' release, L-Winkey release, L-shift release
7467 - }
7468 - } else if (ks == 5) { // WIN
7469 - if (desktop.contype == 2) {
7470 - desktop.m.sendkey([[0xffe7,1],[0xffe7,0]]); // Intel AMT: Meta-left down, Meta-left release
7471 - } else {
7472 - desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.EXDOWN,0x5B], [desktop.m.KeyAction.EXUP,0x5B]]); // MeshAgent: L-Winkey press, L-Winkey release
7473 - }
7474 - } else if (ks == 6) { // WIN+R
7475 - if (desktop.contype == 2) {
7476 - desktop.m.sendkey([[0xffe7,1],[0x72,1],[0x72,0],[0xffe7,0]]); // Intel AMT: Meta-left down, 'r' press, 'r' release, Meta-left release
7477 - } else {
7478 - desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.EXDOWN, 0x5B], [desktop.m.KeyAction.DOWN, 82], [desktop.m.KeyAction.UP, 82], [desktop.m.KeyAction.EXUP, 0x5B]]); // MeshAgent: L-Winkey press, 'R' press, 'R' release, L-Winkey release
7479 - }
7480 - } else if (ks == 7) { // ALT-F4
7481 - if (desktop.contype == 2) {
7482 - desktop.m.sendkey([[0xffe9,1],[0xffc1,1],[0xffc1,0],[0xffe9,0]]); // Intel AMT: Alt down, 'F4' press, 'F4' release, Alt release
7483 - } else {
7484 - desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.EXDOWN, 18], [desktop.m.KeyAction.DOWN, 115], [desktop.m.KeyAction.UP, 115], [desktop.m.KeyAction.EXUP, 18]]); // MeshAgent: Alt press, 'F4' press, 'F4' release, Alt release
7485 - }
7486 - } else if (ks == 8) { // CTRL-W
7487 - if (desktop.contype == 2) {
7488 - desktop.m.sendkey([[0xffe3,1],[0x77,1],[0x77,0],[0xffe3,0]]); // Intel AMT: Ctrl down, 'w' press, 'w' release, Ctrl release
7489 - } else {
7490 - desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.EXDOWN, 17], [desktop.m.KeyAction.DOWN, 87], [desktop.m.KeyAction.UP, 87], [desktop.m.KeyAction.EXUP, 17]]); // MeshAgent: Ctrl press, 'W' press, 'W' release, Ctrl release
7491 - }
7492 - } else if (ks == 9) { // ALT-TAB
7493 - if (desktop.contype == 2) {
7494 - desktop.m.sendkey([[0xffe9, 1], [0xff09, 1], [0xff09, 0], [0xffe9, 0]]); // Intel AMT: Alt down, 'TAB' press, 'TAB' release, Alt release
7495 - } else {
7496 - desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.EXDOWN, 18], [desktop.m.KeyAction.DOWN, 9], [desktop.m.KeyAction.UP, 9], [desktop.m.KeyAction.EXUP, 18]]); // MeshAgent: Alt press, 'TAB' press, 'TAB' release, Alt release
7497 - }
7498 - } else if (ks == 10) { // CTRL-ALT-DEL
7499 - desktop.m.sendcad();
7500 - } else if (ks == 11) { // WIN-LEFT
7501 - if (desktop.contype == 2) {
7502 - desktop.m.sendkey([[0xffe7, 1], [0xff51, 1], [0xff51, 0], [0xffe7, 0]]); // Intel AMT: Meta-left down, Left arrow press, Left arrow release, Meta-left release
7503 - } else {
7504 - desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.EXDOWN, 0x5B], [desktop.m.KeyAction.DOWN, 37], [desktop.m.KeyAction.UP, 37], [desktop.m.KeyAction.EXUP, 0x5B]]);
7505 - }
7506 - } else if (ks == 12) { // WIN-RIGHT
7507 - if (desktop.contype == 2) {
7508 - desktop.m.sendkey([[0xffe7, 1], [0xff53, 1], [0xff53, 0], [0xffe7, 0]]); // Intel AMT: Meta-left down, Right arrow press, Right arrow release, Meta-left release
7509 - } else {
7510 - desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.EXDOWN, 0x5B], [desktop.m.KeyAction.DOWN, 39], [desktop.m.KeyAction.UP, 39], [desktop.m.KeyAction.EXUP, 0x5B]]);
7511 - }
7464 +
7465 + // Construct the key command
7466 + var ks = parseInt(Q('deskkeys').value);
7467 + if (ks == 0x0A0053) { desktop.m.sendcad(); return; } // CTRL-ALT-DEL
7468 + if ((desktop.contype == 1) && (ks == 0x100052)) { desktop.sendCtrlMsg('{"action":"lock"}'); return; } // Lock desktop
7469 +
7470 + var flags = (ks & 0xFF0000) >> 16, key = (ks & 0xFFFF), keyArray = [], keyArray2 = [];
7471 + var amtTranslate = {
7472 + 8 : 0xff08, // BackSpace
7473 + 9 : 0xff09, // Tab
7474 + 13 : 0xff0d, // Return or Enter
7475 + 27 : 0xff1b, // Escape
7476 + 45 : 0xff63, // Insert
7477 + 46 : 0xffff, // Delete
7478 + 36 : 0xff50, // Home
7479 + 35 : 0xff57, // End
7480 + 33 : 0xff55, // Page Up
7481 + 34 : 0xff56, // Page Down
7482 + 37 : 0xff51, // Left arrow
7483 + 38 : 0xff52, // Up arrow
7484 + 39 : 0xff53, // Right arrow
7485 + 40 : 0xff54, // Down arrow
7486 + 112 : 0xffbe, // F1
7487 + 113 : 0xffbf, // F2
7488 + 114 : 0xffc0, // F3
7489 + 115 : 0xffc1, // F4
7490 + 116 : 0xffc2, // F5
7491 + 117 : 0xffc3, // F6
7492 + 118 : 0xffc4, // F7
7493 + 119 : 0xffc5, // F8
7494 + 120 : 0xffc6, // F9
7495 + 121 : 0xffc7, // F10
7496 + 122 : 0xffc8, // F11
7497 + 123 : 0xffc9 // F12
7498 + }
7499 +
7500 + // 0x010000 = Shift
7501 + // 0x020000 = Left-Alt
7502 + // 0x080000 = Ctrl
7503 + // 0x100000 = Window
7504 +
7505 + // Examples:
7506 + // WIN+DOWN = 0x100028
7507 + // WIN+UP = 0x100026
7508 + // WIN+L = 0x10004C
7509 + // WIN+M = 0x10004D
7510 + // Shift+WIN+M = 0x11004D
7511 + // WIN = 0x100000
7512 + // WIN+R = 0x100052
7513 + // ALT+F4 = 0x020073
7514 + // CTRL+W = 0x080057
7515 + // ALT+TAB = 0x020009
7516 + // CTRL-ALT-DEL = 0x0A0053
7517 + // WIN-LEFT = 0x100025
7518 + // WIN-RIGHT = 0x100027
7519 + // SHIFT+F10 = 0x010079
7520 +
7521 + if (desktop.contype == 2) {
7522 + // Intel AMT
7523 + if (flags & 1) { keyArray.push([0xffe1, 1]); keyArray2.push([0xffe1, 0]); } // Shift
7524 + if (flags & 2) { keyArray.push([0xffe9, 1]); keyArray2.push([0xffe9, 0]); } // Left-alt
7525 + if (flags & 8) { keyArray.push([0xffe3, 1]); keyArray2.push([0xffe3, 0]); } // Ctrl
7526 + if (flags & 16) { keyArray.push([0xffe7, 1]); keyArray2.push([0xffe7, 0]); } // Windows key
7527 + if (amtTranslate[key]) { key = amtTranslate[key]; }
7528 + if ((key >= 65) && (key <= 90)) { key += 32; }
7529 + if (key != 0) { keyArray.push([key, 1]); keyArray2.push([key, 0]); }
7530 + keyArray2.reverse();
7531 + for (var i = 0; i < keyArray2.length; i++) { keyArray.push(keyArray2[i]); }
7532 + desktop.m.sendkey(keyArray);
7533 + } else {
7534 + // Agent desktop
7535 + if (flags & 1) { keyArray.push([desktop.m.KeyAction.DOWN, 16]); keyArray2.push([desktop.m.KeyAction.UP, 16]); } // Shift
7536 + if (flags & 2) { keyArray.push([desktop.m.KeyAction.EXDOWN, 18]); keyArray2.push([desktop.m.KeyAction.EXUP, 18]); } // Left-alt
7537 + if (flags & 8) { keyArray.push([desktop.m.KeyAction.EXDOWN, 17]); keyArray2.push([desktop.m.KeyAction.EXUP, 17]); } // Ctrl
7538 + if (flags & 16) { keyArray.push([desktop.m.KeyAction.EXDOWN, 0x5B]); keyArray2.push([desktop.m.KeyAction.EXUP, 0x5B]); } // Windows key
7539 + if (key != 0) { keyArray.push([desktop.m.KeyAction.DOWN, key]); keyArray2.push([desktop.m.KeyAction.UP, key]); }
7540 + keyArray2.reverse();
7541 + for (var i = 0; i < keyArray2.length; i++) { keyArray.push(keyArray2[i]); }
7542 + desktop.m.SendKeyMsgKC(keyArray);
7543 }
7544 }
7545
@@ -7543,7 +7574,7 @@
7574 // New unicode typing
7575 desktop.m.SendStringUnicode(txt);
7576 } else {
7546 - // Old scan code typing. Remove this when non-Windows platforms support Unicode.
7577 + // Old scan code typing. This is for non-unicode system.
7578 for (var i in txt) {
7579 var a = txt.charCodeAt(i), b = ltxt.charCodeAt(i);
7580 if (((a >= 65) && (a <= 90)) || ((a >= 97) && (a <= 122))) {