feat: mobile, key help tool, more keys (#10068)

* feat: mobile, key help tool, vk_enter

Signed-off-by: fufesou <linlong1266@gmail.com>

* Mobile, add more function keys

Signed-off-by: fufesou <linlong1266@gmail.com>

* Mobile, more virtual function keys

Signed-off-by: fufesou <linlong1266@gmail.com>

* uinput, menu maps key_compose

Signed-off-by: fufesou <linlong1266@gmail.com>

---------

Signed-off-by: fufesou <linlong1266@gmail.com>
This commit is contained in:
fufesou 2024-11-29 00:56:38 +08:00 committed by GitHub
parent 4f86169f7f
commit afc8bb71dc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 28 additions and 3 deletions

View File

@ -872,6 +872,8 @@ class _KeyHelpToolsState extends State<KeyHelpTools> {
final pi = gFFI.ffiModel.pi; final pi = gFFI.ffiModel.pi;
final isMac = pi.platform == kPeerPlatformMacOS; final isMac = pi.platform == kPeerPlatformMacOS;
final isWin = pi.platform == kPeerPlatformWindows;
final isLinux = pi.platform == kPeerPlatformLinux;
final modifiers = <Widget>[ final modifiers = <Widget>[
wrap('Ctrl ', () { wrap('Ctrl ', () {
setState(() => inputModel.ctrl = !inputModel.ctrl); setState(() => inputModel.ctrl = !inputModel.ctrl);
@ -952,6 +954,28 @@ class _KeyHelpToolsState extends State<KeyHelpTools> {
wrap('PgDn', () { wrap('PgDn', () {
inputModel.inputKey('VK_NEXT'); inputModel.inputKey('VK_NEXT');
}), }),
// to-do: support PrtScr on Mac
if (isWin || isLinux)
wrap('PrtScr', () {
inputModel.inputKey('VK_SNAPSHOT');
}),
if (isWin || isLinux)
wrap('ScrollLock', () {
inputModel.inputKey('VK_SCROLL');
}),
if (isWin || isLinux)
wrap('Pause', () {
inputModel.inputKey('VK_PAUSE');
}),
if (isWin || isLinux)
// Maybe it's better to call it "Menu"
// https://en.wikipedia.org/wiki/Menu_key
wrap('Menu', () {
inputModel.inputKey('Apps');
}),
wrap('Enter', () {
inputModel.inputKey('VK_ENTER');
}),
SizedBox(width: 9999), SizedBox(width: 9999),
wrap('', () { wrap('', () {
inputModel.inputKey('VK_LEFT'); inputModel.inputKey('VK_LEFT');

View File

@ -345,7 +345,7 @@ fn convert_to_tfc_key(key: Key) -> Option<TFC_Key> {
Key::Numpad9 => TFC_Key::N9, Key::Numpad9 => TFC_Key::N9,
Key::Decimal => TFC_Key::NumpadDecimal, Key::Decimal => TFC_Key::NumpadDecimal,
Key::Clear => TFC_Key::NumpadClear, Key::Clear => TFC_Key::NumpadClear,
Key::Pause => TFC_Key::PlayPause, Key::Pause => TFC_Key::Pause,
Key::Print => TFC_Key::Print, Key::Print => TFC_Key::Print,
Key::Snapshot => TFC_Key::PrintScreen, Key::Snapshot => TFC_Key::PrintScreen,
Key::Insert => TFC_Key::Insert, Key::Insert => TFC_Key::Insert,

View File

@ -3293,6 +3293,7 @@ lazy_static::lazy_static! {
("VK_PRINT", Key::ControlKey(ControlKey::Print)), ("VK_PRINT", Key::ControlKey(ControlKey::Print)),
("VK_EXECUTE", Key::ControlKey(ControlKey::Execute)), ("VK_EXECUTE", Key::ControlKey(ControlKey::Execute)),
("VK_SNAPSHOT", Key::ControlKey(ControlKey::Snapshot)), ("VK_SNAPSHOT", Key::ControlKey(ControlKey::Snapshot)),
("VK_SCROLL", Key::ControlKey(ControlKey::Scroll)),
("VK_INSERT", Key::ControlKey(ControlKey::Insert)), ("VK_INSERT", Key::ControlKey(ControlKey::Insert)),
("VK_DELETE", Key::ControlKey(ControlKey::Delete)), ("VK_DELETE", Key::ControlKey(ControlKey::Delete)),
("VK_HELP", Key::ControlKey(ControlKey::Help)), ("VK_HELP", Key::ControlKey(ControlKey::Help)),

View File

@ -239,7 +239,7 @@ pub mod service {
(enigo::Key::Select, evdev::Key::KEY_SELECT), (enigo::Key::Select, evdev::Key::KEY_SELECT),
(enigo::Key::Print, evdev::Key::KEY_PRINT), (enigo::Key::Print, evdev::Key::KEY_PRINT),
// (enigo::Key::Execute, evdev::Key::KEY_EXECUTE), // (enigo::Key::Execute, evdev::Key::KEY_EXECUTE),
// (enigo::Key::Snapshot, evdev::Key::KEY_SNAPSHOT), (enigo::Key::Snapshot, evdev::Key::KEY_SYSRQ),
(enigo::Key::Insert, evdev::Key::KEY_INSERT), (enigo::Key::Insert, evdev::Key::KEY_INSERT),
(enigo::Key::Help, evdev::Key::KEY_HELP), (enigo::Key::Help, evdev::Key::KEY_HELP),
(enigo::Key::Sleep, evdev::Key::KEY_SLEEP), (enigo::Key::Sleep, evdev::Key::KEY_SLEEP),
@ -247,7 +247,7 @@ pub mod service {
(enigo::Key::Scroll, evdev::Key::KEY_SCROLLLOCK), (enigo::Key::Scroll, evdev::Key::KEY_SCROLLLOCK),
(enigo::Key::NumLock, evdev::Key::KEY_NUMLOCK), (enigo::Key::NumLock, evdev::Key::KEY_NUMLOCK),
(enigo::Key::RWin, evdev::Key::KEY_RIGHTMETA), (enigo::Key::RWin, evdev::Key::KEY_RIGHTMETA),
(enigo::Key::Apps, evdev::Key::KEY_CONTEXT_MENU), (enigo::Key::Apps, evdev::Key::KEY_COMPOSE), // it's a little strange that the key is mapped to KEY_COMPOSE, not KEY_MENU
(enigo::Key::Multiply, evdev::Key::KEY_KPASTERISK), (enigo::Key::Multiply, evdev::Key::KEY_KPASTERISK),
(enigo::Key::Add, evdev::Key::KEY_KPPLUS), (enigo::Key::Add, evdev::Key::KEY_KPPLUS),
(enigo::Key::Subtract, evdev::Key::KEY_KPMINUS), (enigo::Key::Subtract, evdev::Key::KEY_KPMINUS),