2
0
mirror of https://github.com/KDE/kdeconnect-android synced 2025-09-03 07:35:08 +00:00

Add separate sensitivity for gyroscope in plugin MousePad

This commit is contained in:
Jakub Wiśnia
2023-03-28 00:01:50 +02:00
parent e60c134d78
commit 6adb73bf5e
3 changed files with 80 additions and 68 deletions

View File

@@ -73,6 +73,9 @@
<string name="mousepad_scroll_direction_title">Reverse Scrolling Direction</string> <string name="mousepad_scroll_direction_title">Reverse Scrolling Direction</string>
<string name="mousepad_scroll_direction" translatable="false">mousepad_scroll_direction</string> <string name="mousepad_scroll_direction" translatable="false">mousepad_scroll_direction</string>
<string name="gyro_mouse_enabled" translatable="false">gyro_mouse_enabled</string> <string name="gyro_mouse_enabled" translatable="false">gyro_mouse_enabled</string>
<string name="gyro_mouse_enabled_title">Enable gyroscope mouse</string>
<string name="gyro_mouse_sensitivity_title">Gyroscope sensitivity</string>
<string name="gyro_mouse_sensitivity" translatable="false">gyro_mouse_sensitivity</string>
<string-array name="mousepad_tap_entries"> <string-array name="mousepad_tap_entries">
<item>Left click</item> <item>Left click</item>
<item>Right click</item> <item>Right click</item>

View File

@@ -1,89 +1,96 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
tools:keep="@xml/mousepadplugin_preferences"> tools:keep="@xml/mousepadplugin_preferences">
<ListPreference <ListPreference
android:id="@+id/mousepad_single_tap_preference" android:id="@+id/mousepad_single_tap_preference"
android:defaultValue="@string/mousepad_default_single" android:defaultValue="@string/mousepad_default_single"
android:entries="@array/mousepad_tap_entries" android:entries="@array/mousepad_tap_entries"
android:entryValues="@array/mousepad_tap_values" android:entryValues="@array/mousepad_tap_values"
android:key="@string/mousepad_single_tap_key" android:key="@string/mousepad_single_tap_key"
android:summary="%s" android:summary="%s"
android:title="@string/mousepad_single_tap_settings_title" /> android:title="@string/mousepad_single_tap_settings_title" />
<ListPreference <ListPreference
android:id="@+id/mousepad_double_tap_preference" android:id="@+id/mousepad_double_tap_preference"
android:defaultValue="@string/mousepad_default_double" android:defaultValue="@string/mousepad_default_double"
android:entries="@array/mousepad_tap_entries" android:entries="@array/mousepad_tap_entries"
android:entryValues="@array/mousepad_tap_values" android:entryValues="@array/mousepad_tap_values"
android:key="@string/mousepad_double_tap_key" android:key="@string/mousepad_double_tap_key"
android:summary="%s" android:summary="%s"
android:title="@string/mousepad_double_tap_settings_title" /> android:title="@string/mousepad_double_tap_settings_title" />
<ListPreference <ListPreference
android:id="@+id/mousepad_triple_tap_preference" android:id="@+id/mousepad_triple_tap_preference"
android:defaultValue="@string/mousepad_default_triple" android:defaultValue="@string/mousepad_default_triple"
android:entries="@array/mousepad_tap_entries" android:entries="@array/mousepad_tap_entries"
android:entryValues="@array/mousepad_tap_values" android:entryValues="@array/mousepad_tap_values"
android:key="@string/mousepad_triple_tap_key" android:key="@string/mousepad_triple_tap_key"
android:summary="%s" android:summary="%s"
android:title="@string/mousepad_triple_tap_settings_title" /> android:title="@string/mousepad_triple_tap_settings_title" />
<ListPreference <ListPreference
android:id="@+id/mousepad_sensitivity_preference" android:id="@+id/mousepad_sensitivity_preference"
android:defaultValue="@string/mousepad_default_sensitivity" android:defaultValue="@string/mousepad_default_sensitivity"
android:entries="@array/mousepad_sensitivity_entries" android:entries="@array/mousepad_sensitivity_entries"
android:entryValues="@array/mousepad_sensitivity_values" android:entryValues="@array/mousepad_sensitivity_values"
android:key="@string/mousepad_sensitivity_key" android:key="@string/mousepad_sensitivity_key"
android:summary="%s" android:summary="%s"
android:title="@string/mousepad_sensitivity_settings_title" /> android:title="@string/mousepad_sensitivity_settings_title" />
<ListPreference <ListPreference
android:id="@+id/mousepad_acceleration_profile_preference" android:id="@+id/mousepad_acceleration_profile_preference"
android:defaultValue="@string/mousepad_default_acceleration_profile" android:defaultValue="@string/mousepad_default_acceleration_profile"
android:entries="@array/mousepad_acceleration_profile_entries" android:entries="@array/mousepad_acceleration_profile_entries"
android:entryValues="@array/mousepad_acceleration_profile_values" android:entryValues="@array/mousepad_acceleration_profile_values"
android:key="@string/mousepad_acceleration_profile_key" android:key="@string/mousepad_acceleration_profile_key"
android:summary="%s" android:summary="%s"
android:title="@string/mousepad_acceleration_profile_settings_title" /> android:title="@string/mousepad_acceleration_profile_settings_title" />
<SwitchPreferenceCompat <SwitchPreferenceCompat
android:id="@+id/mousepad_scroll_preference" android:id="@+id/mousepad_scroll_preference"
android:defaultValue="false" android:defaultValue="false"
android:key="@string/mousepad_scroll_direction" android:key="@string/mousepad_scroll_direction"
android:title="@string/mousepad_scroll_direction_title" /> android:title="@string/mousepad_scroll_direction_title" />
<SwitchPreferenceCompat <SwitchPreferenceCompat
android:id="@+id/gyro_mouse_enabled" android:id="@+id/gyro_mouse_enabled"
android:defaultValue="false" android:defaultValue="false"
android:key="@string/gyro_mouse_enabled" android:key="@string/gyro_mouse_enabled"
android:title="Gyro mouse" /> android:title="@string/gyro_mouse_enabled_title"/>
<SeekBarPreference
android:id="@+id/mousepad_gyro_sensitivity"
android:defaultValue="false"
android:key="@string/gyro_mouse_sensitivity"
android:title="@string/gyro_mouse_sensitivity_title" android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<org.kde.kdeconnect.Helpers.LongSummaryPreferenceCategory <org.kde.kdeconnect.Helpers.LongSummaryPreferenceCategory
android:key="@string/sendkeystrokes_pref_category" android:key="@string/sendkeystrokes_pref_category"
android:summary="@string/sendkeystrokes_pref_category_summary" android:summary="@string/sendkeystrokes_pref_category_summary"
android:title="@string/sendkeystrokes_pref_category_title"> android:title="@string/sendkeystrokes_pref_category_title">
<SwitchPreferenceCompat <SwitchPreferenceCompat
android:id="@+id/pref_keystrokes_enable" android:id="@+id/pref_keystrokes_enable"
android:defaultValue="true" android:defaultValue="true"
android:key="@string/pref_sendkeystrokes_enabled" android:key="@string/pref_sendkeystrokes_enabled"
android:title="@string/sendkeystrokes_pref_enabled" android:title="@string/sendkeystrokes_pref_enabled"
android:summary="@string/sendkeystrokes_pref_enabled_summary" android:summary="@string/sendkeystrokes_pref_enabled_summary"
/> />
<SwitchPreferenceCompat <SwitchPreferenceCompat
android:id="@+id/pref_send_safe_text_immediately" android:id="@+id/pref_send_safe_text_immediately"
android:defaultValue="true" android:defaultValue="true"
android:key="@string/pref_send_safe_text_immediately" android:key="@string/pref_send_safe_text_immediately"
android:title="@string/sendkeystrokes_safe_text_enabled" android:title="@string/sendkeystrokes_safe_text_enabled"
android:summary="@string/sendkeystrokes_safe_text_enabled_summary" android:summary="@string/sendkeystrokes_safe_text_enabled_summary"
/> />
</org.kde.kdeconnect.Helpers.LongSummaryPreferenceCategory> </org.kde.kdeconnect.Helpers.LongSummaryPreferenceCategory>
</PreferenceScreen> </PreferenceScreen>

