feat: modifier key

This commit is contained in:
mcfans 2023-10-19 14:19:19 +08:00
parent 28c11801f3
commit 26e77ba2c3
4 changed files with 5 additions and 12 deletions
Cargo.lock
flutter/android/app/src/main/kotlin/com/carriez/flutter_hbb
src

2
Cargo.lock generated

@ -4914,7 +4914,7 @@ dependencies = [
[[package]] [[package]]
name = "rdev" name = "rdev"
version = "0.5.0-2" version = "0.5.0-2"
source = "git+https://github.com/mcfans/rdev#d643ea4542e61931cb20e1ecd390d6a3c9569171" source = "git+https://github.com/mcfans/rdev#97f63d5bc51bb2387d3f2664d3127640e492c9e5"
dependencies = [ dependencies = [
"cocoa", "cocoa",
"core-foundation", "core-foundation",

@ -9,8 +9,6 @@ object KeyEventConverter {
var chrValue = 0 var chrValue = 0
var modifiers = 0 var modifiers = 0
android.util.Log.d(tag, "proto: $keyEventProto")
val keyboardMode = keyEventProto.getMode() val keyboardMode = keyEventProto.getMode()
if (keyEventProto.hasChr()) { if (keyEventProto.hasChr()) {
@ -28,12 +26,10 @@ object KeyEventConverter {
if (modifiersList != null) { if (modifiersList != null) {
for (modifier in keyEventProto.getModifiersList()) { for (modifier in keyEventProto.getModifiersList()) {
val modifierValue = convertModifier(modifier) val modifierValue = convertModifier(modifier)
modifiers = modifiers and modifierValue modifiers = modifiers or modifierValue
} }
} }
android.util.Log.d(tag, "modifiers: $modifiersList")
var action = 0 var action = 0
if (keyEventProto.getDown()) { if (keyEventProto.getDown()) {
action = KeyEvent.ACTION_DOWN action = KeyEvent.ACTION_DOWN

@ -1072,6 +1072,8 @@ pub fn keycode_to_rdev_key(keycode: u32) -> Key {
return rdev::win_key_from_scancode(keycode); return rdev::win_key_from_scancode(keycode);
#[cfg(any(target_os = "linux"))] #[cfg(any(target_os = "linux"))]
return rdev::linux_key_from_code(keycode); return rdev::linux_key_from_code(keycode);
#[cfg(any(target_os = "android"))]
return rdev::android_key_from_code(keycode);
#[cfg(target_os = "macos")] #[cfg(target_os = "macos")]
return rdev::macos_key_from_code(keycode.try_into().unwrap_or_default()); return rdev::macos_key_from_code(keycode.try_into().unwrap_or_default());
} }

@ -1728,11 +1728,7 @@ impl Connection {
Some(message::Union::KeyEvent(..)) => {} Some(message::Union::KeyEvent(..)) => {}
#[cfg(any(target_os = "android"))] #[cfg(any(target_os = "android"))]
Some(message::Union::KeyEvent(mut me)) => { Some(message::Union::KeyEvent(mut me)) => {
let is_press = if cfg!(target_os = "linux") { let is_press = (me.press || me.down) && !crate::is_modifier(&me);
(me.press || me.down) && !crate::is_modifier(&me)
} else {
me.press
};
let key = match me.mode.enum_value() { let key = match me.mode.enum_value() {
Ok(KeyboardMode::Map) => { Ok(KeyboardMode::Map) => {
@ -1748,7 +1744,6 @@ impl Connection {
_ => None, _ => None,
} }
.filter(crate::keyboard::is_modifier); .filter(crate::keyboard::is_modifier);
log::debug!("key:{:?}", key);
if let Some(key) = key { if let Some(key) = key {
if is_press { if is_press {