diff options
author | Devaev Maxim <[email protected]> | 2018-07-26 13:17:29 +0300 |
---|---|---|
committer | Devaev Maxim <[email protected]> | 2018-07-26 13:41:03 +0300 |
commit | c75d5e5352790fa413e5356304efd4396059d54d (patch) | |
tree | 6b562e1b5b73ef8c1891ca57b68a20b6738f0f8d /kvmd | |
parent | d1a66cb948d1868bcbf03b2b1e5cd4a425ed0afe (diff) |
shortcuts menu
Diffstat (limited to 'kvmd')
-rw-r--r-- | kvmd/web/index.html | 21 | ||||
-rw-r--r-- | kvmd/web/js/hid.js | 17 |
2 files changed, 38 insertions, 0 deletions
diff --git a/kvmd/web/index.html b/kvmd/web/index.html index 0846673f..752ecf4f 100644 --- a/kvmd/web/index.html +++ b/kvmd/web/index.html @@ -166,6 +166,27 @@ </div> </div> </li> + + <li class="ctl-right-actions"> + <div class="ctl-dropdown"> + <a class="ctl-item" href="#"> + Shortcuts ↴ + </a> + <div class="ctl-dropdown-content" style="display:none"> + <button onclick="hid.emitShortcut('ControlLeft', 'AltLeft', 'Delete');">• Ctrl+Alt+Del</button> + <hr> + <button onclick="hid.emitShortcut('ControlLeft', 'Escape');">• Ctrl+Esc</button> + <button onclick="hid.emitShortcut('AltLeft', 'Tab');">• Alt+Tab</button> + <button onclick="hid.emitShortcut('AltLeft', 'Escape');">• Alt+Escape</button> + <button onclick="hid.emitShortcut('AltLeft', 'Space');">• Alt+Space</button> + <button onclick="hid.emitShortcut('AltLeft', 'Enter');">• Alt+Enter</button> + <button onclick="hid.emitShortcut('AltLeft', 'F4');">• Alt+F4</button> + <hr> + <button onclick="hid.emitShortcut('AltLeft', 'PrintScreen');">• Alt+PrtSc</button> + <button onclick="hid.emitShortcut('PrintScreen');">• PrtSc</button> + </div> + </div> + </li> </ul> <div class="window" style="left:50%; top:70px"> diff --git a/kvmd/web/js/hid.js b/kvmd/web/js/hid.js index 2e5538da..93a980bb 100644 --- a/kvmd/web/js/hid.js +++ b/kvmd/web/js/hid.js @@ -6,6 +6,23 @@ var hid = new function() { mouse.init(); } + this.emitShortcut = function(...codes) { + console.log(codes); + var delay = 0; + [[codes, true], [codes.slice().reverse(), false]].forEach(function(op) { + var [op_codes, state] = op; + op_codes.forEach(function(code) { + setTimeout(function() { + document.dispatchEvent(new KeyboardEvent( + (state ? "keydown" : "keyup"), + {code: code}, + )); + }, delay); + delay += 100; + }); + }); + }; + this.installCapture = function(ws) { var http = tools.makeRequest("GET", "/kvmd/hid", function() { if (http.readyState === 4) { |