Support switching keyboard mode by UI
This commit is contained in:
parent
25c7bbd96f
commit
1b0fb5132c
@ -300,5 +300,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Activate onetime password", "激活一次性访问功能"),
|
||||
("Set security password", "设置安全密码"),
|
||||
("Connection not allowed", "对方不允许连接"),
|
||||
("Legacy mode", "传统模式"),
|
||||
("Map mode", "1:1传输"),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -155,6 +155,96 @@ var svg_send = <svg viewBox="0 0 448 448">
|
||||
var svg_chat = <svg viewBox="0 0 511.07 511.07">
|
||||
<path d="m74.39 480.54h-36.213l25.607-25.607c13.807-13.807 22.429-31.765 24.747-51.246-36.029-23.644-62.375-54.751-76.478-90.425-14.093-35.647-15.864-74.888-5.121-113.48 12.89-46.309 43.123-88.518 85.128-118.85 45.646-32.963 102.47-50.387 164.33-50.387 77.927 0 143.61 22.389 189.95 64.745 41.744 38.159 64.734 89.63 64.734 144.93 0 26.868-5.471 53.011-16.26 77.703-11.165 25.551-27.514 48.302-48.593 67.619-46.399 42.523-112.04 65-189.83 65-28.877 0-59.01-3.855-85.913-10.929-25.465 26.123-59.972 40.929-96.086 40.929zm182-420c-124.04 0-200.15 73.973-220.56 147.28-19.284 69.28 9.143 134.74 76.043 175.12l7.475 4.511-0.23 8.727c-0.456 17.274-4.574 33.912-11.945 48.952 17.949-6.073 34.236-17.083 46.99-32.151l6.342-7.493 9.405 2.813c26.393 7.894 57.104 12.241 86.477 12.241 154.37 0 224.68-93.473 224.68-180.32 0-46.776-19.524-90.384-54.976-122.79-40.713-37.216-99.397-56.888-169.71-56.888z"/>
|
||||
</svg>;
|
||||
var svg_keyboard = <svg viewBox="0 0 511.07 511.07">
|
||||
<g>
|
||||
<g>
|
||||
<path d="M491.979,217.631H110.205c0.157-1.362,0.365-2.717,0.637-4.061c4.408-21.755,23.676-38.152,46.71-38.152h39.404h109.91
|
||||
c39.306,0,71.282-32.246,71.282-71.552c0-11.28-9.145-20.56-20.426-20.56s-20.426,9.077-20.426,20.359
|
||||
c0,3.419-0.575,6.941-1.619,10.01c-4.082,11.998-15.451,20.893-28.812,20.893h-17.777H157.553
|
||||
c-46.995,0-85.535,36.766-88.331,83.064H20.021C8.739,217.631,0,226.296,0,237.578v170.345c0,11.28,8.739,20.773,20.021,20.773
|
||||
H491.98c11.28,0,20.021-9.492,20.021-20.773V237.578C512,226.296,503.261,217.631,491.979,217.631z M471.149,387.844H40.851
|
||||
V258.482h430.298V387.844z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
<path d="M113.021,273.461H89.872c-11.28,0-20.426,9.145-20.426,20.426s9.145,20.426,20.426,20.426h23.149
|
||||
c11.28,0,20.426-9.145,20.426-20.426S124.302,273.461,113.021,273.461z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
<path d="M190.638,273.461h-23.149c-11.28,0-20.426,9.145-20.426,20.426s9.145,20.426,20.426,20.426h23.149
|
||||
c11.28,0,20.426-9.145,20.426-20.426S201.919,273.461,190.638,273.461z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
<path d="M268.255,273.461h-23.149c-11.28,0-20.426,9.145-20.426,20.426s9.145,20.426,20.426,20.426h23.149
|
||||
c11.28,0,20.426-9.145,20.426-20.426S279.536,273.461,268.255,273.461z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
<path d="M345.872,273.461h-23.149c-11.28,0-20.426,9.145-20.426,20.426s9.145,20.426,20.426,20.426h23.149
|
||||
c11.28,0,20.426-9.145,20.426-20.426S357.153,273.461,345.872,273.461z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
<path d="M423.489,273.461H400.34c-11.28,0-20.426,9.145-20.426,20.426s9.145,20.426,20.426,20.426h23.149
|
||||
c11.28,0,20.426-9.145,20.426-20.426S434.77,273.461,423.489,273.461z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
<path d="M113.021,325.206H89.872c-11.28,0-20.426,9.145-20.426,20.426s9.145,20.425,20.426,20.425h23.149
|
||||
c11.28,0,20.426-9.145,20.426-20.425S124.302,325.206,113.021,325.206z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
<path d="M423.489,325.206H400.34c-11.28,0-20.426,9.145-20.426,20.426s9.145,20.425,20.426,20.425h23.149
|
||||
c11.28,0,20.426-9.145,20.426-20.425S434.77,325.206,423.489,325.206z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
<path d="M345.872,329.291H167.489c-11.28,0-20.426,9.145-20.426,20.426s9.145,20.426,20.426,20.426h178.383
|
||||
c11.28,0,20.426-9.145,20.426-20.426S357.153,329.291,345.872,329.291z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
</svg>;
|
||||
|
||||
function scrollToBottom(el) {
|
||||
var y = el.box(#height, #content) - el.box(#height, #client);
|
||||
|
@ -139,11 +139,22 @@ class Header: Reactor.Component {
|
||||
<span #chat>{svg_chat}</span>
|
||||
<span #action>{svg_action}</span>
|
||||
<span #display>{svg_display}</span>
|
||||
<span #keyboard>{svg_keyboard}</span>
|
||||
{this.renderKeyboardPop()}
|
||||
{this.renderDisplayPop()}
|
||||
{this.renderActionPop()}
|
||||
</div>;
|
||||
}
|
||||
|
||||
function renderKeyboardPop(){
|
||||
return <popup>
|
||||
<menu.context #keyboard-options>
|
||||
<li #legacy><span>{svg_checkmark}</span>{translate('Legacy mode')}</li>
|
||||
<li #map><span>{svg_checkmark}</span>{translate('Map mode')}</li>
|
||||
</menu>
|
||||
</popup>;
|
||||
}
|
||||
|
||||
function renderDisplayPop() {
|
||||
return <popup>
|
||||
<menu.context #display-options>
|
||||
@ -252,6 +263,11 @@ class Header: Reactor.Component {
|
||||
me.popup(menu);
|
||||
}
|
||||
|
||||
event click $(#keyboard) (_, me) {
|
||||
var menu = $(menu#keyboard-options);
|
||||
me.popup(menu);
|
||||
}
|
||||
|
||||
event click $(#screen) (_, me) {
|
||||
if (pi.current_display == me.index) return;
|
||||
handler.switch_display(me.index);
|
||||
@ -332,6 +348,16 @@ class Header: Reactor.Component {
|
||||
toggleMenuState();
|
||||
}
|
||||
}
|
||||
|
||||
event click $(menu#keyboard-options>li) (_, me) {
|
||||
stdout.println(me.id);
|
||||
if (me.id == "legacy") {
|
||||
handler.save_keyboard_mode("legacy");
|
||||
} else if (me.id == "map") {
|
||||
handler.save_keyboard_mode("map");
|
||||
}
|
||||
toggleMenuState()
|
||||
}
|
||||
}
|
||||
|
||||
function handle_custom_image_quality() {
|
||||
@ -355,9 +381,14 @@ function toggleMenuState() {
|
||||
var s = handler.get_view_style();
|
||||
if (!s) s = "original";
|
||||
values.push(s);
|
||||
var k = handler.get_keyboard_mode();
|
||||
values.push(k);
|
||||
for (var el in $$(menu#display-options>li)) {
|
||||
el.attributes.toggleClass("selected", values.indexOf(el.id) >= 0);
|
||||
}
|
||||
for (var el in $$(menu#keyboard-options>li)) {
|
||||
el.attributes.toggleClass("selected", values.indexOf(el.id) >= 0);
|
||||
}
|
||||
for (var id in ["show-remote-cursor", "show-quality-monitor", "disable-audio", "enable-file-transfer", "disable-clipboard", "lock-after-session-end"]) {
|
||||
var el = self.select('#' + id);
|
||||
if (el) {
|
||||
|
@ -233,6 +233,8 @@ impl sciter::EventHandler for Handler {
|
||||
fn get_remember();
|
||||
fn peer_platform();
|
||||
fn set_write_override(i32, i32, bool, bool, bool);
|
||||
fn get_keyboard_mode();
|
||||
fn save_keyboard_mode(String);
|
||||
}
|
||||
}
|
||||
|
||||
@ -347,6 +349,16 @@ impl Handler {
|
||||
return self.lc.read().unwrap().image_quality.clone();
|
||||
}
|
||||
|
||||
fn get_keyboard_mode(&mut self) -> String {
|
||||
return std::env::var("KEYBOARD_MODE")
|
||||
.unwrap_or(String::from("legacy"))
|
||||
.to_lowercase();
|
||||
}
|
||||
|
||||
fn save_keyboard_mode(&mut self, value: String) {
|
||||
std::env::set_var("KEYBOARD_MODE", value);
|
||||
}
|
||||
|
||||
fn get_custom_image_quality(&mut self) -> Value {
|
||||
let mut v = Value::array(0);
|
||||
for x in self.lc.read().unwrap().custom_image_quality.iter() {
|
||||
@ -1273,10 +1285,7 @@ impl Handler {
|
||||
|
||||
fn key_down_or_up(&mut self, down_or_up: bool, key: RdevKey, evt: Event) {
|
||||
// Call different functions according to keyboard mode.
|
||||
let mode = match std::env::var("KEYBOARD_MODE")
|
||||
.unwrap_or(String::from("legacy")).to_lowercase()
|
||||
.as_str()
|
||||
{
|
||||
let mode = match self.get_keyboard_mode().as_str() {
|
||||
"map" => KeyboardMode::Map,
|
||||
"legacy" => KeyboardMode::Legacy,
|
||||
_ => KeyboardMode::Legacy,
|
||||
|
Loading…
x
Reference in New Issue
Block a user