Merge pull request #1526 from asur4s/master

Fix compile on android && altgr of Korean
This commit is contained in:
RustDesk 2022-09-14 20:44:26 +08:00 committed by GitHub
commit 232c3a1112
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 49 additions and 24 deletions

2
Cargo.lock generated
View File

@ -3975,7 +3975,7 @@ dependencies = [
[[package]] [[package]]
name = "rdev" name = "rdev"
version = "0.5.0-2" version = "0.5.0-2"
source = "git+https://github.com/asur4s/rdev#0ad53987fa6f0e37a7bc000358f71c3802de4e7c" source = "git+https://github.com/asur4s/rdev#bff57a29e3f14d032ab7441b2d6cf029df8adaca"
dependencies = [ dependencies = [
"cocoa", "cocoa",
"core-foundation 0.9.3", "core-foundation 0.9.3",

View File

@ -142,12 +142,12 @@ def build_flutter_deb(version):
os.chdir('flutter') os.chdir('flutter')
os.system('dpkg-deb -R rustdesk.deb tmpdeb') os.system('dpkg-deb -R rustdesk.deb tmpdeb')
os.system('flutter build linux --release') os.system('flutter build linux --release')
os.system('strip build/linux/x64/release/liblibrustdesk.so')
os.system('mkdir -p tmpdeb/usr/bin/') os.system('mkdir -p tmpdeb/usr/bin/')
os.system('mkdir -p tmpdeb/usr/lib/rustdesk') os.system('mkdir -p tmpdeb/usr/lib/rustdesk')
os.system('mkdir -p tmpdeb/usr/share/rustdesk/files/systemd/') os.system('mkdir -p tmpdeb/usr/share/rustdesk/files/systemd/')
os.system('mkdir -p tmpdeb/usr/share/applications/') os.system('mkdir -p tmpdeb/usr/share/applications/')
os.system('mkdir -p tmpdeb/usr/share/polkit-1/actions')
os.system( os.system(
'cp -r build/linux/x64/release/bundle/* tmpdeb/usr/lib/rustdesk/') 'cp -r build/linux/x64/release/bundle/* tmpdeb/usr/lib/rustdesk/')
@ -163,6 +163,10 @@ def build_flutter_deb(version):
'cp ../128x128@2x.png tmpdeb/usr/share/rustdesk/files/rustdesk.png') 'cp ../128x128@2x.png tmpdeb/usr/share/rustdesk/files/rustdesk.png')
os.system( os.system(
'cp ../rustdesk.desktop tmpdeb/usr/share/applications/rustdesk.desktop') 'cp ../rustdesk.desktop tmpdeb/usr/share/applications/rustdesk.desktop')
os.system(
'cp ../com.rustdesk.RustDesk.policy tmpdeb/usr/share/polkit-1/actions/')
os.system("echo \"#!/bin/sh\" >> tmpdeb/usr/share/rustdesk/files/polkit && chmod a+x tmpdeb/usr/share/rustdesk/files/polkit")
os.system('mkdir -p tmpdeb/DEBIAN') os.system('mkdir -p tmpdeb/DEBIAN')
generate_control_file(version) generate_control_file(version)
os.system('cp -a ../DEBIAN/* tmpdeb/DEBIAN/') os.system('cp -a ../DEBIAN/* tmpdeb/DEBIAN/')

View File

@ -70,7 +70,7 @@ packages:
name: build name: build
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.3.0" version: "2.3.1"
build_config: build_config:
dependency: transitive dependency: transitive
description: description:
@ -91,21 +91,21 @@ packages:
name: build_resolvers name: build_resolvers
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.9" version: "2.0.10"
build_runner: build_runner:
dependency: "direct dev" dependency: "direct dev"
description: description:
name: build_runner name: build_runner
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.2.0" version: "2.2.1"
build_runner_core: build_runner_core:
dependency: transitive dependency: transitive
description: description:
name: build_runner_core name: build_runner_core
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "7.2.3" version: "7.2.4"
built_collection: built_collection:
dependency: transitive dependency: transitive
description: description:
@ -418,8 +418,8 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
path: "." path: "."
ref: "9021e21de36c84edf01d5034f38eda580463163b" ref: "47179378523c993092f70d95f93d53f40af01f02"
resolved-ref: "9021e21de36c84edf01d5034f38eda580463163b" resolved-ref: "47179378523c993092f70d95f93d53f40af01f02"
url: "https://github.com/Kingtous/rustdesk_flutter_custom_cursor" url: "https://github.com/Kingtous/rustdesk_flutter_custom_cursor"
source: git source: git
version: "0.0.1" version: "0.0.1"
@ -973,7 +973,7 @@ packages:
name: source_gen name: source_gen
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.2.2" version: "1.2.3"
source_span: source_span:
dependency: transitive dependency: transitive
description: description:

View File

@ -17,14 +17,15 @@ use crate::flutter::{self, SESSIONS};
use crate::start_server; use crate::start_server;
use crate::ui_interface; use crate::ui_interface;
#[cfg(not(any(target_os = "android", target_os = "ios")))] #[cfg(not(any(target_os = "android", target_os = "ios")))]
use crate::ui_interface::{change_id, get_sound_inputs};
use crate::ui_interface::{ use crate::ui_interface::{
change_id, check_mouse_time, check_super_user_permission, discover, forget_password, check_mouse_time, check_super_user_permission, discover, forget_password, get_api_server,
get_api_server, get_app_name, get_async_job_status, get_connect_status, get_fav, get_id, get_app_name, get_async_job_status, get_connect_status, get_fav, get_id, get_lan_peers,
get_lan_peers, get_langs, get_license, get_local_option, get_mouse_time, get_option, get_langs, get_license, get_local_option, get_mouse_time, get_option, get_options, get_peer,
get_options, get_peer, get_peer_option, get_socks, get_sound_inputs, get_uuid, get_version, get_peer_option, get_socks, get_uuid, get_version, has_hwcodec, has_rendezvous_service,
has_hwcodec, has_rendezvous_service, post_request, send_to_cm, set_local_option, set_option, post_request, send_to_cm, set_local_option, set_option, set_options, set_peer_option,
set_options, set_peer_option, set_permanent_password, set_socks, store_fav, set_permanent_password, set_socks, store_fav, test_if_valid_server, update_temporary_password,
test_if_valid_server, update_temporary_password, using_public_server, using_public_server,
}; };
use crate::{ use crate::{
client::file_trait::FileManager, client::file_trait::FileManager,
@ -431,7 +432,10 @@ pub fn session_resume_job(id: String, act_id: i32, is_remote: bool) {
} }
pub fn main_get_sound_inputs() -> Vec<String> { pub fn main_get_sound_inputs() -> Vec<String> {
get_sound_inputs() #[cfg(not(any(target_os = "android", target_os = "ios")))]
return get_sound_inputs();
#[cfg(any(target_os = "android", target_os = "linux"))]
vec![String::from("")]
} }
pub fn main_change_id(new_id: String) { pub fn main_change_id(new_id: String) {

View File

@ -223,6 +223,7 @@ pub fn test_if_valid_server(host: String) -> String {
} }
#[inline] #[inline]
#[cfg(not(any(target_os = "android", target_os = "ios")))]
pub fn get_sound_inputs() -> Vec<String> { pub fn get_sound_inputs() -> Vec<String> {
let mut a = Vec::new(); let mut a = Vec::new();
#[cfg(not(target_os = "linux"))] #[cfg(not(target_os = "linux"))]

View File

@ -11,7 +11,9 @@ use async_trait::async_trait;
use hbb_common::config::{Config, LocalConfig, PeerConfig}; use hbb_common::config::{Config, LocalConfig, PeerConfig};
use hbb_common::rendezvous_proto::ConnType; use hbb_common::rendezvous_proto::ConnType;
use hbb_common::tokio::{self, sync::mpsc}; use hbb_common::tokio::{self, sync::mpsc};
use rdev::{Event, EventType::*, Key as RdevKey, Keyboard as RdevKeyboard, KeyboardState}; use rdev::{Event, EventType::*, Key as RdevKey, KeyboardState};
#[cfg(not(any(target_os = "android", target_os = "ios")))]
use rdev::Keyboard as RdevKeyboard;
use hbb_common::{allow_err, message_proto::*}; use hbb_common::{allow_err, message_proto::*};
use hbb_common::{fs, get_version_number, log, Stream}; use hbb_common::{fs, get_version_number, log, Stream};
@ -27,9 +29,12 @@ pub static KEYBOARD_HOOKED: AtomicBool = AtomicBool::new(true);
#[cfg(windows)] #[cfg(windows)]
static mut IS_ALT_GR: bool = false; static mut IS_ALT_GR: bool = false;
#[cfg(not(any(target_os = "android", target_os = "ios")))]
lazy_static::lazy_static! { lazy_static::lazy_static! {
static ref TO_RELEASE: Arc<Mutex<HashSet<RdevKey>>> = Arc::new(Mutex::new(HashSet::<RdevKey>::new())); static ref TO_RELEASE: Arc<Mutex<HashSet<RdevKey>>> = Arc::new(Mutex::new(HashSet::<RdevKey>::new()));
}
#[cfg(not(any(target_os = "android", target_os = "ios")))]
lazy_static::lazy_static! {
static ref KEYBOARD: Arc<Mutex<RdevKeyboard>> = Arc::new(Mutex::new(RdevKeyboard::new().unwrap())); static ref KEYBOARD: Arc<Mutex<RdevKeyboard>> = Arc::new(Mutex::new(RdevKeyboard::new().unwrap()));
} }
@ -268,6 +273,7 @@ impl<T: InvokeUiSession> Session<T> {
#[allow(dead_code)] #[allow(dead_code)]
fn convert_numpad_keys(&self, key: RdevKey) -> RdevKey { fn convert_numpad_keys(&self, key: RdevKey) -> RdevKey {
#[cfg(not(any(target_os = "android", target_os = "ios")))]
if get_key_state(enigo::Key::NumLock) { if get_key_state(enigo::Key::NumLock) {
return key; return key;
} }
@ -315,10 +321,11 @@ impl<T: InvokeUiSession> Session<T> {
key_event.set_chr(keycode); key_event.set_chr(keycode);
key_event.down = down_or_up; key_event.down = down_or_up;
#[cfg(not(any(target_os = "android", target_os = "ios")))]
if get_key_state(enigo::Key::CapsLock) { if get_key_state(enigo::Key::CapsLock) {
key_event.modifiers.push(ControlKey::CapsLock.into()); key_event.modifiers.push(ControlKey::CapsLock.into());
} }
#[cfg(not(any(target_os = "android", target_os = "ios")))]
if get_key_state(enigo::Key::NumLock) { if get_key_state(enigo::Key::NumLock) {
key_event.modifiers.push(ControlKey::NumLock.into()); key_event.modifiers.push(ControlKey::NumLock.into());
} }
@ -326,6 +333,7 @@ impl<T: InvokeUiSession> Session<T> {
self.send_key_event(key_event, KeyboardMode::Map); self.send_key_event(key_event, KeyboardMode::Map);
} }
#[cfg(not(any(target_os = "android", target_os = "ios")))]
fn translate_keyboard_mode(&self, down_or_up: bool, key: RdevKey, evt: Event) { fn translate_keyboard_mode(&self, down_or_up: bool, key: RdevKey, evt: Event) {
// translate mode(2): locally generated characters are send to the peer. // translate mode(2): locally generated characters are send to the peer.
@ -407,10 +415,11 @@ impl<T: InvokeUiSession> Session<T> {
{ {
key_event.modifiers.push(ControlKey::Meta.into()); key_event.modifiers.push(ControlKey::Meta.into());
} }
#[cfg(not(any(target_os = "android", target_os = "ios")))]
if get_key_state(enigo::Key::CapsLock) { if get_key_state(enigo::Key::CapsLock) {
key_event.modifiers.push(ControlKey::CapsLock.into()); key_event.modifiers.push(ControlKey::CapsLock.into());
} }
#[cfg(not(any(target_os = "android", target_os = "ios")))]
if self.peer_platform() != "Mac OS" { if self.peer_platform() != "Mac OS" {
if get_key_state(enigo::Key::NumLock) { if get_key_state(enigo::Key::NumLock) {
key_event.modifiers.push(ControlKey::NumLock.into()); key_event.modifiers.push(ControlKey::NumLock.into());
@ -418,6 +427,7 @@ impl<T: InvokeUiSession> Session<T> {
} }
} }
#[cfg(not(any(target_os = "android", target_os = "ios")))]
fn legacy_keyboard_mode(&self, down_or_up: bool, key: RdevKey, evt: Event) { fn legacy_keyboard_mode(&self, down_or_up: bool, key: RdevKey, evt: Event) {
// legacy mode(0): Generate characters locally, look for keycode on other side. // legacy mode(0): Generate characters locally, look for keycode on other side.
let peer = self.peer_platform(); let peer = self.peer_platform();
@ -648,11 +658,18 @@ impl<T: InvokeUiSession> Session<T> {
} }
self.map_keyboard_mode(down_or_up, key, Some(evt)); self.map_keyboard_mode(down_or_up, key, Some(evt));
} }
KeyboardMode::Legacy => self.legacy_keyboard_mode(down_or_up, key, evt), KeyboardMode::Legacy => {
#[cfg(not(any(target_os = "android", target_os = "ios")))]
self.legacy_keyboard_mode(down_or_up, key, evt)
},
KeyboardMode::Translate => { KeyboardMode::Translate => {
#[cfg(not(any(target_os = "android", target_os = "ios")))]
self.translate_keyboard_mode(down_or_up, key, evt); self.translate_keyboard_mode(down_or_up, key, evt);
} }
_ => self.legacy_keyboard_mode(down_or_up, key, evt), _ => {
#[cfg(not(any(target_os = "android", target_os = "ios")))]
self.legacy_keyboard_mode(down_or_up, key, evt)
},
} }
} }
@ -742,7 +759,6 @@ impl<T: InvokeUiSession> Session<T> {
let keycode: u32 = keycode as u32; let keycode: u32 = keycode as u32;
let scancode: u32 = scancode as u32; let scancode: u32 = scancode as u32;
#[cfg(not(target_os = "windows"))]
let key = rdev::key_from_scancode(scancode) as RdevKey; let key = rdev::key_from_scancode(scancode) as RdevKey;
// Windows requires special handling // Windows requires special handling
#[cfg(target_os = "windows")] #[cfg(target_os = "windows")]