View File

@@ -50,6 +50,7 @@ public class MousePadActivity extends AppCompatActivity implements GestureDetect
private int scrollDirection = 1; private int scrollDirection = 1;
private boolean allowGyro = false; private boolean allowGyro = false;
private boolean gyroEnabled = false; private boolean gyroEnabled = false;
private int gyroscopeSensitivity = 100;
private boolean isScrolling = false; private boolean isScrolling = false;
private float accumulatedDistanceY = 0; private float accumulatedDistanceY = 0;
@@ -89,26 +90,26 @@ public class MousePadActivity extends AppCompatActivity implements GestureDetect
public void onSensorChanged(SensorEvent event) { public void onSensorChanged(SensorEvent event) {
float[] values = event.values; float[] values = event.values;
float X = -values[2] * 70 * mCurrentSensitivity * displayDpiMultiplier; float X = -values[2] * 70 * (gyroscopeSensitivity/100.0f);
float Y = -values[0] * 70 * mCurrentSensitivity * displayDpiMultiplier; float Y = -values[0] * 70 * (gyroscopeSensitivity/100.0f);
if (X < 0.25 && X > -0.25) { if (X < 0.25 && X > -0.25) {
X = 0; X = 0;
} else { } else {
X = X * mCurrentSensitivity * displayDpiMultiplier; X = X * (gyroscopeSensitivity/100.0f);
} }
if (Y < 0.25 && Y > -0.25) { if (Y < 0.25 && Y > -0.25) {
Y = 0; Y = 0;
} else { } else {
Y = Y * mCurrentSensitivity * displayDpiMultiplier; Y = Y * (gyroscopeSensitivity/100.0f);
} }
final float nX = X; final float nX = X;
final float nY = Y; final float nY = Y;
BackgroundService.RunWithPlugin(this, deviceId, MousePadPlugin.class, plugin -> { BackgroundService.RunWithPlugin(this, deviceId, MousePadPlugin.class, plugin -> {
plugin.sendMouseDelta(nX, nY); plugin.sendMouseDelta(nX, nY);
}); });
} }
@@ -143,7 +144,9 @@ public class MousePadActivity extends AppCompatActivity implements GestureDetect
} }
if ((prefs.getBoolean(getString(R.string.gyro_mouse_enabled), false)) && (mSensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE) != null)) { if ((prefs.getBoolean(getString(R.string.gyro_mouse_enabled), false)) && (mSensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE) != null)) {
allowGyro = true; allowGyro = true;
gyroscopeSensitivity = prefs.getInt(getString(R.string.gyro_mouse_sensitivity),100);
} }
String singleTapSetting = prefs.getString(getString(R.string.mousepad_single_tap_key), String singleTapSetting = prefs.getString(getString(R.string.mousepad_single_tap_key),
getString(R.string.mousepad_default_single)); getString(R.string.mousepad_default_single));
String doubleTapSetting = prefs.getString(getString(R.string.mousepad_double_tap_key), String doubleTapSetting = prefs.getString(getString(R.string.mousepad_double_tap_key),
@@ -476,4 +479,3 @@ public class MousePadActivity extends AppCompatActivity implements GestureDetect
return true; return true;
} }
} }