mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2025-12-13 09:40:30 +08:00
2395 lines
110 KiB
HTML
2395 lines
110 KiB
HTML
<!DOCTYPE html>
|
||
<!--
|
||
==============================================================================
|
||
# #
|
||
# KVMD - The main PiKVM daemon. #
|
||
# #
|
||
# Copyright (C) 2018-2024 Maxim Devaev <mdevaev@gmail.com> #
|
||
# Copyright (C) 2023-2025 SilentWind <mofeng654321@hotmail.com> #
|
||
# #
|
||
# This program is free software: you can redistribute it and/or modify #
|
||
# it under the terms of the GNU General Public License as published by #
|
||
# the Free Software Foundation, either version 3 of the License, or #
|
||
# (at your option) any later version. #
|
||
# #
|
||
# This program is distributed in the hope that it will be useful, #
|
||
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
||
# GNU General Public License for more details. #
|
||
# #
|
||
# You should have received a copy of the GNU General Public License #
|
||
# along with this program. If not, see <https://www.gnu.org/licenses/>. #
|
||
# #
|
||
==============================================================================
|
||
|
||
-->
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<title>One-KVM Session</title>
|
||
<link rel="apple-touch-icon" sizes="180x180" href="../share/apple-touch-icon.png">
|
||
<link rel="icon" type="image/png" sizes="32x32" href="../share/favicon-32x32.png">
|
||
<link rel="icon" type="image/png" sizes="16x16" href="../share/favicon-16x16.png">
|
||
<link rel="manifest" href="../share/site.webmanifest">
|
||
<link rel="mask-icon" href="../share/safari-pinned-tab.svg" color="#5bbad5">
|
||
<meta name="msapplication-TileColor" content="#2b5797">
|
||
<meta name="theme-color" content="#ffffff">
|
||
<link rel="stylesheet" href="../share/css/vars.css">
|
||
<link rel="stylesheet" href="../share/css/main.css">
|
||
<link rel="stylesheet" href="../share/css/navbar.css">
|
||
<link rel="stylesheet" href="../share/css/window.css">
|
||
<link rel="stylesheet" href="../share/css/modal.css">
|
||
<link rel="stylesheet" href="../share/css/led.css">
|
||
<link rel="stylesheet" href="../share/css/slider.css">
|
||
<link rel="stylesheet" href="../share/css/switch.css">
|
||
<link rel="stylesheet" href="../share/css/radio.css">
|
||
<link rel="stylesheet" href="../share/css/progress.css">
|
||
<link rel="stylesheet" href="../share/css/keypad.css">
|
||
<link rel="stylesheet" href="../share/css/tabs.css">
|
||
<link rel="stylesheet" href="../share/css/kvm/stream.css">
|
||
<link rel="stylesheet" href="../share/css/kvm/msd.css">
|
||
<link rel="stylesheet" href="../share/css/kvm/system.css">
|
||
<link rel="stylesheet" href="../share/css/kvm/keyboard.css">
|
||
<link rel="stylesheet" href="../share/css/kvm/about.css">
|
||
<link rel="stylesheet" href="../share/css/user.css">
|
||
<script src="../share/js/i18n/jquery-3.7.1.min.js"></script>
|
||
<script src="../share/js/i18n/jquery.i18n.min.js"></script>
|
||
<script src="../share/js/i18n/i18n.js"></script>
|
||
<script type="module">import {setRootPrefix} from "../share/js/vars.js";
|
||
setRootPrefix("../");
|
||
import {main} from "../share/js/kvm/main.js";
|
||
main();
|
||
</script>
|
||
</head>
|
||
<body class="body-no-select">
|
||
<ul id="navbar">
|
||
<li class="left"><a id="logo" href="../">← <img class="svg-gray" src="../share/svg/logo.svg" alt="&pi;-kvm"></a></li>
|
||
<div class="hidden" id="hw-health-dropdown">
|
||
<li class="left"><a class="menu-button" href="#"><img class="hidden" id="hw-health-undervoltage-led" src="../share/svg/led-undervoltage.svg"><img class="hidden" id="hw-health-overheating-led" src="../share/svg/led-overheating.svg"></a>
|
||
<div class="menu">
|
||
<div class="text">
|
||
<table>
|
||
<tr>
|
||
<td rowspan="2"><img class="sign " src="../share/svg/warning.svg"></td>
|
||
<td style="line-height:1.5"><b>Raspberry Pi's health is at risk</b></td>
|
||
</tr>
|
||
<tr>
|
||
<td><sup style="line-height:1">This is not a drill! A red icon indicates a current issue,<br>
|
||
a yellow one that was observed since the device booted up</sup></td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div class="hidden" id="hw-health-message-undervoltage">
|
||
<hr>
|
||
<div class="text">
|
||
<table>
|
||
<tr>
|
||
<td rowspan="2"><img class="sign led-gray" src="../share/svg/led-undervoltage.svg"></td>
|
||
<td style="line-height:1.5"><b>Undervoltage detected</b></td>
|
||
</tr>
|
||
<tr>
|
||
<td><sup style="line-height:1">Make sure your power supply and cabling are providing<br>
|
||
enough power to the Raspberry Pi (3A minimum)</sup></td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
<div class="hidden" id="hw-health-message-overheating">
|
||
<hr>
|
||
<div class="text">
|
||
<table>
|
||
<tr>
|
||
<td rowspan="2"><img class="sign led-gray" src="../share/svg/led-overheating.svg"></td>
|
||
<td style="line-height:1.5"><b>Overheating detected</b></td>
|
||
</tr>
|
||
<tr>
|
||
<td><sup style="line-height:1">Frequency capping due to overheating,<br>
|
||
please improve cooling of the Raspberry Pi</sup></td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</li>
|
||
</div>
|
||
<div class="hidden" id="fan-health-dropdown">
|
||
<li class="left"><a class="menu-button" href="#"><img class="hidden" id="fan-health-led" src="../share/svg/led-fan.svg"></a>
|
||
<div class="menu">
|
||
<div class="text">
|
||
<table>
|
||
<tr>
|
||
<td rowspan="2"><img class="sign " src="../share/svg/warning.svg"></td>
|
||
<td style="line-height:1.5"><b>Raspberry Pi's health is at risk</b></td>
|
||
</tr>
|
||
<tr>
|
||
<td><sup style="line-height:1">This is not a drill! A red icon indicates a current issue,<br>
|
||
a yellow one that was observed in the past</sup></td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div id="fan-health-message-fail">
|
||
<hr>
|
||
<div class="text">
|
||
<table>
|
||
<tr>
|
||
<td rowspan="2"><img class="sign led-gray" src="../share/svg/led-fan.svg"></td>
|
||
<td style="line-height:1.5"><b>Fan failed</b></td>
|
||
</tr>
|
||
<tr>
|
||
<td><sup style="line-height:1">A fan error occured, please <a href="../api/log?seek=3600&follow=1" target="_blank">check the log</a></sup></td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</li>
|
||
</div>
|
||
<li class="right" id="system-dropdown"><a class="menu-button" href="#"><img class="led-gray" id="link-led" src="../share/svg/led-link.svg"><img class="led-gray" id="stream-led" src="../share/svg/led-video.svg"><img class="led-gray" id="hid-keyboard-led" src="../share/svg/led-hid-keyboard.svg"><img class="led-gray" id="hid-mouse-led" src="../share/svg/led-hid-mouse.svg"><span i18n="system_menu">System</span></a>
|
||
<div class="menu" id="system-menu">
|
||
<table class="kv">
|
||
<tr>
|
||
<td class="value" i18n="system_runtime_settings">Runtime settings & tools</td>
|
||
<td class="feature-disabled" id="system-tool-webterm">
|
||
<button class="small" data-force-hide-menu data-show-window="webterm-window" i18n="system_terminal">• Term</button>
|
||
</td>
|
||
<td id="system-tool-about">
|
||
<button class="small" data-force-hide-menu data-show-window="about-window" i18n="system_about">• About</button>
|
||
</td>
|
||
<td id="system-tool-log">
|
||
<button class="small" id="open-log-button" data-force-hide-menu i18n="system_log">• Log</button>
|
||
</td>
|
||
<td class="feature-disabled" id="system-tool-wol">
|
||
<button class="__gpio-button-__wol__ __gpio-button small" data-force-hide-menu data-channel="__wol__" data-confirm="Are you sure to send Wake-on-LAN packet to the server?" i18n="system_wol">• WoL</button>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<hr>
|
||
<div class="hidden" id="stream-message-no-webrtc">
|
||
<div class="text">
|
||
<table>
|
||
<tr>
|
||
<td rowspan="2"><img class="sign " src="../share/svg/warning.svg"></td>
|
||
<td style="line-height:1.5"><b i18n="stream-message-no-support-webrtc">WebRTC is not supported by this browser</b></td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<hr>
|
||
</div>
|
||
<div class="hidden" id="stream-message-no-vd">
|
||
<div class="text">
|
||
<table>
|
||
<tr>
|
||
<td rowspan="2"><img class="sign " src="../share/svg/warning.svg"></td>
|
||
<td style="line-height:1.5"><b i18n="stream-message-no-support-drict-h264">Direct H.264 streaming is not supported</b></td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<hr>
|
||
</div>
|
||
<div class="hidden" id="stream-message-no-h264">
|
||
<div class="text">
|
||
<table>
|
||
<tr>
|
||
<td rowspan="2"><img class="sign " src="../share/svg/warning.svg"></td>
|
||
<td style="line-height:1.5"><b i18n="stream-message-no-h264">H.264 is not supported by this browser</b></td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<hr>
|
||
</div>
|
||
<table class="kv">
|
||
<tr class="feature-disabled" id="stream-resolution">
|
||
<td i18n="video_resolution">Resolution:</td>
|
||
<td>
|
||
<select id="stream-resolution-selector" disabled></select>
|
||
</td>
|
||
</tr>
|
||
<tr class="feature-disabled" id="stream-quality">
|
||
<td i18n="video_jpeg_quality">JPEG quality:
|
||
</td>
|
||
<td class="value-slider">
|
||
<input type="range" id="stream-quality-slider">
|
||
</td>
|
||
<td class="value-number" id="stream-quality-value"></td>
|
||
</tr>
|
||
<tr>
|
||
<td i18n="video_jpeg_fps">JPEG max fps:
|
||
</td>
|
||
<td class="value-slider">
|
||
<input type="range" id="stream-desired-fps-slider">
|
||
</td>
|
||
<td class="value-number" id="stream-desired-fps-value"></td>
|
||
</tr>
|
||
<tr class="feature-disabled" id="stream-h264-bitrate">
|
||
<td i18n="video_h264_bitrate">H.264 kbps:
|
||
</td>
|
||
<td class="value-slider">
|
||
<input type="range" id="stream-h264-bitrate-slider">
|
||
</td>
|
||
<td class="value-number" id="stream-h264-bitrate-value"></td>
|
||
</tr>
|
||
<tr class="feature-disabled" id="stream-h264-gop">
|
||
<td i18n="video_h264_gop">H.264 gop:
|
||
</td>
|
||
<td class="value-slider">
|
||
<input type="range" id="stream-h264-gop-slider">
|
||
</td>
|
||
<td class="value-number" id="stream-h264-gop-value"></td>
|
||
</tr>
|
||
<tr class="feature-disabled" id="stream-mode">
|
||
<td i18n="video_mode"><a target="_blank" href="https://docs.pikvm.org/webrtc">Video mode</a>:
|
||
</td>
|
||
<td>
|
||
<div class="radio-box">
|
||
<input type="radio" id="stream-mode-radio-janus" name="stream-mode-radio" value="janus">
|
||
<label for="stream-mode-radio-janus">WebRTC<br>H.264</label>
|
||
<input type="radio" id="stream-mode-radio-media" name="stream-mode-radio" value="media">
|
||
<label for="stream-mode-radio-media">Direct<br>H.264</label>
|
||
<input type="radio" id="stream-mode-radio-mjpeg" name="stream-mode-radio" value="mjpeg" checked>
|
||
<label for="stream-mode-radio-mjpeg">Legacy<br>MJPEG</label>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="feature-disabled" id="stream-orient">
|
||
<td i18n="video_orientation">Orientation:
|
||
</td>
|
||
<td>
|
||
<div class="radio-box">
|
||
<input type="radio" id="stream-orient-radio-0" name="stream-orient-radio" value="0" checked>
|
||
<label for="stream-orient-radio-0">Default</label>
|
||
<input type="radio" id="stream-orient-radio-90" name="stream-orient-radio" value="90">
|
||
<label for="stream-orient-radio-90">90°</label>
|
||
<input type="radio" id="stream-orient-radio-180" name="stream-orient-radio" value="180">
|
||
<label for="stream-orient-radio-180">180°</label>
|
||
<input type="radio" id="stream-orient-radio-270" name="stream-orient-radio" value="270">
|
||
<label for="stream-orient-radio-270">270°</label>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="feature-disabled" id="stream-audio">
|
||
<td i18n="audio_volume">Audio volume:
|
||
</td>
|
||
<td class="value-slider">
|
||
<input type="range" id="stream-audio-volume-slider">
|
||
</td>
|
||
<td class="value-number" id="stream-audio-volume-value"></td>
|
||
</tr>
|
||
<tr class="feature-disabled" id="stream-mic">
|
||
<td>Microphone:
|
||
</td>
|
||
<td align="right">
|
||
<div class="switch-box">
|
||
<input checked="stream-mic-switch" disabled type="checkbox" id="stream-mic-switch">
|
||
<label for="stream-mic-switch"><span class="switch-inner"></span><span class="switch"></span></label>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<hr>
|
||
<div class="buttons buttons-row">
|
||
<button class="row33" data-force-hide-menu data-show-window="stream-window" i18n="stream_show">• Show stream</button>
|
||
<button class="row33" id="stream-screenshot-button" data-force-hide-menu i18n="stream_screenshot">• Screenshot</button>
|
||
<button class="row33" id="stream-reset-button" i18n="stream_reset">Reset stream</button>
|
||
</div>
|
||
<hr>
|
||
<div class="text"><b i18n="video_record_title">Video Record<br></b><sub i18n="video_record_description">Record video using the browser API, and will be downloaded automatically</sub></div>
|
||
<div class="buttons buttons-row">
|
||
<button class="row50" id="stream-record-start-button" data-force-hide-menu i18n="video_record_start">• Start recording</button>
|
||
<button class="row50" id="stream-record-stop-button" data-force-hide-menu i18n="video_record_stop">• End recording</button>
|
||
</div>
|
||
<hr>
|
||
<table class="kv">
|
||
<tr class="feature-disabled" id="hid-outputs-keyboard">
|
||
<td i18n="hid_keyboard_mode">Keyboard mode:</td>
|
||
<td>
|
||
<div class="radio-box" id="hid-outputs-keyboard-box"></div>
|
||
</td>
|
||
</tr>
|
||
<tr class="feature-disabled" id="hid-outputs-mouse">
|
||
<td><a target="_blank" href="https://docs.pikvm.org/mouse" i18n="hid_mouse_mode">Mouse mode</a>:</td>
|
||
<td>
|
||
<div class="radio-box" id="hid-outputs-mouse-box"></div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<details>
|
||
<summary i18n="hid_settings">Keyboard & mouse (HID) settings</summary>
|
||
<div class="spoiler">
|
||
<table class="kv">
|
||
<tr>
|
||
<td i18n="hid-keyboard-swap-cc-switch">Swap Left Ctrl and Caps keys:
|
||
</td>
|
||
<td align="right">
|
||
<div class="switch-box">
|
||
<input type="checkbox" id="hid-keyboard-swap-cc-switch">
|
||
<label for="hid-keyboard-swap-cc-switch"><span class="switch-inner"></span><span class="switch"></span></label>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<hr>
|
||
<table class="kv">
|
||
<tr>
|
||
<td i18n="hid_mouse_polling">Mouse polling:
|
||
</td>
|
||
<td class="value-slider">
|
||
<input type="range" id="hid-mouse-rate-slider">
|
||
</td>
|
||
<td class="value-number" id="hid-mouse-rate-value"></td>
|
||
</tr>
|
||
<tr class="feature-disabled" id="hid-mouse-sens">
|
||
<td i18n="hid_mouse_sensitivity">Relative sensitivity:
|
||
</td>
|
||
<td class="value-slider">
|
||
<input type="range" id="hid-mouse-sens-slider">
|
||
</td>
|
||
<td class="value-number" id="hid-mouse-sens-value"></td>
|
||
</tr>
|
||
<tr class="feature-disabled" id="hid-mouse-squash">
|
||
<td i18n="hid-mouse-squash-switch">Squash relative moves:
|
||
</td>
|
||
<td align="right">
|
||
<div class="switch-box">
|
||
<input disabled type="checkbox" id="hid-mouse-squash-switch">
|
||
<label for="hid-mouse-squash-switch"><span class="switch-inner"></span><span class="switch"></span></label>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td i18n="hid_mouse_reverse_scroll">Reverse scrolling:</td>
|
||
<td>
|
||
<table>
|
||
<tr>
|
||
<td i18n="hid-mouse-reverse-scrolling-switch">Y:
|
||
</td>
|
||
<td align="right">
|
||
<div class="switch-box">
|
||
<input type="checkbox" id="hid-mouse-reverse-scrolling-switch">
|
||
<label for="hid-mouse-reverse-scrolling-switch"><span class="switch-inner"></span><span class="switch"></span></label>
|
||
</div>
|
||
</td>
|
||
<td> </td>
|
||
<td i18n="hid-mouse-reverse-panning-switch">X:
|
||
</td>
|
||
<td align="right">
|
||
<div class="switch-box">
|
||
<input type="checkbox" id="hid-mouse-reverse-panning-switch">
|
||
<label for="hid-mouse-reverse-panning-switch"><span class="switch-inner"></span><span class="switch"></span></label>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td i18n="hid-mouse-cumulative-scrolling-switch">Cumulative scrolling:
|
||
</td>
|
||
<td align="right">
|
||
<div class="switch-box">
|
||
<input type="checkbox" id="hid-mouse-cumulative-scrolling-switch">
|
||
<label for="hid-mouse-cumulative-scrolling-switch"><span class="switch-inner"></span><span class="switch"></span></label>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td i18n="hid_mouse_scroll_rate">Scroll rate:
|
||
</td>
|
||
<td class="value-slider">
|
||
<input type="range" id="hid-mouse-scroll-slider">
|
||
</td>
|
||
<td class="value-number" id="hid-mouse-scroll-value"></td>
|
||
</tr>
|
||
<tr>
|
||
<td i18n="hid-mouse-dot-switch">Show the blue dot:
|
||
</td>
|
||
<td align="right">
|
||
<div class="switch-box">
|
||
<input checked type="checkbox" id="hid-mouse-dot-switch">
|
||
<label for="hid-mouse-dot-switch"><span class="switch-inner"></span><span class="switch"></span></label>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
</details>
|
||
<details>
|
||
<summary i18n="web_ui_settings">Web UI settings</summary>
|
||
<div class="spoiler">
|
||
<table class="kv">
|
||
<tr>
|
||
<td i18n="page-close-ask-switch">Ask page close confirmation:
|
||
</td>
|
||
<td align="right">
|
||
<div class="switch-box">
|
||
<input checked type="checkbox" id="page-close-ask-switch">
|
||
<label for="page-close-ask-switch"><span class="switch-inner"></span><span class="switch"></span></label>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td i18n="page-full-tab-stream-switch">Expand for the entire tab by default:
|
||
</td>
|
||
<td align="right">
|
||
<div class="switch-box">
|
||
<input type="checkbox" id="page-full-tab-stream-switch">
|
||
<label for="page-full-tab-stream-switch"><span class="switch-inner"></span><span class="switch"></span></label>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td i18n="stream-suspend-switch">Suspend stream when tab is not active:
|
||
</td>
|
||
<td align="right">
|
||
<div class="switch-box">
|
||
<input type="checkbox" id="stream-suspend-switch">
|
||
<label for="stream-suspend-switch"><span class="switch-inner"></span><span class="switch"></span></label>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
</details>
|
||
<table class="kv">
|
||
<tr>
|
||
<td i18n="hid-keyboard-bad-link-switch">Bad link mode (release keys immediately):
|
||
</td>
|
||
<td align="right">
|
||
<div class="switch-box">
|
||
<input type="checkbox" id="hid-keyboard-bad-link-switch">
|
||
<label for="hid-keyboard-bad-link-switch"><span class="switch-inner"></span><span class="switch"></span></label>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="feature-disabled" id="hid-connect">
|
||
<td i18n="hid-connect-switch">Connect HID to Server:
|
||
</td>
|
||
<td align="right">
|
||
<div class="switch-box">
|
||
<input checked type="checkbox" id="hid-connect-switch">
|
||
<label for="hid-connect-switch"><span class="switch-inner"></span><span class="switch"></span></label>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="feature-disabled" id="hid-jiggler">
|
||
<td i18n="hid-jiggler-switch"><a target="_blank" href="https://docs.pikvm.org/mouse_jiggler">Mouse jiggler</a>:
|
||
</td>
|
||
<td align="right">
|
||
<div class="switch-box">
|
||
<input disabled type="checkbox" id="hid-jiggler-switch">
|
||
<label for="hid-jiggler-switch"><span class="switch-inner"></span><span class="switch"></span></label>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td i18n="hid-mute-switch">Mute all input HID events:
|
||
</td>
|
||
<td align="right">
|
||
<div class="switch-box">
|
||
<input type="checkbox" id="hid-mute-switch">
|
||
<label for="hid-mute-switch"><span class="switch-inner"></span><span class="switch"></span></label>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="feature-disabled" id="v3-usb-breaker">
|
||
<td i18n="usb_breaker_confirm"><span i18n="usb_connect_main">Connect main USB to Server:</span>
|
||
</td>
|
||
<td align="right">
|
||
<div class="switch-box">
|
||
<input class="__gpio-switch-__v3_usb_breaker__ gpio-switch" disabled type="checkbox" id="__gpio-switch-__v3_usb_breaker__" data-channel="__v3_usb_breaker__" data-confirm-off="Turning off this switch will disconnect the main USB from the server. Are you sure you want to continue?">
|
||
<label for="__gpio-switch-__v3_usb_breaker__"><span class="switch-inner"></span><span class="switch"></span></label>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="feature-disabled" id="v4-locator">
|
||
<td i18n="locator_led_enable"><span i18n="locator_led_enable">Enable locator LED:</span>
|
||
</td>
|
||
<td align="right">
|
||
<div class="switch-box">
|
||
<input class="__gpio-switch-__v4_locator__ gpio-switch" disabled type="checkbox" id="__gpio-switch-__v4_locator__" data-channel="__v4_locator__" data-confirm-off="">
|
||
<label for="__gpio-switch-__v4_locator__"><span class="switch-inner"></span><span class="switch"></span></label>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<hr>
|
||
<div class="buttons buttons-row">
|
||
<button class="row50" data-force-hide-menu data-show-window="keyboard-window" i18n="hid_show_keyboard">• Show keyboard</button>
|
||
<button class="row50" id="hid-reset-button" disabled i18n="hid_reset">Reset HID</button>
|
||
</div>
|
||
</div>
|
||
</li>
|
||
<li class="right feature-disabled" id="atx-dropdown"><a class="menu-button" href="#"><img class="led-gray" id="atx-power-led" src="../share/svg/led-atx-power.svg"><img class="led-gray" id="atx-hdd-led" src="../share/svg/led-atx-hdd.svg"><span>ATX</span></a>
|
||
<div class="menu">
|
||
<div class="text"><b>Control the server's power<br></b><sub>Use the short click for ACPI shutdown</sub></div>
|
||
<hr>
|
||
<table class="kv">
|
||
<tr>
|
||
<td>Ask click confirmation:
|
||
</td>
|
||
<td align="right">
|
||
<div class="switch-box">
|
||
<input checked type="checkbox" id="atx-ask-switch">
|
||
<label for="atx-ask-switch"><span class="switch-inner"></span><span class="switch"></span></label>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<hr>
|
||
<div class="buttons">
|
||
<button id="atx-power-button" disabled data-force-hide-menu>• Click Power <sup><i>short</i></sup></button>
|
||
<button id="atx-power-button-long" disabled data-force-hide-menu>• Click Power <sup><i>long</i></sup></button>
|
||
<hr>
|
||
<button id="atx-reset-button" disabled data-force-hide-menu>• Click Reset</button>
|
||
</div>
|
||
</div>
|
||
</li>
|
||
<li class="right feature-disabled" id="msd-dropdown"><a class="menu-button" href="#"><img class="led-gray" id="msd-led" src="../share/svg/led-msd.svg"><span i18n="drive_menu">Drive</span></a>
|
||
<div class="menu" id="msd-menu">
|
||
<div class="text"><b i18n="drive_title">Mass Storage Drive: </b><span id="msd-status"></span><br></div>
|
||
<hr>
|
||
<div class="hidden" id="msd-message-offline">
|
||
<div class="text">
|
||
<table>
|
||
<tr>
|
||
<td rowspan="2"><img class="sign msd-message-offline" src="../share/svg/warning.svg"></td>
|
||
<td style="line-height:1.5"><b>Mass Storage Drive is offline</b></td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<hr>
|
||
</div>
|
||
<div class="hidden" id="msd-message-image-broken">
|
||
<div class="text">
|
||
<table>
|
||
<tr>
|
||
<td rowspan="2"><img class="sign msd-message-image-broken" src="../share/svg/warning.svg"></td>
|
||
<td style="line-height:1.5"><b>Current image is broken!</b></td>
|
||
</tr>
|
||
<tr>
|
||
<td><sup style="line-height:1">Perhaps uploading was interrupted<br></sup></td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<hr>
|
||
</div>
|
||
<div class="hidden" id="msd-message-too-big-for-dvd">
|
||
<div class="text">
|
||
<table>
|
||
<tr>
|
||
<td rowspan="2"><img class="sign msd-message-too-big-for-dvd" src="../share/svg/warning.svg"></td>
|
||
<td style="line-height:1.5"><b>Current image is too big for DVD!</b></td>
|
||
</tr>
|
||
<tr>
|
||
<td><sup style="line-height:1">The maximum is 31.6GiB. Please switch to the Flash mode.</sup></td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<hr>
|
||
</div>
|
||
<div class="hidden" id="msd-message-out-of-storage">
|
||
<div class="text">
|
||
<table>
|
||
<tr>
|
||
<td rowspan="2"><img class="sign msd-message-out-of-storage" src="../share/svg/warning.svg"></td>
|
||
<td style="line-height:1.5"><b>Current image is out of storage</b></td>
|
||
</tr>
|
||
<tr>
|
||
<td><sup style="line-height:1">This image was connected manually using <b>kvmd-otgmsd</b></sup></td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<hr>
|
||
</div>
|
||
<div class="hidden" id="msd-message-rw-enabled">
|
||
<div class="text">
|
||
<table>
|
||
<tr>
|
||
<td rowspan="2"><img class="sign msd-message-rw-enabled" src="../share/svg/warning.svg"></td>
|
||
<td style="line-height:1.5"><b>Read-write mode is enabled</b></td>
|
||
</tr>
|
||
<tr>
|
||
<td><sup style="line-height:1">Do not turn off PiKVM while this is active to prevent<br>
|
||
filesystem corruption. Use read-only mode where possible,<br>
|
||
as writing to SD card often can reduce its lifespan.</sup></td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<hr>
|
||
</div>
|
||
<div class="hidden" id="msd-message-downloads">
|
||
<div class="text">
|
||
<table>
|
||
<tr>
|
||
<td rowspan="2"><img class="sign msd-message-downloads" src="../share/svg/info.svg"></td>
|
||
<td style="line-height:1.5"><b>The image is being downloaded from One-KVM</b></td>
|
||
</tr>
|
||
<tr>
|
||
<td><sup style="line-height:1">Please wait</sup></td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<hr>
|
||
</div>
|
||
<table class="kv">
|
||
<tr>
|
||
<td i18n="drive_image">Image:</td>
|
||
<td width="100%">
|
||
<select id="msd-image-selector" disabled></select>
|
||
</td>
|
||
<td>
|
||
<button id="msd-download-button" disabled title="Download image"><b> ⇩ </b></button>
|
||
</td>
|
||
<td>
|
||
<button id="msd-remove-button" disabled title="Remove image"><b> × </b></button>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<table class="kv">
|
||
<tr>
|
||
<td>Drive <a target="_blank" href="https://docs.pikvm.org/msd">mode</a>:
|
||
</td>
|
||
<td>
|
||
<div class="radio-box">
|
||
<input type="radio" id="msd-mode-radio-1" name="msd-mode-radio" value="1" checked>
|
||
<label for="msd-mode-radio-1">CD/DVD</label>
|
||
<input type="radio" id="msd-mode-radio-0" name="msd-mode-radio" value="0">
|
||
<label for="msd-mode-radio-0">Flash</label>
|
||
</div>
|
||
</td>
|
||
<td> </td>
|
||
<td i18n="msd-rw-switch">Writable:
|
||
</td>
|
||
<td align="right">
|
||
<div class="switch-box">
|
||
<input disabled type="checkbox" id="msd-rw-switch">
|
||
<label for="msd-rw-switch"><span class="switch-inner"></span><span class="switch"></span></label>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td i18n="drive_file_display">Files:</td>
|
||
<td>
|
||
<div class="radio-box">
|
||
<input id="msd-mode-radio-image" checked type="radio" name="file-mode-radio" value="1">
|
||
<label for="msd-mode-radio-image" i18n="drive_image_files">ImageFiles</label>
|
||
<input id="msd-mode-radio-file" type="radio" name="file-mode-radio" value="0">
|
||
<label for="msd-mode-radio-file" i18n="drive_normal_files">NormalFiles</label>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<hr>
|
||
<div id="msd-storages"></div>
|
||
<hr>
|
||
<div class="buttons buttons-row">
|
||
<button class="row50" id="msd-select-new-button" disabled i18n="drive_select_upload">Select image to upload</button>
|
||
<button class="row25" id="msd-upload-new-button" disabled i18n="drive_upload">Upload</button>
|
||
<button class="row25" id="msd-abort-new-button" disabled i18n="drive_abort">Abort</button>
|
||
</div>
|
||
<div class="hidden" id="msd-message-another-user-uploads">
|
||
<div class="text">
|
||
<table>
|
||
<tr>
|
||
<td rowspan="2"><img class="sign msd-message-another-user-uploads" src="../share/svg/info.svg"></td>
|
||
<td style="line-height:1.5"><b>Another user uploads an image</b></td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<hr>
|
||
</div>
|
||
<div class="hidden" id="msd-new-sub">
|
||
<table class="kv">
|
||
<tr>
|
||
<td i18n="drive_local_file">Specify a local file:</td>
|
||
<td>
|
||
<input id="msd-new-file" type="file">
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td i18n="drive_paste_url"><b>Or</b> paste a URL:</td>
|
||
<td>
|
||
<input id="msd-new-url" type="text" style="width: 100%">
|
||
</td>
|
||
</tr>
|
||
<tr class="hidden" id="msd-new-part">
|
||
<td i18n="drive_upload_partition">Upload partition:</td>
|
||
<td width="100%">
|
||
<select id="msd-new-part-selector"></select>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div class="hidden" id="msd-uploading-sub">
|
||
<table class="kv">
|
||
<tr>
|
||
<td i18n="drive_new_image">New image:</td>
|
||
<td class="value" id="msd-uploading-name"></td>
|
||
</tr>
|
||
<tr>
|
||
<td i18n="drive_upload_size">Upload size:</td>
|
||
<td class="value" id="msd-uploading-size"></td>
|
||
</tr>
|
||
</table>
|
||
<div class="text">
|
||
<div class="progress" id="msd-uploading-progress"><span class="progress-value" id="msd-uploading-progress-value"></span></div>
|
||
</div>
|
||
<hr>
|
||
</div>
|
||
<div class="hidden" id="msd-new-tips">
|
||
<table class="kv">
|
||
<tr>
|
||
<td class="value" i18n="drive_note">Note:</td>
|
||
<td i18n="drive_note_browser">• Don't close the browser page until the upload is complete.</td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td i18n="drive_note_stream">• To speed up the upload, close the stream window.</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<hr>
|
||
<div class="buttons buttons-row">
|
||
<button class="row50" id="msd-connect-button" disabled i18n="drive_connect">Connect drive to Server</button>
|
||
<button class="row25" id="msd-disconnect-button" disabled i18n="drive_disconnect">Disconnect</button>
|
||
<button class="row25" id="msd-reset-button" disabled i18n="drive_reset">Reset</button>
|
||
</div>
|
||
<hr>
|
||
<div class="text"><b i18n="drive_quick_transfer">Quick file transfer:</b><br><sub i18n="drive_transfer_upload_note">• Select NormalFiles tab to upload, package them and mount image</sub><br><sub i18n="drive_transfer_download_note">• Disconnect MSD, unpackage it, select tab to download</sub><br></div>
|
||
<hr>
|
||
<div class="buttons buttons-row">
|
||
<button class="row50" id="msd-file-image-update-button" i18n="drive_package_files">Package files into image</button>
|
||
<button class="row50" id="msd-file-image-unzip-button" i18n="drive_unpackage_files">Unpackage files from image</button>
|
||
</div>
|
||
<hr>
|
||
</div>
|
||
</li>
|
||
<li class="right" id="macro-dropdown"><a class="menu-button" href="#"><img class="led-gray" id="hid-recorder-led" src="../share/svg/led-gear.svg"><span i18n="macro_menu">Macro</span></a>
|
||
<div class="menu">
|
||
<div class="text"><b i18n="macro_description">Record and play HID/ATX/GPIO actions<br></b><sub i18n="macro_security_note">For security reasons, the record will not be saved on the PiKVM</sub></div>
|
||
<hr>
|
||
<div class="buttons buttons-row">
|
||
<button class="row25" id="hid-recorder-record" disabled data-force-hide-menu i18n="macro_record">• Rec</button>
|
||
<button class="row25" id="hid-recorder-stop" disabled i18n="macro_stop">Stop</button>
|
||
<button class="row25" id="hid-recorder-play" disabled i18n="macro_play">Play</button>
|
||
<button class="row25" id="hid-recorder-clear" disabled i18n="macro_clear">Clear</button>
|
||
</div>
|
||
<hr>
|
||
<table class="kv">
|
||
<tr>
|
||
<td i18n="macro_script_time">Script time:</td>
|
||
<td class="value" id="hid-recorder-time" colspan="2">00:00:00.0</td>
|
||
</tr>
|
||
<tr>
|
||
<td i18n="macro_script_events">Scripted events:</td>
|
||
<td id="hid-recorder-events-count">0</td>
|
||
<td><sup><i i18n="macro_include_delays">include delays</i></sup></td>
|
||
</tr>
|
||
</table>
|
||
<hr>
|
||
<table class="kv">
|
||
<tr>
|
||
<td>
|
||
</td>
|
||
<td align="right">
|
||
<div class="switch-box">
|
||
<input type="checkbox" id="hid-recorder-loop-switch">
|
||
<label for="hid-recorder-loop-switch"><span class="switch-inner"></span><span class="switch"></span></label>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<hr>
|
||
<input id="hid-recorder-new-script-file" type="file" style="display: none">
|
||
<div class="buttons buttons-row">
|
||
<button class="row50" id="hid-recorder-upload" disabled i18n="macro_upload_script">Upload script</button>
|
||
<button class="row50" id="hid-recorder-download" disabled i18n="macro_download_script">Download script</button>
|
||
</div>
|
||
</div>
|
||
</li>
|
||
<li class="right" id="text-dropdown"><a class="menu-button" href="#"><img class="feature-disabled" id="stream-ocr-led" src="../share/svg/led-gear.svg"><span i18n="text_menu">Text</span></a>
|
||
<div class="menu" id="text-menu" style="width: 360px">
|
||
<div class="text"><b i18n="text_paste_description">Paste text as keypress sequence<br></b><sub i18n="text_keyboard_layout_note">Please note that PiKVM cannot switch the keyboard layout</sub></div>
|
||
<hr>
|
||
<div class="text" style="margin-right: 20px">
|
||
<textarea id="hid-pak-text" data-focus placeholder="Enter your text here"></textarea>
|
||
</div>
|
||
<table class="kv">
|
||
<tr>
|
||
<td>
|
||
<button id="hid-pak-button" disabled data-force-hide-menu title="Ctrl+Enter when the text is focused" i18n="text_paste_button">• Paste</button>
|
||
</td>
|
||
<td i18n="text_using_keymap">using host keymap</td>
|
||
<td>
|
||
<select id="hid-pak-keymap-selector"></select>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<table class="kv">
|
||
<tr>
|
||
<td>Delay between keys:
|
||
</td>
|
||
<td class="value-slider">
|
||
<input type="range" id="hid-pak-delay-slider">
|
||
</td>
|
||
<td class="value-number" id="hid-pak-delay-value"></td>
|
||
</tr>
|
||
<tr>
|
||
<td i18n="hid-pak-secure-switch">Hide input text:
|
||
</td>
|
||
<td align="right">
|
||
<div class="switch-box">
|
||
<input type="checkbox" id="hid-pak-secure-switch">
|
||
<label for="hid-pak-secure-switch"><span class="switch-inner"></span><span class="switch"></span></label>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td i18n="hid-pak-ask-switch">Ask paste confirmation:
|
||
</td>
|
||
<td align="right">
|
||
<div class="switch-box">
|
||
<input checked type="checkbox" id="hid-pak-ask-switch">
|
||
<label for="hid-pak-ask-switch"><span class="switch-inner"></span><span class="switch"></span></label>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<div class="feature-disabled" id="stream-ocr">
|
||
<hr><br>
|
||
<hr>
|
||
<div class="text"><b i18n="text_ocr_title">Text recognition <sup><i>β</i></sup><br></b><sub i18n="text_ocr_local_note"><a target="_blank" href="https://docs.pikvm.org/ocr">OCR</a> works locally on PiKVM</sub></div>
|
||
<hr>
|
||
<table class="kv">
|
||
<tr>
|
||
<td>
|
||
<button id="stream-ocr-button" data-force-hide-menu i18n="text_ocr_select_area">• Select area</button>
|
||
</td>
|
||
<td i18n="text_ocr_for">for</td>
|
||
<td>
|
||
<select id="stream-ocr-lang-selector"></select>
|
||
</td>
|
||
<td i18n="text_ocr_recognition">text recognition</td>
|
||
</tr>
|
||
</table>
|
||
<table class="kv">
|
||
<tr>
|
||
<td colspan="4" i18n="text_ocr_enter_hint">• Next hit the <b>Enter</b> to recognize and copy text to clipboard...</td>
|
||
</tr>
|
||
<tr>
|
||
<td colspan="4" i18n="text_ocr_escape_hint">• Or hit the <b>Escape</b> to cancel a selection</td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</li>
|
||
<li class="right" id="shortcuts-dropdown"><a class="menu-button" href="#" i18n="shortcuts_menu">Shortcuts</a>
|
||
<div class="menu" id="shortcuts-menu">
|
||
<div class="text"><b i18n="shortcuts_description">Quick keyboard shortcuts<br></b><sub i18n="shortcuts_also_see">Also see <i>System → Show keyboard</i></sub></div>
|
||
<hr>
|
||
<div class="buttons">
|
||
<div class="buttons-row">
|
||
<button class="row50" data-force-hide-menu data-shortcut="CapsLock">• Caps Lock <img class="inline-lamp-small hid-keyboard-caps-led led-gray" src="../share/svg/led-square.svg"></button>
|
||
<button class="row50" data-force-hide-menu data-shortcut="MetaLeft">• Left Win</button>
|
||
</div>
|
||
<hr>
|
||
<div class="buttons-row">
|
||
<button class="row50" data-force-hide-menu data-shortcut="AltLeft ShiftLeft">• Alt+Shift</button>
|
||
<button class="row50" data-force-hide-menu data-shortcut="ControlLeft KeyW">• Ctrl+W</button>
|
||
</div>
|
||
<div class="buttons-row">
|
||
<button class="row50" data-force-hide-menu data-shortcut="ControlLeft ShiftLeft">• Ctrl+Shift</button>
|
||
<button class="row50" data-force-hide-menu data-shortcut="AltLeft Tab">• Alt+Tab</button>
|
||
</div>
|
||
<div class="buttons-row">
|
||
<button class="row50" data-force-hide-menu data-shortcut="ShiftLeft ShiftRight">• Shift+Shift</button>
|
||
<button class="row50" data-force-hide-menu data-shortcut="AltLeft Enter">• Alt+Enter</button>
|
||
</div>
|
||
<div class="buttons-row">
|
||
<button class="row50" data-force-hide-menu data-shortcut="MetaLeft Space">• Win+Space</button>
|
||
<button class="row50" data-force-hide-menu data-shortcut="AltLeft F4">• Alt+F4</button>
|
||
</div>
|
||
<hr>
|
||
<div class="buttons-row">
|
||
<button class="row50" data-force-hide-menu data-shortcut="ControlLeft AltLeft F1">• Ctrl+Alt+F1</button>
|
||
<button class="row50" data-force-hide-menu data-shortcut="MetaLeft KeyL">• Win+L</button>
|
||
</div>
|
||
<div class="buttons-row">
|
||
<button class="row50" data-force-hide-menu data-shortcut="ControlLeft AltLeft F2">• Ctrl+Alt+F2</button>
|
||
<button class="row50" data-force-hide-menu data-shortcut="PrintScreen">• Print Screen</button>
|
||
</div>
|
||
<hr>
|
||
<div class="buttons-row">
|
||
<button class="row50" data-force-hide-menu data-shortcut="ControlLeft AltLeft Delete">• Ctrl+Alt+Del</button>
|
||
<button class="row50" data-force-hide-menu data-shortcut="Power">• Power</button>
|
||
</div>
|
||
</div>
|
||
<hr>
|
||
<div class="text">
|
||
↓ • Alt+SysRq+... <sup><i>linux magic
|
||
<a target="_blank" href="https://www.kernel.org/doc/html/latest/admin-guide/sysrq.html" i18n="shortcuts_help">help</a></i></sup>
|
||
</div>
|
||
<hr>
|
||
<div class="buttons">
|
||
<div class="buttons-row">
|
||
<button class="row25" data-shortcut="AltLeft PrintScreen KeyF" data-shortcut-confirm="hid-sysrq-ask-switch" style="text-align: center" title="Call the OOM killer to kill a memory hog process">F</button>
|
||
<button class="row25" data-shortcut="AltLeft PrintScreen KeyM" data-shortcut-confirm="hid-sysrq-ask-switch" style="text-align: center" title="Dump current memory info to the console">M</button>
|
||
<button class="row25" data-shortcut="AltLeft PrintScreen KeyD" data-shortcut-confirm="hid-sysrq-ask-switch" style="text-align: center" title="Show all locks that are held">D</button>
|
||
<button class="row25" data-shortcut="AltLeft PrintScreen KeyT" data-shortcut-confirm="hid-sysrq-ask-switch" style="text-align: center" title="Dump a list of current tasks and their information to the console">T</button>
|
||
</div>
|
||
<hr>
|
||
<div class="buttons-row">
|
||
<button class="row16" data-shortcut="AltLeft PrintScreen KeyR" data-shortcut-confirm="hid-sysrq-ask-switch" style="text-align: center" title="Turn off keyboard raw mode, set it to XLATE">R</button>
|
||
<button class="row16" data-shortcut="AltLeft PrintScreen KeyE" data-shortcut-confirm="hid-sysrq-ask-switch" style="text-align: center" title="Send a SIGTERM to all processes, except for init">E</button>
|
||
<button class="row16" data-shortcut="AltLeft PrintScreen KeyI" data-shortcut-confirm="hid-sysrq-ask-switch" style="text-align: center" title="Send a SIGKILL to all processes, except for init">I</button>
|
||
<button class="row16" data-shortcut="AltLeft PrintScreen KeyS" data-shortcut-confirm="hid-sysrq-ask-switch" style="text-align: center" title="Attempt to sync all mounted filesystems">S</button>
|
||
<button class="row16" data-shortcut="AltLeft PrintScreen KeyU" data-shortcut-confirm="hid-sysrq-ask-switch" style="text-align: center" title="Attempt to remount all mounted filesystems read-only">U</button>
|
||
<button class="row16" data-shortcut="AltLeft PrintScreen KeyB" data-shortcut-confirm="hid-sysrq-ask-switch" style="text-align: center" title="Immediately reboot the system without syncing or unmounting disks">B</button>
|
||
</div>
|
||
</div>
|
||
<hr>
|
||
<table class="kv">
|
||
<tr>
|
||
<td i18n>
|
||
</td>
|
||
<td align="right">
|
||
<div class="switch-box">
|
||
<input checked type="checkbox" id="hid-sysrq-ask-switch">
|
||
<label for="hid-sysrq-ask-switch"><span class="switch-inner"></span><span class="switch"></span></label>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
</li>
|
||
<li class="right feature-disabled" id="gpio-dropdown"><a class="menu-button" id="gpio-menu-button" href="#"><span>GPIO</span></a>
|
||
<div class="menu" id="gpio-menu"></div>
|
||
</li>
|
||
<li class="right feature-disabled" id="switch-dropdown"><a class="menu-button" id="switch-menu-button" href="#"><img class="led-gray" id="switch-atx-power-led" src="../share/svg/led-atx-power.svg"><img class="led-gray" id="switch-atx-hdd-led" src="../share/svg/led-atx-hdd.svg"><span>Switch <i><sub id="switch-active-port"></sub></i></span></a>
|
||
<div class="menu" id="switch-menu">
|
||
<table style="border-spacing: 0px">
|
||
<tr>
|
||
<td>
|
||
<div class="text"><b><a target="_blank" href="https://docs.pikvm.org/switch">PiKVM Switch</a> is attached<br></b><sub>Select a port or perform any available action like ATX click</sub></div>
|
||
</td>
|
||
<td>
|
||
<div class="text">
|
||
<button class="small" data-force-hide-menu data-show-window="switch-window">• Settings</button>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<hr>
|
||
<div class="hidden" id="switch-message-update">
|
||
<div class="text">
|
||
<table>
|
||
<tr>
|
||
<td rowspan="2"><img class="sign " src="../share/svg/info.svg"></td>
|
||
<td style="line-height:1.5"><b>Good news! Your switch is ready to get the firmware update</b></td>
|
||
</tr>
|
||
<tr>
|
||
<td><sup style="line-height:1">Please <a target="_blank" href="https://docs.pikvm.org/switch/#firmware-updating">follow the instructions</a>
|
||
when you decide to install it.</sup></td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<hr>
|
||
</div>
|
||
<table class="kv">
|
||
<tr>
|
||
<td>Ask ATX click confirmation:
|
||
</td>
|
||
<td align="right">
|
||
<div class="switch-box">
|
||
<input checked type="checkbox" id="switch-atx-ask-switch">
|
||
<label for="switch-atx-ask-switch"><span class="switch-inner"></span><span class="switch"></span></label>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Confirm switching when the Drive is connected:
|
||
</td>
|
||
<td align="right">
|
||
<div class="switch-box">
|
||
<input checked type="checkbox" id="switch-msd-ask-switch">
|
||
<label for="switch-msd-ask-switch"><span class="switch-inner"></span><span class="switch"></span></label>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<hr>
|
||
<table class="kv" id="switch-chain"></table>
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
<div class="window" id="stream-ocr-window">
|
||
<div class="hidden" id="stream-ocr-selection"></div>
|
||
</div>
|
||
<div class="window window-resizable" id="stream-window" data-show-maximized data-organize-hook>
|
||
<div class="window-header" id="stream-window-header">
|
||
<div class="window-grab">MJPEG</div>
|
||
<div class="window-buttons">
|
||
<button class="window-button-full-screen">⤢</button>
|
||
<button class="window-button-enter-full-tab">▲</button>
|
||
<button class="window-button-original">•</button>
|
||
<button class="window-button-maximize">☐</button>
|
||
<button class="window-button-close"><b>×</b></button>
|
||
</div>
|
||
</div>
|
||
<div id="stream-info"></div>
|
||
<button class="window-button-exit-full-tab">▼</button>
|
||
<div class="stream-box-offline" id="stream-box"><img id="stream-image" src="../share/png/blank-stream.png">
|
||
<video class="hidden" id="stream-video" disablePictureInPicture="true" autoplay playsinline muted></video>
|
||
<canvas class="hidden" id="stream-canvas"></canvas>
|
||
<div id="stream-fullscreen-active"></div>
|
||
</div>
|
||
<div class="keypad" id="stream-mouse-buttons" align="center">
|
||
<div class="keypad-block">
|
||
<div class="keypad-row">
|
||
<div class="key wide-3 left rounded-left" data-code="left" data-allow-autohold>
|
||
<div class="label"><b>•</b><br>Left</div>
|
||
</div>
|
||
<div class="key wide-1 rounded-none" data-code="middle" data-allow-autohold>
|
||
<div class="label"><b>•</b><br>Mid</div>
|
||
</div>
|
||
<div class="key wide-3 right rounded-right" data-code="right" data-allow-autohold>
|
||
<div class="label"><b>•</b><br>Right</div>
|
||
</div>
|
||
<div class="empty" style="width: 30px"></div>
|
||
<div class="key small rounded-left" data-code="up" data-allow-autohold>
|
||
<div class="label"><b>•</b><br>Up</div>
|
||
</div>
|
||
<div class="key small rounded-right" data-code="down" data-allow-autohold>
|
||
<div class="label"><b>•</b><br>Down</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="window" id="keyboard-window" data-show-centered>
|
||
<div class="window-header" id="keyboard-window-header">
|
||
<div class="window-grab" i18n="virtual_keyboard_title">Virtual Keyboard</div>
|
||
<div class="window-buttons">
|
||
<button class="window-button-original">•</button>
|
||
<button class="window-button-close"><b>×</b></button>
|
||
</div>
|
||
</div>
|
||
<div class="keypad" id="keyboard-desktop" align="center">
|
||
<div class="keypad-block">
|
||
<div class="keypad-row">
|
||
<div class="key small" data-code="Escape">
|
||
<div class="label">Esc
|
||
</div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="empty " style="width:24px">
|
||
<div class="label"> </div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key small" data-code="F1">
|
||
<div class="label">F1
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key small" data-code="F2">
|
||
<div class="label">F2
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key small" data-code="F3">
|
||
<div class="label">F3
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key small" data-code="F4">
|
||
<div class="label">F4
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="empty " style="width:10px">
|
||
<div class="label"> </div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key small" data-code="F5">
|
||
<div class="label">F5
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key small" data-code="F6">
|
||
<div class="label">F6
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key small" data-code="F7">
|
||
<div class="label">F7
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key small" data-code="F8">
|
||
<div class="label">F8
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="empty " style="width:10px">
|
||
<div class="label"> </div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key small" data-code="F9">
|
||
<div class="label">F9
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key small" data-code="F10">
|
||
<div class="label">F10
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key small" data-code="F11">
|
||
<div class="label">F11
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key small" data-code="F12">
|
||
<div class="label">F12
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<hr>
|
||
<div class="keypad-row">
|
||
<div class="key " data-code="Backquote">
|
||
<div class="label">~<br>`
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="Digit1">
|
||
<div class="label">!<br>1
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="Digit2">
|
||
<div class="label">@<br>2
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="Digit3">
|
||
<div class="label">#<br>3
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="Digit4">
|
||
<div class="label">$<br>4
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="Digit5">
|
||
<div class="label">%<br>5
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="Digit6">
|
||
<div class="label">^<br>6
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="Digit7">
|
||
<div class="label">&<br>7
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="Digit8">
|
||
<div class="label">*<br>8
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="Digit9">
|
||
<div class="label">(<br>9
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="Digit0">
|
||
<div class="label">)<br>0
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="Minus">
|
||
<div class="label">_<br>-
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="Equal">
|
||
<div class="label">+<br>=
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key wide-1 right" data-code="Backspace">
|
||
<div class="label">↤
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="keypad-row">
|
||
<div class="key wide-1 left" data-code="Tab">
|
||
<div class="label">⇤<br>⇥
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyQ">
|
||
<div class="label">Q
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyW">
|
||
<div class="label">W
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyE">
|
||
<div class="label">E
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyR">
|
||
<div class="label">R
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyT">
|
||
<div class="label">T
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyY">
|
||
<div class="label">Y
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyU">
|
||
<div class="label">U
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyI">
|
||
<div class="label">I
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyO">
|
||
<div class="label">O
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyP">
|
||
<div class="label">P
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="BracketLeft">
|
||
<div class="label">{<br>[
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="BracketRight">
|
||
<div class="label">}<br>]
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="Backslash">
|
||
<div class="label">|<br>\
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="keypad-row">
|
||
<div class="key wide-2 left small" data-code="CapsLock">
|
||
<div class="label"><img class="inline-lamp-small hid-keyboard-caps-led led-gray" src="../share/svg/led-square.svg"><br> Caps Lock
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyA">
|
||
<div class="label">A
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyS">
|
||
<div class="label">S
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyD">
|
||
<div class="label">D
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyF">
|
||
<div class="label">F
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyG">
|
||
<div class="label">G
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyH">
|
||
<div class="label">H
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyJ">
|
||
<div class="label">J
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyK">
|
||
<div class="label">K
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyL">
|
||
<div class="label">L
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="Semicolon">
|
||
<div class="label">:<br>;
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="Quote">
|
||
<div class="label">"<br>'
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key wide-2 right small" data-code="Enter">
|
||
<div class="label">Enter<br>↵
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="keypad-row">
|
||
<div class="key wide-3 left small" data-code="ShiftLeft" data-allow-autohold>
|
||
<div class="label"><b>•</b><br>Shift
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyZ">
|
||
<div class="label">Z
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyX">
|
||
<div class="label">X
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyC">
|
||
<div class="label">C
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyV">
|
||
<div class="label">V
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyB">
|
||
<div class="label">B
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyN">
|
||
<div class="label">N
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyM">
|
||
<div class="label">M
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="Comma">
|
||
<div class="label"><<br>,
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="Period">
|
||
<div class="label">><br>.
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="Slash">
|
||
<div class="label">?<br>/
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key wide-3 right small" data-code="ShiftRight" data-allow-autohold>
|
||
<div class="label"><b>•</b><br>Shift
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="keypad-row">
|
||
<div class="key wide-1 left small" data-code="ControlLeft" data-allow-autohold>
|
||
<div class="label"><b>•</b><br>Ctrl
|
||
</div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="key wide-1 left small" data-code="MetaLeft" data-allow-autohold>
|
||
<div class="label"><b>•</b><br>Win
|
||
</div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="key wide-1 left small" data-code="AltLeft" data-allow-autohold>
|
||
<div class="label"><b>•</b><br>Alt
|
||
</div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="key wide-4" data-code="Space">
|
||
<div class="label">
|
||
</div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="key wide-1 right small" data-code="AltRight" data-allow-autohold>
|
||
<div class="label"><b>•</b><br>Alt
|
||
</div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="key wide-1 right small" data-code="MetaRight" data-allow-autohold>
|
||
<div class="label"><b>•</b><br>Win
|
||
</div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="key small" data-code="ContextMenu">
|
||
<div class="label"><br>Menu
|
||
</div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="key wide-1 right small" data-code="ControlRight" data-allow-autohold>
|
||
<div class="label"><b>•</b><br>Ctrl
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="keypad-block">
|
||
<div class="keypad-row">
|
||
<div class="key small" data-code="PrintScreen" data-allow-autohold>
|
||
<div class="label"><b>•</b><br>Pt/Sq
|
||
</div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="key small" data-code="ScrollLock">
|
||
<div class="label"><img class="inline-lamp-small hid-keyboard-scroll-led led-gray" src="../share/svg/led-square.svg"><br> ScrLk
|
||
</div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="key small" data-code="Pause">
|
||
<div class="label">P/Brk
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<hr>
|
||
<div class="keypad-row">
|
||
<div class="key small" data-code="Insert">
|
||
<div class="label">Ins
|
||
</div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="key small" data-code="Home">
|
||
<div class="label">Home
|
||
</div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="key small" data-code="PageUp">
|
||
<div class="label">PgUp
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="keypad-row">
|
||
<div class="key small" data-code="Delete">
|
||
<div class="label">Del
|
||
</div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="key small" data-code="End">
|
||
<div class="label">End
|
||
</div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="key small" data-code="PageDown">
|
||
<div class="label">PgDn
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="keypad-row"></div>
|
||
<div class="keypad-row">
|
||
<div class="empty ">
|
||
<div class="label"> </div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="ArrowUp">
|
||
<div class="label">↑
|
||
</div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="empty ">
|
||
<div class="label"> </div>
|
||
</div>
|
||
</div>
|
||
<div class="keypad-row">
|
||
<div class="key " data-code="ArrowLeft">
|
||
<div class="label">←
|
||
</div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="key " data-code="ArrowDown">
|
||
<div class="label">↓
|
||
</div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="key " data-code="ArrowRight">
|
||
<div class="label">→
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="keypad-block">
|
||
<div class="keypad-row">
|
||
<div class="empty small">
|
||
<div class="label"> </div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="empty small">
|
||
<div class="label"> </div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="empty small">
|
||
<div class="label"> </div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="key small" data-code="Power">
|
||
<div class="label">PWR
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<hr>
|
||
<div class="keypad-row">
|
||
<div class="key small" data-code="NumLock">
|
||
<div class="label"><img class="inline-lamp-small hid-keyboard-num-led led-gray" src="../share/svg/led-square.svg"><br> NmLk
|
||
</div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="key " data-code="NumpadDivide">
|
||
<div class="label">/
|
||
</div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="key " data-code="NumpadMultiply">
|
||
<div class="label">*
|
||
</div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="key " data-code="NumpadSubtract">
|
||
<div class="label">-
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="keypad-row">
|
||
<div class="key small" data-code="Numpad7">
|
||
<div class="label">7<br>Home
|
||
</div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="key small" data-code="Numpad8">
|
||
<div class="label">8<br>↑
|
||
</div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="key small" data-code="Numpad9">
|
||
<div class="label">9<br>PgUp
|
||
</div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="empty ">
|
||
<div class="label"> </div>
|
||
</div>
|
||
</div>
|
||
<div class="keypad-row">
|
||
<div class="key small" data-code="Numpad4">
|
||
<div class="label">4<br>←
|
||
</div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="key small" data-code="Numpad5">
|
||
<div class="label">5<br><br>
|
||
</div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="key small" data-code="Numpad6">
|
||
<div class="label">6<br>→
|
||
</div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="key " data-code="NumpadAdd">
|
||
<div class="label">+
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="keypad-row">
|
||
<div class="key small" data-code="Numpad1">
|
||
<div class="label">1<br>End
|
||
</div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="key small" data-code="Numpad2">
|
||
<div class="label">2<br>↓
|
||
</div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="key small" data-code="Numpad3">
|
||
<div class="label">3<br>PgDn
|
||
</div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="empty ">
|
||
<div class="label"> </div>
|
||
</div>
|
||
</div>
|
||
<div class="keypad-row">
|
||
<div class="key small" data-code="Numpad0">
|
||
<div class="label">0<br>Ins
|
||
</div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="empty ">
|
||
<div class="label"> </div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="key small" data-code="NumpadDecimal">
|
||
<div class="label">.<br>Del
|
||
</div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="key small" data-code="NumpadEnter">
|
||
<div class="label">Ent
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="keypad-block">
|
||
<div class="keypad-row">
|
||
<div class="key small" data-code="IntlBackslash">
|
||
<div class="label">\<br>|
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<hr>
|
||
<div class="keypad-row">
|
||
<div class="key small" data-code="IntlYen">
|
||
<div class="label">¥<br>_
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="keypad-row">
|
||
<div class="key small" data-code="IntlRo">
|
||
<div class="label">\<br>ろ
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="keypad-row">
|
||
<div class="key small" data-code="KanaMode" data-allow-autohold>
|
||
<div class="label"><b>•</b><br>Kana
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="keypad-row">
|
||
<div class="key small" data-code="NonConvert" data-allow-autohold>
|
||
<div class="label"><b>•</b><br>N/Cnv
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="keypad-row">
|
||
<div class="key small" data-code="Convert" data-allow-autohold>
|
||
<div class="label"><b>•</b><br>Cnv
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="keypad" id="keyboard-mobile" align="center">
|
||
<div class="keypad-block">
|
||
<div class="keypad-row">
|
||
<div class="key small" data-code="Escape">
|
||
<div class="label">Esc
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key wide-0 small rounded-left" data-code="F1">
|
||
<div class="label">F1
|
||
</div>
|
||
</div>
|
||
<div class="key wide-0 small rounded-none" data-code="F2">
|
||
<div class="label">F2
|
||
</div>
|
||
</div>
|
||
<div class="key wide-0 small rounded-none" data-code="F3">
|
||
<div class="label">F3
|
||
</div>
|
||
</div>
|
||
<div class="key wide-0 small rounded-right" data-code="F4">
|
||
<div class="label">F4
|
||
</div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="key wide-0 small rounded-left" data-code="F5">
|
||
<div class="label">F5
|
||
</div>
|
||
</div>
|
||
<div class="key wide-0 small rounded-none" data-code="F6">
|
||
<div class="label">F6
|
||
</div>
|
||
</div>
|
||
<div class="key wide-0 small rounded-none" data-code="F7">
|
||
<div class="label">F7
|
||
</div>
|
||
</div>
|
||
<div class="key wide-0 small rounded-right" data-code="F8">
|
||
<div class="label">F8
|
||
</div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="key wide-0 small rounded-left" data-code="F9">
|
||
<div class="label">F9
|
||
</div>
|
||
</div>
|
||
<div class="key wide-0 small rounded-none" data-code="F10">
|
||
<div class="label">F10
|
||
</div>
|
||
</div>
|
||
<div class="key wide-0 small rounded-none" data-code="F11">
|
||
<div class="label">F11
|
||
</div>
|
||
</div>
|
||
<div class="key wide-0 small rounded-right" data-code="F12">
|
||
<div class="label">F12
|
||
</div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="key small" data-code="PrintScreen" data-allow-autohold>
|
||
<div class="label"><b>•</b><br>Pt/Sq
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key small" data-code="ScrollLock">
|
||
<div class="label"><img class="inline-lamp-small hid-keyboard-scroll-led led-gray" src="../share/svg/led-square.svg"><br> ScrLk
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key small" data-code="Pause">
|
||
<div class="label">P/Brk
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key small" data-code="Insert">
|
||
<div class="label">Ins
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key small" data-code="Home">
|
||
<div class="label">Home
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key small" data-code="End">
|
||
<div class="label">End
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key small" data-code="Delete">
|
||
<div class="label">Del
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="keypad-row">
|
||
<div class="key " data-code="Backquote">
|
||
<div class="label">~<br>`
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="Digit1">
|
||
<div class="label">!<br>1
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="Digit2">
|
||
<div class="label">@<br>2
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="Digit3">
|
||
<div class="label">#<br>3
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="Digit4">
|
||
<div class="label">$<br>4
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="Digit5">
|
||
<div class="label">%<br>5
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="Digit6">
|
||
<div class="label">^<br>6
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="Digit7">
|
||
<div class="label">&<br>7
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="Digit8">
|
||
<div class="label">*<br>8
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="Digit9">
|
||
<div class="label">(<br>9
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="Digit0">
|
||
<div class="label">)<br>0
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="Minus">
|
||
<div class="label">_<br>-
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="Equal">
|
||
<div class="label">+<br>=
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key wide-2 right" data-code="Backspace" style="width: 101px">
|
||
<div class="label">↤
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="keypad-row">
|
||
<div class="key wide-1 left" data-code="Tab">
|
||
<div class="label">⇤<br>⇥
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyQ">
|
||
<div class="label">Q
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyW">
|
||
<div class="label">W
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyE">
|
||
<div class="label">E
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyR">
|
||
<div class="label">R
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyT">
|
||
<div class="label">T
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyY">
|
||
<div class="label">Y
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyU">
|
||
<div class="label">U
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyI">
|
||
<div class="label">I
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyO">
|
||
<div class="label">O
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyP">
|
||
<div class="label">P
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="BracketLeft">
|
||
<div class="label">{<br>[
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="BracketRight">
|
||
<div class="label">}<br>]
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key wide-1 left" data-code="Backslash" style="width: 78px">
|
||
<div class="label">|<br>\
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="keypad-row">
|
||
<div class="key wide-2 left small" data-code="CapsLock">
|
||
<div class="label"><img class="inline-lamp-small hid-keyboard-caps-led led-gray" src="../share/svg/led-square.svg"><br> Caps Lock
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyA">
|
||
<div class="label">A
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyS">
|
||
<div class="label">S
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyD">
|
||
<div class="label">D
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyF">
|
||
<div class="label">F
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyG">
|
||
<div class="label">G
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyH">
|
||
<div class="label">H
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyJ">
|
||
<div class="label">J
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyK">
|
||
<div class="label">K
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyL">
|
||
<div class="label">L
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="Semicolon">
|
||
<div class="label">:<br>;
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="Quote">
|
||
<div class="label">`<br>'
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key wide-3 right small" data-code="Enter" style="width: 116px">
|
||
<div class="label">Enter<br>↵
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="keypad-row">
|
||
<div class="key wide-3 left small" data-code="ShiftLeft" data-allow-autohold>
|
||
<div class="label"><b>•</b><br>Shift
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyZ">
|
||
<div class="label">Z
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyX">
|
||
<div class="label">X
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyC">
|
||
<div class="label">C
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyV">
|
||
<div class="label">V
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyB">
|
||
<div class="label">B
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyN">
|
||
<div class="label">N
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key single" data-code="KeyM">
|
||
<div class="label">M
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="Comma">
|
||
<div class="label"><<br>,
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="Period">
|
||
<div class="label">><br>.
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="Slash">
|
||
<div class="label">?<br>/
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key small" data-code="PageUp">
|
||
<div class="label">PgUp
|
||
</div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="key " data-code="ArrowUp">
|
||
<div class="label">↑
|
||
</div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="key small" data-code="PageDown">
|
||
<div class="label">PgDn
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="keypad-row">
|
||
<div class="key wide-1 left small" data-code="ControlLeft" data-allow-autohold>
|
||
<div class="label"><b>•</b><br>Ctrl
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key wide-1 left small" data-code="MetaLeft" data-allow-autohold>
|
||
<div class="label"><b>•</b><br>Win
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key wide-1 left small" data-code="AltLeft" data-allow-autohold>
|
||
<div class="label"><b>•</b><br>Alt
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="Space" style="width: 190px">
|
||
<div class="label">
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key right small" data-code="AltRight" data-allow-autohold>
|
||
<div class="label"><b>•</b><br>Alt
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key right small" data-code="MetaRight" data-allow-autohold>
|
||
<div class="label"><b>•</b><br>Win
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key small" data-code="ContextMenu">
|
||
<div class="label"><br>Menu
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key right small" data-code="ShiftRight" data-allow-autohold>
|
||
<div class="label"><b>•</b><br>Shift
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key right small" data-code="ControlRight" data-allow-autohold>
|
||
<div class="label"><b>•</b><br>Ctrl
|
||
</div>
|
||
</div>
|
||
<div class="spacer"></div>
|
||
<div class="key " data-code="ArrowLeft">
|
||
<div class="label">←
|
||
</div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="key " data-code="ArrowDown">
|
||
<div class="label">↓
|
||
</div>
|
||
</div>
|
||
<div class="spacer-fixed"></div>
|
||
<div class="key " data-code="ArrowRight">
|
||
<div class="label">→
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="window" id="switch-window" data-show-centered style="width: min-content">
|
||
<div class="window-header">
|
||
<div class="window-grab">Switch settings</div>
|
||
<div class="window-buttons">
|
||
<button class="window-button-original">•</button>
|
||
<button class="window-button-close"><b>×</b></button>
|
||
</div>
|
||
</div>
|
||
<div class="tabs-box">
|
||
<input checked type="radio" name="switch-tab-button" id="switch-tab-edid-button">
|
||
<label for="switch-tab-edid-button">EDIDs collection</label>
|
||
<div class="tab">
|
||
<table>
|
||
<tr>
|
||
<td colspan="2">
|
||
<select id="switch-edid-selector" size="8" style="width: -webkit-fill-available; width: -moz-available;"></select>
|
||
</td>
|
||
<td rowspan="2" style="vertical-align: top">
|
||
<table class="kv">
|
||
<tr>
|
||
<td>Manufacturer:</td>
|
||
<td class="value" id="switch-edid-info-mfc-id"></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Product ID:</td>
|
||
<td class="value" id="switch-edid-info-product-id"></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Serial:</td>
|
||
<td class="value" id="switch-edid-info-serial"></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Monitor name:</td>
|
||
<td class="value" id="switch-edid-info-monitor-name"></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Extra serial:</td>
|
||
<td class="value" id="switch-edid-info-monitor-serial"></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Audio enabled:</td>
|
||
<td class="value" id="switch-edid-info-audio"></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Data:</td>
|
||
<td>
|
||
<button class="small" id="switch-edid-copy-data-button" disabled>Copy</button>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<button id="switch-edid-add-button">Add new</button>
|
||
</td>
|
||
<td style="float: right">
|
||
<button id="switch-edid-remove-button" disabled>Remove</button>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<input type="radio" name="switch-tab-button" id="switch-tab-colors-button">
|
||
<label for="switch-tab-colors-button">Color scheme</label>
|
||
<div class="tab">
|
||
<table>
|
||
<tr>
|
||
<td style="white-space: nowrap">Selected port:</td>
|
||
<td>
|
||
<input type="color" id="switch-color-active-input">
|
||
</td>
|
||
<td>
|
||
<input type="range" id="switch-color-active-brightness-slider" style="min-width: 150px">
|
||
</td>
|
||
<td> </td>
|
||
<td>
|
||
<button class="small" id="switch-color-active-default-button" title="Reset default">↻</button>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td style="white-space: nowrap">Inactive port:</td>
|
||
<td>
|
||
<input type="color" id="switch-color-inactive-input">
|
||
</td>
|
||
<td>
|
||
<input type="range" id="switch-color-inactive-brightness-slider" style="min-width: 150px">
|
||
</td>
|
||
<td> </td>
|
||
<td>
|
||
<button class="small" id="switch-color-inactive-default-button" title="Reset default">↻</button>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td style="white-space: nowrap">Blinking beacon:</td>
|
||
<td>
|
||
<input type="color" id="switch-color-beacon-input">
|
||
</td>
|
||
<td>
|
||
<input type="range" id="switch-color-beacon-brightness-slider" style="min-width: 150px">
|
||
</td>
|
||
<td> </td>
|
||
<td>
|
||
<button class="small" id="switch-color-beacon-default-button" title="Reset default">↻</button>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<hr>
|
||
</td>
|
||
<td>
|
||
<hr>
|
||
</td>
|
||
<td>
|
||
<hr>
|
||
</td>
|
||
<td></td>
|
||
<td>
|
||
<hr>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td style="white-space: nowrap">Flashing downlink:</td>
|
||
<td>
|
||
<input type="color" id="switch-color-flashing-input">
|
||
</td>
|
||
<td>
|
||
<input type="range" id="switch-color-flashing-brightness-slider" style="min-width: 150px">
|
||
</td>
|
||
<td> </td>
|
||
<td>
|
||
<button class="small" id="switch-color-flashing-default-button" title="Reset default">↻</button>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td style="white-space: nowrap">Bootloader mode:</td>
|
||
<td>
|
||
<input type="color" id="switch-color-bootloader-input">
|
||
</td>
|
||
<td>
|
||
<input type="range" id="switch-color-bootloader-brightness-slider" style="min-width: 150px">
|
||
</td>
|
||
<td> </td>
|
||
<td>
|
||
<button class="small" id="switch-color-bootloader-default-button" title="Reset default">↻</button>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="window" id="about-window" data-show-centered>
|
||
<div class="window-header">
|
||
<div class="window-grab" i18n="about_title">About</div>
|
||
<div class="window-buttons">
|
||
<button class="window-button-original">•</button>
|
||
<button class="window-button-close"><b>×</b></button>
|
||
</div>
|
||
</div>
|
||
<div id="about">
|
||
<table>
|
||
<tr>
|
||
<td class="logo"><a href="https://pikvm.org" target="_blank"><img class="svg-gray" src="../share/svg/logo.svg" alt="PiKVM" height="40"></a></td>
|
||
<td>
|
||
<table>
|
||
<tr>
|
||
<td class="title" colspan="2" i18n="index_title">The Open Source KVM over IP</td>
|
||
</tr>
|
||
<tr>
|
||
<td class="copyright" colspan="2" i18n="copyright">Copyright © 2018-2024 <a target="_blank" href="mailto:mdevaev@gmail.com">Maxim Devaev</a></td>
|
||
</tr>
|
||
</table>
|
||
</td>
|
||
</tr>
|
||
</table><br>
|
||
<div class="tabs-box">
|
||
<input checked type="radio" name="about-tab-button" id="about-tab-version-button">
|
||
<label for="about-tab-version-button" i18n="version">Version</label>
|
||
<div class="tab">
|
||
<div class="code" id="about-version"><span class="code-comment">No data</span>
|
||
</div>
|
||
</div>
|
||
<input type="radio" name="about-tab-button" id="about-tab-hardware-button">
|
||
<label for="about-tab-hardware-button" i18n="hardware">Hardware</label>
|
||
<div class="tab">
|
||
<div class="code" id="about-hardware"><span class="code-comment">No data</span>
|
||
</div>
|
||
</div>
|
||
<input type="radio" name="about-tab-button" id="about-tab-meta-button">
|
||
<label for="about-tab-meta-button" i18n="meta">Meta</label>
|
||
<div class="tab">
|
||
<div class="code" id="about-meta">
|
||
<div><span class="code-comment">
|
||
// You can get this JSON using handle
|
||
<a target="_blank" href="../api/info?fields=meta">/api/info?fields=meta</a><br>
|
||
// In the standard configuration this data<br>
|
||
// is specified in the file /etc/kvmd/meta.yaml</span><br>
|
||
<pre id="kvmd-meta-json">No data</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<input type="radio" name="about-tab-button" id="about-tab-thanks-button">
|
||
<label for="about-tab-thanks-button" i18n="thanks">Thanks</label>
|
||
<div class="tab">
|
||
<div class="code" id="about-thanks"><span class="code-comment" i18n="about_sponsors">// These kind people donated money to the PiKVM project<br>
|
||
// and supported the work on it. We are very grateful<br>
|
||
// for their help, and memorializing their names<br>
|
||
// is the least we can do in gratitude.<br>
|
||
// If you also want to support this project,<br>
|
||
// you can donate on <a target="_blank" href="https://www.patreon.com/pikvm">Patreon</a>
|
||
or <a target="_blank" href="https://paypal.me/pikvm">Paypal</a>.</span>
|
||
</div>
|
||
</div>
|
||
</div><br>
|
||
<p class="text credits"><a target="_blank" href="https://github.com/mofeng-git/One-KVM" i18n="onekvm_project_link">One-KVM Project</a> | <a target="_blank" href="https://one-kvm.mofeng.run" i18n="onekvm_documentation_link">One-KVM Documentation</a> | <a target="_blank" href="https://pikvm.org" i18n="pikvm_project_link">PiKVM Project</a> | <a target="_blank" href="https://docs.pikvm.org" i18n="pikvm_documentation_link">Documentation</a></p>
|
||
</div>
|
||
</div>
|
||
<div class="window window-resizable" id="webterm-window" data-show-centered style="display: flex; min-width: 720px; min-height: 480px">
|
||
<div class="window-header">
|
||
<div class="window-grab" i18n="terminal_title">Terminal</div>
|
||
<div class="window-buttons">
|
||
<button class="window-button-original">•</button>
|
||
<button class="window-button-maximize">☐</button>
|
||
<button class="window-button-close"><b>×</b></button>
|
||
<!-- Терминал глючит из-за зажимаемой клавиши ESC для выхода-->
|
||
<!-- button(class="window-button-full-screen") ⤢-->
|
||
</div>
|
||
</div>
|
||
<iframe id="webterm-iframe" src="" style="width: 100%; flex: 1"></iframe>
|
||
</div>
|
||
<ul class="navbar-bg-tips">
|
||
<li class="left">
|
||
<pre id="kvmd-meta-tips-left"></pre>
|
||
</li>
|
||
<li class="right">
|
||
<pre id="kvmd-meta-tips-right"></pre>
|
||
</li>
|
||
</ul>
|
||
<ul class="footer">
|
||
<li class="left"><span id="kvmd-meta-server-host" title="KVM/Server name (see System/About)"></span> | <span id="kvmd-info-platform" title="PiKVM Platform"></span> | <span id="kvmd-version-kvmd" title="KVMD version"></span> | <span id="kvmd-version-streamer" title="Streamer version"></span></li>
|
||
<li class="right"><a target="_blank" href="https://github.com/mofeng-git/One-KVM" i18n="onekvm_project_link">One-KVM Project</a> | <a target="_blank" href="https://one-kvm.mofeng.run" i18n="onekvm_documentation_link">One-KVM Documentation</a></li>
|
||
</ul>
|
||
</body>
|
||
</html> |