nx: Squashed restoration of RSMouse notifications
This is a squashed revert restoring the following: ``` commit 691e69edf4a060b9228954b4c9674a9b013bef4e Author: Thomas Makin <halorocker89@gmail.com> Date: Sun Jan 11 01:46:28 2026 +0000 Revert "devicesettings: add rsmouse feature notif" Revert submission 419502 Reason for revert: need sepolicy Reverted changes: /q/submissionid:419502 Change-Id: Iaa64bce011731cf685480078d82e8933dbe4c28a commit cfb7bf60b35eda85c22148b66daa739488a06feb Author: Thomas Makin <halorocker89@gmail.com> Date: Sun Jan 11 01:46:28 2026 +0000 Revert "devicesettings: update androidx components" Revert submission 419502 Reason for revert: need sepolicy Reverted changes: /q/submissionid:419502 Change-Id: I8d9c7fb496bc3e9c30e65cd3cb586f6c3327d6ae commit e59af96db10855d0414cbb60c799caa192cf0887 Author: Thomas Makin <halorocker89@gmail.com> Date: Sun Jan 11 01:46:28 2026 +0000 Revert "devicesettings: add rsmouse settings" Revert submission 419502 Reason for revert: need sepolicy Reverted changes: /q/submissionid:419502 Change-Id: I3325fa5b6124dcd3c0bb0b9bf2cc8ecc3a00e3f4 ``` Change-Id: I7d1e56a41b999fb09db5b0c48d46ad150eaa3cfd
This commit is contained in:
1 parent
5401fecdd4
commit
2aaadf25a0
9 files changed
+193
-11
No files matched your search
@@ -6,6 +6,7 @@
|
||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
||||
<uses-permission android:name="android.permission.CONTROL_KEYGUARD" />
|
||||
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
|
||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
|
||||
<uses-feature
|
||||
android:name="android.software.leanback"
|
||||
android:required="false" />
|
||||
|
||||
@@ -18,4 +18,8 @@
|
||||
<integer name="mode_confirmation_wait_time">15</integer>
|
||||
<integer name="max_brightness">255</integer>
|
||||
<integer name="min_brightness">255</integer>
|
||||
<integer name="min_rsmouse_sense">0</integer>
|
||||
<integer name="max_rsmouse_sense">50</integer>
|
||||
<integer name="min_rsmouse_dead">0</integer>
|
||||
<integer name="max_rsmouse_dead">50</integer>
|
||||
</resources>
|
||||
@@ -17,6 +17,7 @@
|
||||
<resources>
|
||||
<string name="display_panel_title">Switch Configuration</string>
|
||||
<string name="display_panel_summary">Adjust docking, performance, and controller settings</string>
|
||||
<string name="notif_provider_desc">Provides important info about new features</string>
|
||||
<string name="cust_category_title">Customization</string>
|
||||
<string name="bright_pref_title">Adjust System Brightness</string>
|
||||
<string name="perf_setting_title">Performance Mode</string>
|
||||
@@ -31,7 +32,13 @@
|
||||
<string name="joycon_category_title">Nintendo Controller Customization</string>
|
||||
<string name="analog_title">Analog Trigger Emulation</string>
|
||||
<string name="analog_summary">Enable/disable L2/R2 analog trigger emulation on Nintendo Controllers</string>
|
||||
<string name="rsmouse_title">Right Stick Mouse</string>
|
||||
<string name="rsmouse_summary">Use the right stick to control a virtual mouse pointer. Click with triggers, toggle usability with screenshot button</string>
|
||||
<string name="rsmouse_sense_title">Right Stick Mouse Sensitivity</string>
|
||||
<string name="rsmouse_dead_title">Right Stick Mouse Deadzone</string>
|
||||
<string name="disable_internal_on_external_connected_title">Turn off when an external display is connected</string>
|
||||
<string name="disable_internal_on_external_connected_summary_on">The internal panel will be turned off when an external display is connected</string>
|
||||
<string name="disable_internal_on_external_connected_summary_off">Both the internal panel and external display will show the same image</string>
|
||||
<string name="rsmouse_notif_title">Right Stick Mouse Now Enabled by Default</string>
|
||||
<string name="rsmouse_notif_content">Click with triggers, toggle mouse with screenshot button</string>
|
||||
</resources>
|
||||
@@ -23,7 +23,7 @@
|
||||
android:key="customization_category"
|
||||
android:title="@string/cust_category_title">
|
||||
|
||||
<SwitchPreference
|
||||
<SwitchPreferenceCompat
|
||||
android:key="perf_mode"
|
||||
android:title="@string/perf_setting_title"
|
||||
android:summary="@string/perf_setting_summary" />
|
||||
@@ -33,10 +33,27 @@
|
||||
android:key="joycon_category"
|
||||
android:title="@string/joycon_category_title">
|
||||
|
||||
<SwitchPreference
|
||||
<SwitchPreferenceCompat
|
||||
android:key="joycon_analog"
|
||||
android:title="@string/analog_title"
|
||||
android:summary="@string/analog_summary" />
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
android:key="joycon_rsmouse"
|
||||
android:title="@string/rsmouse_title"
|
||||
android:summary="@string/rsmouse_summary" />
|
||||
|
||||
<SeekBarPreference
|
||||
android:key="joycon_rsmouse_sense"
|
||||
android:title="@string/rsmouse_sense_title"
|
||||
android:max="@integer/max_rsmouse_sense"
|
||||
android:min="@integer/min_rsmouse_sense" />
|
||||
|
||||
<SeekBarPreference
|
||||
android:key="joycon_rsmouse_deadzone"
|
||||
android:title="@string/rsmouse_dead_title"
|
||||
android:max="@integer/max_rsmouse_dead"
|
||||
android:min="@integer/min_rsmouse_dead" />
|
||||
</PreferenceCategory>
|
||||
|
||||
</PreferenceScreen>
|
||||
@@ -26,7 +26,7 @@
|
||||
android:max="@integer/max_brightness"
|
||||
android:min="@integer/min_brightness" />
|
||||
|
||||
<SwitchPreference
|
||||
<SwitchPreferenceCompat
|
||||
android:key="perf_mode"
|
||||
android:title="@string/perf_setting_title"
|
||||
android:summary="@string/perf_setting_summary" />
|
||||
@@ -36,10 +36,27 @@
|
||||
android:key="joycon_category"
|
||||
android:title="@string/joycon_category_title">
|
||||
|
||||
<SwitchPreference
|
||||
<SwitchPreferenceCompat
|
||||
android:key="joycon_analog"
|
||||
android:title="@string/analog_title"
|
||||
android:summary="@string/analog_summary" />
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
android:key="joycon_rsmouse"
|
||||
android:title="@string/rsmouse_title"
|
||||
android:summary="@string/rsmouse_summary" />
|
||||
|
||||
<SeekBarPreference
|
||||
android:key="joycon_rsmouse_sense"
|
||||
android:title="@string/rsmouse_sense_title"
|
||||
android:max="@integer/max_rsmouse_sense"
|
||||
android:min="@integer/min_rsmouse_sense" />
|
||||
|
||||
<SeekBarPreference
|
||||
android:key="joycon_rsmouse_deadzone"
|
||||
android:title="@string/rsmouse_dead_title"
|
||||
android:max="@integer/max_rsmouse_dead"
|
||||
android:min="@integer/min_rsmouse_dead" />
|
||||
</PreferenceCategory>
|
||||
|
||||
</PreferenceScreen>
|
||||
@@ -27,8 +27,14 @@ import android.os.ServiceManager;
|
||||
import android.os.SystemProperties;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.core.app.NotificationCompat;
|
||||
import androidx.core.app.NotificationChannelCompat;
|
||||
import androidx.core.app.NotificationManagerCompat;
|
||||
|
||||
public class BootCompletedReceiver extends BroadcastReceiver {
|
||||
private static final String TAG = BootCompletedReceiver.class.getSimpleName();
|
||||
private static final String SEEN_RSMOUSE_PROP = "persist.devicesettingsnx.hasseenrsmouse";
|
||||
private static final String CHANNEL_ID = "switchconfig";
|
||||
private IPower mPerfMgr;
|
||||
|
||||
@Override
|
||||
@@ -63,5 +69,31 @@ public class BootCompletedReceiver extends BroadcastReceiver {
|
||||
|
||||
DisplayUtils.setPanelColorMode(panelMode);
|
||||
}
|
||||
|
||||
if (!SystemProperties.getBoolean(SEEN_RSMOUSE_PROP, false)) {
|
||||
NotificationChannelCompat channel = new NotificationChannelCompat.Builder(
|
||||
CHANNEL_ID,
|
||||
NotificationManagerCompat.IMPORTANCE_MAX
|
||||
)
|
||||
.setName(context.getString(R.string.display_panel_title))
|
||||
.setDescription(context.getString(R.string.notif_provider_desc))
|
||||
.setShowBadge(true)
|
||||
.build();
|
||||
|
||||
NotificationManagerCompat notificationManager =
|
||||
NotificationManagerCompat.from(context);
|
||||
notificationManager.createNotificationChannel(channel);
|
||||
|
||||
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, CHANNEL_ID)
|
||||
.setSmallIcon(R.drawable.ic_settings_additional_buttons)
|
||||
.setContentTitle(context.getString(R.string.rsmouse_notif_title))
|
||||
.setContentText(context.getString(R.string.rsmouse_notif_content))
|
||||
.setCategory(NotificationCompat.CATEGORY_SYSTEM)
|
||||
.setPriority(NotificationCompat.PRIORITY_MAX)
|
||||
.extend(new NotificationCompat.TvExtender().setChannelId(CHANNEL_ID));
|
||||
SystemProperties.set(SEEN_RSMOUSE_PROP, "true");
|
||||
|
||||
notificationManager.notify(1, builder.build());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -16,7 +16,6 @@
|
||||
|
||||
package org.lineageos.settings.device;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
@@ -25,6 +24,8 @@ import android.os.RemoteException;
|
||||
import android.os.SystemProperties;
|
||||
import android.util.Log;
|
||||
import android.view.MenuItem;
|
||||
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.preference.PreferenceFragmentCompat;
|
||||
import androidx.preference.PreferenceManager;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
|
||||
+3
-1
@@ -18,7 +18,6 @@ package org.lineageos.settings.device;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
@@ -28,6 +27,7 @@ import android.os.SystemProperties;
|
||||
import android.util.Log;
|
||||
import android.view.MenuItem;
|
||||
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.leanback.preference.LeanbackPreferenceFragmentCompat;
|
||||
import androidx.leanback.preference.LeanbackSettingsFragmentCompat;
|
||||
import androidx.preference.DialogPreference;
|
||||
@@ -121,6 +121,8 @@ public class DisplaySettingsFragmentLeanback extends LeanbackSettingsFragmentCom
|
||||
if (!sku.equals("vali")) {
|
||||
commonPrefs.createDisplaySettings(preferenceScreen);
|
||||
}
|
||||
|
||||
commonPrefs.createJoyConSettings(preferenceScreen);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -6,7 +6,6 @@ import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
@@ -19,6 +18,7 @@ import android.os.ServiceManager;
|
||||
import android.os.SystemProperties;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.preference.ListPreference;
|
||||
import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceCategory;
|
||||
@@ -26,7 +26,8 @@ import androidx.preference.PreferenceFragmentCompat;
|
||||
import androidx.preference.PreferenceGroup;
|
||||
import androidx.preference.PreferenceManager;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
import androidx.preference.SwitchPreference;
|
||||
import androidx.preference.SeekBarPreference;
|
||||
import androidx.preference.SwitchPreferenceCompat;
|
||||
|
||||
import vendor.nvidia.hardware.graphics.display.V1_0.HwcSvcDisplay;
|
||||
import vendor.nvidia.hardware.graphics.display.V1_0.HwcSvcDisplayMode;
|
||||
@@ -38,6 +39,16 @@ public class DisplaySettingsPrefsCommon {
|
||||
private static final String TAG = DisplaySettingsPrefsCommon.class.getSimpleName();
|
||||
public static final String JOYCOND_ANALOG_PROP = "persist.vendor.joycond.analog";
|
||||
public static final String JOYCOND_COMBINED_PROP = "persist.vendor.joycond.combined";
|
||||
public static final String JOYCOND_RSMOUSE_PROP = "persist.vendor.joycond.rsmouse";
|
||||
public static final String JOYCOND_SENSE_X_PROP = "persist.vendor.joycond.mouse_sense.x";
|
||||
public static final String JOYCOND_SENSE_Y_PROP = "persist.vendor.joycond.mouse_sense.y";
|
||||
public static final String JOYCOND_DEAD_X_PROP = "persist.vendor.joycond.mouse_dead.x";
|
||||
public static final String JOYCOND_DEAD_Y_PROP = "persist.vendor.joycond.mouse_dead.y";
|
||||
|
||||
public static final float JOYCON_SENSE_MULTIPLIER = 100000f;
|
||||
public static final String JOYCON_SENSE_DEFAULT = "0.0003";
|
||||
public static final float JOYCON_DEAD_MULTIPLIER = 1f;
|
||||
public static final String JOYCON_DEAD_DEFAULT = "1";
|
||||
|
||||
private PreferenceFragmentCompat fragment;
|
||||
private Activity activity;
|
||||
@@ -66,6 +77,9 @@ public class DisplaySettingsPrefsCommon {
|
||||
public void createJoyConSettings(PreferenceScreen preferenceScreen) {
|
||||
int index;
|
||||
boolean analog = true;
|
||||
boolean rsmouse = true;
|
||||
float mouseSense = 0;
|
||||
float mouseDead = 0;
|
||||
final List<KeyMap> mapping;
|
||||
|
||||
if (mJoycond == null) {
|
||||
@@ -74,7 +88,7 @@ public class DisplaySettingsPrefsCommon {
|
||||
}
|
||||
|
||||
// Analog trigger preference
|
||||
SwitchPreference analogPref = fragment.findPreference("joycon_analog");
|
||||
SwitchPreferenceCompat analogPref = fragment.findPreference("joycon_analog");
|
||||
|
||||
if (analogPref == null) {
|
||||
Log.e(TAG, "No preference with key joycon_analog found! Skipping JoyCon settings creation...");
|
||||
@@ -106,6 +120,92 @@ public class DisplaySettingsPrefsCommon {
|
||||
}
|
||||
});
|
||||
|
||||
// RSMouse preference
|
||||
SwitchPreferenceCompat rsmousePref = fragment.findPreference("joycon_rsmouse");
|
||||
|
||||
if (rsmousePref == null) {
|
||||
Log.e(TAG, "No preference with key joycon_rsmouse found! " +
|
||||
"Skipping rest of JoyCon settings creation...");
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
rsmouse = mJoycond.getRsmouse();
|
||||
} catch (RemoteException e) {
|
||||
Log.w(TAG, "Could not get rsmouse preference! Inferring from prop...");
|
||||
rsmouse = SystemProperties.getBoolean(JOYCOND_RSMOUSE_PROP, true);
|
||||
}
|
||||
|
||||
Log.i(TAG, "Joycond current rsmouse value: " + String.valueOf(rsmouse));
|
||||
rsmousePref.setChecked(analog);
|
||||
|
||||
rsmousePref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
||||
@Override
|
||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||
try {
|
||||
mJoycond.setRsmouse((boolean) newValue);
|
||||
} catch (RemoteException e) {
|
||||
Log.w(TAG, "Could not set rsmouse preference! Setting prop and deferring...");
|
||||
SystemProperties.set(JOYCOND_RSMOUSE_PROP, (boolean) newValue ? "1" : "0");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
// RSMouse sense preference
|
||||
SeekBarPreference mouseSensePref = fragment.findPreference("joycon_rsmouse_sense");
|
||||
|
||||
if (mouseSensePref == null) {
|
||||
Log.e(TAG, "No preference with key joycon_rsmouse_sense found! " +
|
||||
"Skipping rest of JoyCon settings creation...");
|
||||
return;
|
||||
}
|
||||
|
||||
// assume X and Y are same, go by X otherwise
|
||||
mouseSense = Float.parseFloat(
|
||||
SystemProperties.get(JOYCOND_SENSE_X_PROP, JOYCON_SENSE_DEFAULT));
|
||||
|
||||
Log.i(TAG, "Joycond current sense (x) value: " + String.valueOf(mouseSense));
|
||||
mouseSensePref.setDefaultValue((int)(JOYCON_SENSE_MULTIPLIER * mouseSense));
|
||||
mouseSensePref.setUpdatesContinuously(true);
|
||||
mouseSensePref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
||||
@Override
|
||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||
String sense = String.valueOf((Integer)newValue / JOYCON_SENSE_MULTIPLIER);
|
||||
Log.i(TAG, "Setting Joycond sense value: " + sense);
|
||||
SystemProperties.set(JOYCOND_SENSE_X_PROP, sense);
|
||||
SystemProperties.set(JOYCOND_SENSE_Y_PROP, sense);
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
// RSMouse dead preference
|
||||
SeekBarPreference mouseDeadPref = fragment.findPreference("joycon_rsmouse_deadzone");
|
||||
|
||||
if (mouseDeadPref == null) {
|
||||
Log.e(TAG, "No preference with key joycon_rsmouse_deadzone found! " +
|
||||
"Skipping rest of JoyCon settings creation...");
|
||||
return;
|
||||
}
|
||||
|
||||
// assume X and Y are same, go by X otherwise
|
||||
mouseDead = Float.parseFloat(
|
||||
SystemProperties.get(JOYCOND_DEAD_X_PROP, JOYCON_DEAD_DEFAULT));
|
||||
|
||||
Log.i(TAG, "Joycond current dead (x) value: " + String.valueOf(mouseDead));
|
||||
mouseDeadPref.setDefaultValue((int)mouseDead);
|
||||
mouseDeadPref.setUpdatesContinuously(true);
|
||||
mouseDeadPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
||||
@Override
|
||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||
String dead = String.valueOf((Integer)newValue);
|
||||
Log.i(TAG, "Setting Joycond dead value: " + dead);
|
||||
SystemProperties.set(JOYCOND_DEAD_X_PROP, dead);
|
||||
SystemProperties.set(JOYCOND_DEAD_Y_PROP, dead);
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
// Controller mapping
|
||||
|
||||
try {
|
||||
@@ -196,7 +296,7 @@ public class DisplaySettingsPrefsCommon {
|
||||
}
|
||||
|
||||
public void createPerfSettings() {
|
||||
SwitchPreference perfPreference = fragment.findPreference("perf_mode");
|
||||
SwitchPreferenceCompat perfPreference = fragment.findPreference("perf_mode");
|
||||
|
||||
perfPreference.setOnPreferenceChangeListener(
|
||||
new Preference.OnPreferenceChangeListener() {
|
||||
@@ -405,7 +505,8 @@ public class DisplaySettingsPrefsCommon {
|
||||
|
||||
// Show checkbox to disable internal panel when an external display is connected
|
||||
if (display == HwcSvcDisplay.HWC_SVC_DISPLAY_PANEL) {
|
||||
SwitchPreference disableInternalOnExternalConnectedPreference = new SwitchPreference(category.getContext());
|
||||
SwitchPreferenceCompat disableInternalOnExternalConnectedPreference =
|
||||
new SwitchPreferenceCompat(category.getContext());
|
||||
disableInternalOnExternalConnectedPreference
|
||||
.setTitle(R.string.disable_internal_on_external_connected_title);
|
||||
disableInternalOnExternalConnectedPreference
|
||||
|
||||
Reference in new issue
Block a user