Experimental support for haptic feedback

This commit is contained in:
PaperCube
2024-02-16 13:48:57 +00:00
parent 6b41459281
commit 1d8f6bed6b
3 changed files with 8 additions and 2 deletions

View File

@@ -6,6 +6,7 @@
<uses-permission android:name="android.permission.USE_BIOMETRIC" /> <uses-permission android:name="android.permission.USE_BIOMETRIC" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
<uses-permission android:name="android.permission.VIBRATE" />
<application <application
android:label="ServerBox" android:label="ServerBox"

View File

@@ -61,3 +61,4 @@ final isWeb = OS.type == OS.web;
final isMobile = OS.type == OS.ios || OS.type == OS.android; final isMobile = OS.type == OS.ios || OS.type == OS.android;
final isDesktop = final isDesktop =
OS.type == OS.linux || OS.type == OS.macos || OS.type == OS.windows; OS.type == OS.linux || OS.type == OS.macos || OS.type == OS.windows;
const isDebuggingMobileLayoutOnDesktop = kDebugMode;

View File

@@ -106,7 +106,7 @@ class _SSHPageState extends State<SSHPage> with AutomaticKeepAliveClientMixin {
_terminalTheme = _isDark ? TerminalThemes.dark : TerminalThemes.light; _terminalTheme = _isDark ? TerminalThemes.dark : TerminalThemes.light;
// Because the virtual keyboard only displayed on mobile devices // Because the virtual keyboard only displayed on mobile devices
if (isMobile) { if (isMobile || isDebuggingMobileLayoutOnDesktop) {
_virtKeyWidth = _media.size.width / 7; _virtKeyWidth = _media.size.width / 7;
_virtKeysHeight = _media.size.height * 0.043 * _virtKeysList.length; _virtKeysHeight = _media.size.height * 0.043 * _virtKeysList.length;
} }
@@ -118,7 +118,9 @@ class _SSHPageState extends State<SSHPage> with AutomaticKeepAliveClientMixin {
Widget child = Scaffold( Widget child = Scaffold(
backgroundColor: _terminalTheme.background, backgroundColor: _terminalTheme.background,
body: _buildBody(), body: _buildBody(),
bottomNavigationBar: isDesktop ? null : _buildBottom(), bottomNavigationBar: isDesktop && !isDebuggingMobileLayoutOnDesktop
? null
: _buildBottom(),
); );
if (isIOS) { if (isIOS) {
child = AnnotatedRegion( child = AnnotatedRegion(
@@ -232,10 +234,12 @@ class _SSHPageState extends State<SSHPage> with AutomaticKeepAliveClientMixin {
void _doVirtualKey(VirtKey item) { void _doVirtualKey(VirtKey item) {
if (item.func != null) { if (item.func != null) {
HapticFeedback.mediumImpact();
_doVirtualKeyFunc(item.func!); _doVirtualKeyFunc(item.func!);
return; return;
} }
if (item.key != null) { if (item.key != null) {
HapticFeedback.mediumImpact();
_doVirtualKeyInput(item.key!); _doVirtualKeyInput(item.key!);
} }
} }