re-folder
This commit is contained in:
parent
f5a341aad6
commit
d7d503e49c
@ -15,7 +15,7 @@ use gloo::timers::callback::Interval;
|
|||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
components::{self, input::Input, ws::WebsocketMsg},
|
components::{self, input::Input, ws::WebsocketMsg},
|
||||||
protocal::{common::*, vnc::VncHandler},
|
protocal::{common::*, vnc::vnc::VncHandler},
|
||||||
utils::WeakComponentLink,
|
utils::WeakComponentLink,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -327,17 +327,49 @@ impl PageRemote {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn bind_mouse_and_key(&mut self, canvas: &HtmlCanvasElement) {
|
fn bind_mouse_and_key(&mut self, canvas: &HtmlCanvasElement) {
|
||||||
|
let window = web_sys::window().unwrap();
|
||||||
|
let handler = self.handler.clone();
|
||||||
|
let key_down = move |e: KeyboardEvent| {
|
||||||
|
e.stop_propagation();
|
||||||
|
ConsoleService::log(&format!("key down {}", e.key_code()));
|
||||||
|
handler.key_press(e.key_code(), true);
|
||||||
|
};
|
||||||
|
|
||||||
|
let handler = Box::new(key_down) as Box<dyn FnMut(_)>;
|
||||||
|
|
||||||
|
let cb = Closure::wrap(handler);
|
||||||
|
|
||||||
|
window
|
||||||
|
.add_event_listener_with_callback("keydown", cb.as_ref().unchecked_ref())
|
||||||
|
.unwrap();
|
||||||
|
cb.forget();
|
||||||
|
|
||||||
|
let handler = self.handler.clone();
|
||||||
|
let key_up = move |e: KeyboardEvent| {
|
||||||
|
e.stop_propagation();
|
||||||
|
handler.key_press(e.key_code(), false);
|
||||||
|
};
|
||||||
|
|
||||||
|
let handler = Box::new(key_up) as Box<dyn FnMut(_)>;
|
||||||
|
|
||||||
|
let cb = Closure::wrap(handler);
|
||||||
|
|
||||||
|
window
|
||||||
|
.add_event_listener_with_callback("keyup", cb.as_ref().unchecked_ref())
|
||||||
|
.unwrap();
|
||||||
|
cb.forget();
|
||||||
|
|
||||||
let handler = self.handler.clone();
|
let handler = self.handler.clone();
|
||||||
let key_press = move |e: KeyboardEvent| {
|
let key_press = move |e: KeyboardEvent| {
|
||||||
e.stop_propagation();
|
e.stop_propagation();
|
||||||
handler.key_press(e.key_code());
|
ConsoleService::log(&format!("key press {}", e.key_code()));
|
||||||
};
|
};
|
||||||
|
|
||||||
let handler = Box::new(key_press) as Box<dyn FnMut(_)>;
|
let handler = Box::new(key_press) as Box<dyn FnMut(_)>;
|
||||||
|
|
||||||
let cb = Closure::wrap(handler);
|
let cb = Closure::wrap(handler);
|
||||||
|
|
||||||
canvas
|
window
|
||||||
.add_event_listener_with_callback("keypress", cb.as_ref().unchecked_ref())
|
.add_event_listener_with_callback("keypress", cb.as_ref().unchecked_ref())
|
||||||
.unwrap();
|
.unwrap();
|
||||||
cb.forget();
|
cb.forget();
|
||||||
|
@ -78,8 +78,8 @@ where
|
|||||||
.require_frame(incremental);
|
.require_frame(incremental);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn key_press(&self, key: u32) {
|
pub fn key_press(&self, key: u32, down: bool) {
|
||||||
self.inner.as_ref().lock().unwrap().key_press(key);
|
self.inner.as_ref().lock().unwrap().key_press(key, down);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn mouse_event(&self, x: u16, y: u16, button: u8) {
|
pub fn mouse_event(&self, x: u16, y: u16, button: u8) {
|
||||||
@ -97,7 +97,7 @@ pub trait ProtocalImpl {
|
|||||||
fn get_output(&mut self) -> Vec<ProtocalHandlerOutput>;
|
fn get_output(&mut self) -> Vec<ProtocalHandlerOutput>;
|
||||||
fn set_credential(&mut self, username: &str, password: &str);
|
fn set_credential(&mut self, username: &str, password: &str);
|
||||||
fn set_resolution(&mut self, width: u16, height: u16);
|
fn set_resolution(&mut self, width: u16, height: u16);
|
||||||
fn key_press(&mut self, key: u32);
|
fn key_press(&mut self, key: u32, down: bool);
|
||||||
fn mouse_event(&mut self, x: u16, y: u16, button: u8);
|
fn mouse_event(&mut self, x: u16, y: u16, button: u8);
|
||||||
fn require_frame(&mut self, incremental: u8);
|
fn require_frame(&mut self, incremental: u8);
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,2 @@
|
|||||||
pub mod common;
|
pub mod common;
|
||||||
mod des;
|
|
||||||
pub mod vnc;
|
pub mod vnc;
|
||||||
|
2
frontend/src/protocal/vnc/mod.rs
Normal file
2
frontend/src/protocal/vnc/mod.rs
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
mod des;
|
||||||
|
pub mod vnc;
|
@ -1,4 +1,4 @@
|
|||||||
use super::common::*;
|
use super::super::common::*;
|
||||||
use super::des;
|
use super::des;
|
||||||
use yew::services::ConsoleService;
|
use yew::services::ConsoleService;
|
||||||
|
|
||||||
@ -167,13 +167,13 @@ impl ProtocalImpl for VncHandler {
|
|||||||
// VNC client doen't support resolution change
|
// VNC client doen't support resolution change
|
||||||
}
|
}
|
||||||
|
|
||||||
fn key_press(&mut self, key: u32) {
|
fn key_press(&mut self, key: u32, down: bool) {
|
||||||
if self.state != VncState::Connected {
|
if self.state != VncState::Connected {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if let ServerMessage::None = self.msg_handling {
|
if let ServerMessage::None = self.msg_handling {
|
||||||
let key = jskey_to_x11(key);
|
let key = jskey_to_x11(key);
|
||||||
self.send_key_event(key, true);
|
self.send_key_event(key, down);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -303,7 +303,7 @@ impl VncHandler {
|
|||||||
sw.write_u8(if down { 1 } else { 0 }); // down
|
sw.write_u8(if down { 1 } else { 0 }); // down
|
||||||
sw.write_u16(0); // padding
|
sw.write_u16(0); // padding
|
||||||
sw.write_u32(key); // key
|
sw.write_u32(key); // key
|
||||||
// ConsoleService::log(&format!("send key event {:x?} {:?}", key, down));
|
ConsoleService::log(&format!("send key event {:x?} {:?}", key, down));
|
||||||
self.outbuf.extend_from_slice(&out);
|
self.outbuf.extend_from_slice(&out);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user