move 'swap key' and 'swap left right mouse' to keyboard menu (#6650)

Signed-off-by: 21pages <pages21@163.com>
This commit is contained in:
21pages 2023-12-11 12:56:26 +08:00 committed by GitHub
parent 2e146190e1
commit c061eddf2a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 47 additions and 28 deletions

View File

@ -486,21 +486,6 @@ Future<List<TToggleMenu>> toolbarDisplayToggle(
}, },
child: Text(translate('Lock after session end')))); child: Text(translate('Lock after session end'))));
} }
// swap key
if (ffiModel.keyboard &&
((Platform.isMacOS && pi.platform != kPeerPlatformMacOS) ||
(!Platform.isMacOS && pi.platform == kPeerPlatformMacOS))) {
final option = 'allow_swap_key';
final value =
bind.sessionGetToggleOptionSync(sessionId: sessionId, arg: option);
v.add(TToggleMenu(
value: value,
onChanged: (value) {
if (value == null) return;
bind.sessionToggleOption(sessionId: sessionId, value: option);
},
child: Text(translate('Swap control-command key'))));
}
if (useTextureRender && if (useTextureRender &&
pi.isSupportMultiDisplay && pi.isSupportMultiDisplay &&
@ -552,17 +537,8 @@ Future<List<TToggleMenu>> toolbarDisplayToggle(
child: Text(translate('True color (4:4:4)')))); child: Text(translate('True color (4:4:4)'))));
} }
if (ffiModel.keyboard) { if (isMobile) {
final option = 'swap-left-right-mouse'; v.addAll(toolbarKeyboardToggles(ffi));
final value =
bind.sessionGetToggleOptionSync(sessionId: sessionId, arg: option);
v.add(TToggleMenu(
value: value,
onChanged: (value) {
if (value == null) return;
bind.sessionToggleOption(sessionId: sessionId, value: option);
},
child: Text(translate('swap-left-right-mouse'))));
} }
return v; return v;
@ -633,3 +609,41 @@ List<TToggleMenu> toolbarPrivacyMode(
}).toList(); }).toList();
} }
} }
List<TToggleMenu> toolbarKeyboardToggles(FFI ffi) {
final ffiModel = ffi.ffiModel;
final pi = ffiModel.pi;
final sessionId = ffi.sessionId;
List<TToggleMenu> v = [];
// swap key
if (ffiModel.keyboard &&
((Platform.isMacOS && pi.platform != kPeerPlatformMacOS) ||
(!Platform.isMacOS && pi.platform == kPeerPlatformMacOS))) {
final option = 'allow_swap_key';
final value =
bind.sessionGetToggleOptionSync(sessionId: sessionId, arg: option);
v.add(TToggleMenu(
value: value,
onChanged: (value) {
if (value == null) return;
bind.sessionToggleOption(sessionId: sessionId, value: option);
},
child: Text(translate('Swap control-command key'))));
}
// swap left right mouse
if (!isMobile && ffiModel.keyboard) {
final option = 'swap-left-right-mouse';
final value =
bind.sessionGetToggleOptionSync(sessionId: sessionId, arg: option);
v.add(TToggleMenu(
value: value,
onChanged: (value) {
if (value == null) return;
bind.sessionToggleOption(sessionId: sessionId, value: option);
},
child: Text(translate('swap-left-right-mouse'))));
}
return v;
}

View File

@ -1596,6 +1596,10 @@ class _KeyboardMenu extends StatelessWidget {
modeOnly = kKeyLegacyMode; modeOnly = kKeyLegacyMode;
} }
} }
final toolbarToggles = toolbarKeyboardToggles(ffi)
.map((e) => CkbMenuButton(
value: e.value, onChanged: e.onChanged, child: e.child, ffi: ffi))
.toList();
return _IconSubmenuButton( return _IconSubmenuButton(
tooltip: 'Keyboard Settings', tooltip: 'Keyboard Settings',
svg: "assets/keyboard.svg", svg: "assets/keyboard.svg",
@ -1610,6 +1614,7 @@ class _KeyboardMenu extends StatelessWidget {
viewMode(), viewMode(),
Divider(), Divider(),
reverseMouseWheel(), reverseMouseWheel(),
...toolbarToggles,
]); ]);
} }

View File

@ -576,7 +576,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("input_source_1_tip", "输入源 1"), ("input_source_1_tip", "输入源 1"),
("input_source_2_tip", "输入源 2"), ("input_source_2_tip", "输入源 2"),
("capture_display_elevated_connections_tip", "用户提权后,不能显示多个显示器。若要控制多显示器,请安装后再试。"), ("capture_display_elevated_connections_tip", "用户提权后,不能显示多个显示器。若要控制多显示器,请安装后再试。"),
("Swap control-command key", ""), ("Swap control-command key", "交换Control键和Command键"),
("swap-left-right-mouse", ""), ("swap-left-right-mouse", "交换鼠标左右键"),
].iter().cloned().collect(); ].iter().cloned().collect();
} }