Commit Graph

65 Commits

Author SHA1 Message Date
Arpit Singh
68d5492baf Fix a crash in PhysicalKeyboardFragment
The crash is caused by using getContext() in a background thread. This CL changes it to use the context passed in as a parameter.

Bug: 373789342
Change-Id: Ia0197640b3d01cf305bfd9ebc8465b0c8e0dc016
Test: manual and presubmit
Flag: EXEMPT bugfix
2024-10-16 12:41:45 +00:00
shaoweishen
cffb21b17f [Physical Keyboard] Add Repeat key toggle
Add repeat key toggle under Physical keybaord setting.

Bug: 345399212
Test: atest SettingsRoboTests
Flag: com.android.input.flags.keyboard_repeat_keys
Change-Id: Ib986301d108b1ad30d96d7309189e9507d38c25a
2024-10-09 14:38:55 +00:00
shaoweishen
bf4442162d [Physical Keyboard][A11y Page] Add new Keyboard A11y page
Add new Keyboard A11y page, and controled with flag.
Demo video: b/345399212#comment6

Bug: 345399212
Test: atest SettingsRoboTests
Flag: com.android.settings.keyboard.keyboard_and_touchpad_a11y_new_page_enabled
Change-Id: I4bd45ff16c8abb33e1cf56c377ea86c20195fe26
2024-09-04 10:00:52 +00:00
Asmita Poddar
78b485a3bb Add Mouse keys A11Y settings to PK settings page
Add the mouse keys toggle in the Settings under
System > Keybord > Physical Keyboard > Mouse Keys.
The toggle is shown when a physical keyboard is connected.

DD: go/mouse-keys-android
Bug: 341799888
Flag: com.android.hardware.input.keyboard_a11y_mouse_keys
Test: manual
Steps:
1. Connect a physical keyboard
2. Toggle the mouse keys setting to switch on the feature.
3. Mouse keys is enabled.
4. Switch off the mouse keys toggle under the setting.
5. Mouse keys is disabled.

Change-Id: Ifda8c93fcc1f8b7c1fb2eccb7c91266360ff1fc8
2024-07-16 11:45:24 +00:00
Fan Wu
ec5df5cd1e Remove Use on-screen keyboard preference from Physical Keyboard page
Bug: 304460009
Flag: EXEMPT removing preference from xml
Test: on device
Change-Id: Ibb0517c5ffa4addb52f1b0469f30c5126bd5828a
2024-07-03 06:29:54 +00:00
shaoweishen
90e70b15d7 [Physical Keyboard] Clean up old ui and flag
Change-Id: I9423d0e9debcef37338e5733aab56b98920621e3

Test: n/a
Bug: 330517633
Change-Id: I485848f67e0eb3ab207413a6ed8f7de809f80c5c
2024-04-16 05:21:30 +00:00
Vaibhav Devmurari
d3dbe6ce23 Merge "Modify PK Settings page to make it more user friendly" into main 2024-03-05 10:53:48 +00:00
Vaibhav Devmurari
8754f114ac Modify PK Settings page to make it more user friendly
PK Settings page:
    - Show current PK layout selected for the current user profile and current IME language instead of a list of IMEs

PK layout mapping page:
    - Show IME name in header only if multiple active IMEs
    - Show the PK layout selection criteria (Automatic v/s User selected)

Bug: 325925410
Bug: 326195401
Test: manual
Change-Id: I93a2e169742a800fa116fa5d55e1a91e5548cebb
2024-03-04 10:55:47 +00:00
shaoweishen
a5f5ff4add [A11y Setting] Add keyboard keys preferences under A11y page
Bug: 325851068
Test: make RunSettingsRoboTests
Change-Id: Ic7eb1ec9e260a95d040bee784cbff479a4f087d0
2024-03-01 12:05:30 +00:00
Vaibhav Devmurari
bd26b3a43e Add Slow keys A11Y settings to PK settings page
Test: manual
Bug: 294546335
Change-Id: I9e20973e648d04b907e4d2225bd49b78e42d2089
2024-01-22 21:52:48 +00:00
shaoweishen
ff74d9db0b [Physical Keyboard Setting] Add log and null check
update getParcelable api usage, add null check and logging.

Bug: 317416208
Test: Verified on device
Change-Id: I125a6c9cdb5c86be7582ad5102257efb1fa6a1a4
2024-01-11 03:48:07 +00:00
Vaibhav Devmurari
315f2546fc Add A11Y settings for Bounce keys and Sticky keys
Test: manual
Bug: 294546335
Change-Id: I943300c31d0c8e142f64f084f4c65e05249a72ec
2023-12-28 21:02:11 +00:00
shaoweishen
365f55efc5 [PK Setting] update searchable if page is not visible
if PK setting is not available, also make it not searchable.

Test: verified on device
Bug: 301881819
Change-Id: I6e71634ce5ddc6d5db3d31f5614fef7ccabc6d3d
2023-11-29 09:02:08 +00:00
Daniel Huang
6b9d8c530f Revert "[PK settings] Remove metrics."
1. This reverts commit bdf89255a0.
2. Modify ACTION_USE_SPECIFIC_KEYBOARD to log vendor and product id.

Reason for revert: <Add metrics>
Test: atest

Change-Id: I187b990eec7dd0c0009f6c695f595d95420cb4ab
2023-11-02 17:10:21 +08:00
Chaohui Wang
15ca95a31b Migrate to TwoStatePreference
SwitchPreference and SwitchPreferenceCompat are both TwoStatePreference.

Using TwoStatePreference in Java will helps migration in the future.

Bug: 306771414
Test: manual - check Settings pages
Change-Id: I84e1d7b09451106797c2b23d127855c6976678ca
2023-10-23 09:28:57 +00:00
danielwbhuang
bdf89255a0 [PK settings] Remove metrics.
Remove all metrics by the metrics concil team's comment.

Bug: 296544040
Test: manual
Change-Id: I6f5292c686d3eaac641c6e7f7631152b34a0085b
2023-08-23 21:56:25 +08:00
Chaohui Wang
8e2ae547d6 Clean up FeatureFactory.getFeature()
Bug: 286764889
Test: m Settings
Change-Id: I7e472e6b0ca6b7a735c1b92742ddf06c545176fc
2023-08-08 08:41:48 +00:00
danielwbhuang
f76c528e5b Use EXTRA_ENTRYPOINT to log entry point for metrics
1. Extra name: EXTRA_ENTRYPOINT
2. Value: integer which is from SettingsEnums.EntryPointType
// access physical keyboard settings through keyboard configured notification entry point
KEYBOARD_CONFIGURED_NOTIFICATION = 0;
// access physical keyboard settings through keyboard settings entry point
KEYBOARD_SETTINGS = 1;
// access physical keyboard settings through connected devices settings entry point
CONNECTED_DEVICES_SETTINGS = 2;

Bug: 271391879
Test: manual and check the device log.
Change-Id: I0d5144790e184eb3374d4615d8874619c372742a
2023-07-06 21:02:30 +08:00
danielwbhuang
7aaff67c3c Log metrics for PK settings topics
1. Log metrics for touchpad settings
2. Log metrics for modifier keys remapping
3. Log metrics for physical keyboard settings

Bug: 271391879
Test: manual, atest
Change-Id: I3f948927719ec6fc3dca78cdcb995c3037d8f97f
2023-06-26 16:33:10 +08:00
danielwbhuang
6189f9fcbd Use FeatureProvider to provide the firmware update category.
1. Add KeyboardSettingsFeatureProvider in FeatureFactory.
2. Use KeyboardSettingsFeatureProvider to add firmware update UI.

Bug: 270114180
Test: manual, atest KeyboardSettingsFeatureProviderImplTest
Change-Id: I62ec7aff71dd5c0d496860363f2c5b3e992503ff
2023-05-18 17:24:43 +08:00
danielwbhuang
c92bd9789d [Fixed] UI issues after rotation
1. Use onSaveInstanceState to store the data.
2. Do not repeat to automatically select the keyboard layout.

Bug: 281481973
Bug: 281461013
Test: manual
Change-Id: Ieaa8fa3d2e6c22c39b34313d255e4f7869777a8b
2023-05-09 20:03:17 +08:00
danielwbhuang
cc749159df Open the settings page for a specific physical keyboard
1. Check open from a notification
2. Check open from Bluetooth entry
3. If the inputDeviceIdentifier is not null, open the next page
   directly.
4. Add extra to record the class of sender for the future metrics.

Demo: http://screencast/cast/NDU4MTYxOTIzMTg4MzI2NHxiYTQ0ODE5Ny02YQ

Bug: 269212353
Test: manual, atest
[Pass] atest KeyboardSettingsPreferenceControllerTest
[Pass] atest PhysicalKeyboardPreferenceControllerTest

Change-Id: Ie874003260896bbb949806623913e70486e4731d
2023-03-28 14:15:08 +00:00
danielwbhuang
1f3261467d Set preference visible to false when there is no keyboard.
1. Physical keyboard settings should only show up if at least one PK is connected.
2. Update tests.
3. Fix NullPointerException.

Bug: 269983475
Bug: 270109384
Bug: 271357910
Test: atest and manual
Change-Id: If7798587fb386dbf669fc249cab304d91a26879b
2023-03-03 18:16:55 +08:00
danielwbhuang
f43c358b50 Integrate UI with APIs for physical keyboard settgins.
Integrate UI with these APIs.
1. getKeyboardLayoutListForInputDevice
2. getKeyboardLayoutForInputDevice
3. setKeyboardLayoutForInputDevice

Demo: go/pk_with_final_api_demo

Bug: 247079681
Test: local test

Change-Id: I5478e2c344a47e692e7c524f8c1e96d9dda52796
2023-02-02 14:52:38 +08:00
danielwbhuang
85e0deb14d Implement modifier keys settings UI.
Add four modifier keys and one reset button.

Bug: 244535460
Test: local test
Change-Id: I45822b0d8391022c17439dc25ab86fe022e9f43f
2022-12-21 22:45:06 +08:00
danielwbhuang
1639782df6 Implement new keyboard settings UI.
Add enabled input method locales page
Add keyboard layout picker page
Add keyboard settings entry in BT device detail

Bug: 242680718
Test: local test
Change-Id: I07e068ecde553d394697b25cb573f806229f6f52
2022-12-13 10:47:07 +08:00
Wilson Wu
632fd43924 Fix show/hide virtual keyboard delay
The default observer delay is 10s for background
service. When a device connected to a hardware
keyboard, the delay makes soft keyboard visibility
is unsync after user switch the configuration.

Notify the SHOW_IME_WITH_HARD_KEYBOARD change
without delay.

Bug: 240210005
Test: Manual with bug steps
Change-Id: I7f8cb0df514fdea4ed0e092cd4466931ec200969
2022-11-10 15:16:33 +08:00
Edgar Wang
329b20a445 Add metrics log for special cases in Lanugages & About page
Bug: 137559984
Test: robotest

Change-Id: I007282d8c4d5f9c6168dd84f6feee7e237ec7c42
2020-04-30 17:19:52 +08:00
Raff Tsai
966fa01423 Use SettingsLib Indexable
- Use SettingsLib Indexable
- Directly use resource id in getPreferenceScreenResId

Bug: 135053028
Test: roboletric
Change-Id: I05f493b55e8b6e2091301e9231ba5615215618e6
2019-09-25 18:24:56 +08:00
Raff Tsai
ac3e0d0988 Directly use BaseIndexableProvider
- Add function getXmlResourceId, Fragments don't need to write
xml resource id twice.
- Remove getPreferenceControllers from Indexable.java. Because it will
move to SettingsLib later for other apps which don't need this function

Bug: 135053028
Test: robolectric
Change-Id: I1e74519aecdea3dde64a5aea79f08d766dbc0003
2019-09-24 00:35:52 +08:00
Fan Zhang
31b210017b Migrate all MetricsProto enums to SettingsEnums
Bug: 122855168
Test: rebuild
Change-Id: I962d9a71179f86b7cae9dc5e9a00e0aa1557dc76
2019-01-17 14:55:42 -08:00
Fan Zhang
23f8d59d02 Sort imports
Having consistent import order will reduce chance of merge
conflict between internal and external master

Test: rebuild
Change-Id: I0b1a170967ddcce7f388603fd521f6ed1eeba30b
2018-08-28 22:13:15 +00:00
tmfang
27c84de325 Settings Fragment Migration (Build pass app)
This patch focused on fixing compile errors and some runtime errors.

Test: We can't test it now. But we will have an integration test later.
Bug: 110259478
Change-Id: I16c471ddcd0fa1460c665b7f74d86fcace5ee67b
2018-07-11 18:24:51 -07:00
Fan Zhang
78ea7da54c Misc tweaks to Indexable usage and tests.
- Make SettingsPreferenceFragment implement Indexable directly
- Add existing fragments that are SettingsPrefFragment but not Indexable
  to grandfather list.
- Fix "font size" fragment so it shows up in search properly.
- Remove duplicates for "lock screen display", "Screen saver".

Bug: 70720645
Test: robotests
Change-Id: I44ce0cac0fdf5e882b315861bb4bebc45dbe01e6
2018-07-02 16:46:23 -07:00
Fan Zhang
c7162cd24d Reorder and clean up imports.
Test: rebuild
Change-Id: I178485c84ae7146f991fd77b6d7504b029942a68
2018-06-18 15:45:09 -07:00
Aurimas Liutikas
e0069d332d Migrate Settings to androidx.
Test: make Settings
Bug: 76692459
Change-Id: I941dea40562170649bf056e675cc32e5163c0e39
2018-04-20 12:52:29 -07:00
Yohei Yukawa
9f172540b1 Remove the dependency on InputMethodSettings
InputMethodUtils.InputMethodSetting is a quite complicated inernal
class of InputMethodUtils and PhysicalKeyboardFragment's depending on
it just for getting/setting SHOW_IME_WITH_HARD_KEYBOARD is overkill.

With this CL, PhysicalKeyboardFragment just uses Secure Settings APIs
directly.

There should be no user-visible behavior change.

Bug: 77730201
Test: Manually verified as follows:
 1. Open system settings.
 2. Tap "System" -> "Languages & input" -> "Physical keyboard"
 3. Make sure "Show virtual keyboard" is unchecked
 4. Make sure the following command shows 0
      adb shell settings get secure show_ime_with_hard_keyboard
 5. Check "Show virtual keyboard"
 6. Make sure the following command shows 1
      adb shell settings get secure show_ime_with_hard_keyboard
 7. Run the following command
      adb shell settings put secure show_ime_with_hard_keyboard 0
 8. Make sure "Show virtual keyboard" is chenged to unchecked
Change-Id: I956da5dad27313d6edf141f2320bb0a7954fbbea
2018-04-13 18:13:09 -07:00
Tony Mantler
0fcd6cbaa8 Autogenerate SearchIndexableResources subclass
Bug: 77148954
Test: RunSettingsLibRoboTests RunSettingsRoboTests RunSettingsGoogleRoboTests RunArcSettingsRoboTests
Change-Id: I842c42c55014c3310070ef22bd4f0d9a70dfd804
2018-04-03 10:26:55 -07:00
Yohei Yukawa
690f103ca5 Logically revert "Directly show the layout selection screen."
This is logical revert of a CL [1] that was recently re-introduced as
part of my recent CL [2].

Reason for revert:
Directly showing the layout selection screen when there is no hardware
keyboard is selected yet is not something people had been familiar
with.

That behavior had been enabled only in a short period during Android N
development cycle and was never enabled in most of production builds.
To avoid confusions, let's revert back to the true Android M behavior
by logically reverting that change.

 [1]: I4483dfc89afc8d148b2cfa7c6a5f66d2a02f712a
      17b6319884
 [2]: I7a2ed6dd39dcd8207d3d94e12cd01d5d67ba4bb5
      7129b374bb

Change-Id: If0529e20cbff432d38d9b2dd74eeb3af0da5baf1
Bug: 66498367
Fix: 75318417
Test: Manually verified
2018-03-19 19:20:29 -07:00
Yohei Yukawa
7129b374bb Reenable pre-N style hard keyboard layout settings
This CL logically reverts Settings app changes for Bug 25752812, which
aimed to improve UX by tightly integrating physical keyboard layout
with input method subtype.

What went wrong is that the concept of input method subtype is not
widely accepted by the ecosystem actually.  Until we figoure out any
other better way here, let's revert back to the good old way that
enables users to specify multiple keyboard layouts per physical
keyboard device, not one layout per one input method subtype.

Note that we cannot simply revert the CL that originally introduced
the new flow [1] because it was indeed a huge CL that also touched IME
settings, which we want to continue using.  In that sense, this CL is
a kind of re-implementation of the previous style on top of the recent
language settings flow.

Note also that a fix [2] fox Bug 25062009 was also ported from
previous InputMethodAndLanguageSetting to
KeyboardLayoutPickerFragment.

 [1]: I728d7ee185827ed328c16cb7abce244557a26518
      976bb3f459
 [2]: I4483dfc89afc8d148b2cfa7c6a5f66d2a02f712a
      17b6319884

Fix: 66498367
Test: make -j RunSettingsRoboTests
Test: Manually done with two Bluetooth keyboards
Change-Id: I7a2ed6dd39dcd8207d3d94e12cd01d5d67ba4bb5
2018-03-09 01:54:55 +00:00
Fan Zhang
e3535d9998 Delete DynamicindexableContentMonitor & all refs to it
Convert input device search into a search query loader

And remove old logic from DynamicIndexableContentMonitor

Change-Id: If652b1ea7c8add9185bbd025055e14925d3a8eec
Bug: 64310452
Bug: 63831980
Test: robotests
2017-08-09 17:27:02 -07:00
Fan Zhang
2a9255b33c Misc fixes for items under system setting
- Show summary under virtual keyboard: list all avaiable keyboards
- Set about phone subtext to device model string.
- Update DND Suggestion text

Change-Id: I20acffcf691d1354c7636f5851b376099844700f
Fix: 35959817
Fix: 36395109
Test: robotests
2017-03-25 02:43:23 +00:00
Tony Mantler
4d27b2ce5b Move InputMethodAndSubtypeEnabler to SettingsLib and port to TV
Bug: 35315463
Test: adb shell am start -a android.settings.INPUT_METHOD_SUBTYPE_SETTINGS
Change-Id: I17e6e64ff2c01577d4036bccafe7d0b4ad1d5ca5
2017-02-17 14:04:40 -08:00
Tadashi G. Takaoka
7bbc632bfb Move physical keyboard search landing page to its Fragment
This CL moves the code building index of physical keyboards from
InputMethodAndLanguageSettings to PhysicalKeyboardFragment, so that a
search landing page becomes PhysicalKeyboardFragment as expected.

Bug: 32643633
Test: Connecting/Disconnecting Anker bluetooth keyboard while Settings
      app is/isn't running, the search Anker and verify landing page
      is PhysicalKeyboardFragment.
Test: Update robolectric DynamicIndexableContentMonitorTest.

Change-Id: I51f308ada74966a96c258f8ef50a9b4fc7bc6635
2017-01-10 15:56:45 +09:00
Tamas Berghammer
265d3c2a0c Update package names to work with the proto3 compiler
Bug: b/28974522
Change-Id: I5f3adf4946ee4ba1e09e4f40afe83c151405972a
2016-11-08 14:06:17 +00:00
Fan Zhang
aceee52a8b Remove dead code KeyboardLayoutPickerFragment.
Bug: 32642706
Test: compiles
Change-Id: I02b7abed470a813bff13fe9d71fcf870a47de6b3
2016-11-04 14:22:41 -07:00
Fan Zhang
6507613ebc Log visibility change for all fragments.
Bug: 30681771
Test: SettingsUnitTests

Refactor visibility logging from InstrumentedFragment into a mixin. And
apply mixin in remaining fragments.

Change-Id: Ibbb59904336254a3e4bb9e8c7d0b36e5a6bc2622
2016-08-18 14:04:13 -07:00
Phil Weaver
fc3352e585 Fix return when virtual keyboard setting changes.
am: 3587914cef

Change-Id: I29b64c04eeb036f92ff937b70e247aaf0b2eb817
2016-07-25 20:34:41 +00:00
Abodunrinwa Toki
e7b3ad6726 DO NOT MERGE: InputSettings: Fix incorrect keyboard list on rotation.
This ports I1e4035f4dcff33e6b9a42d448303e962bd87c14b to MR1 dev.

Bug: 28182232
Change-Id: I292b00a21eb80577dbfec6a13f57b326571aefc7
2016-07-18 12:03:38 +01:00
Phil Weaver
3587914cef Fix return when virtual keyboard setting changes.
The OnPreferenceChangeListener for the preference to show
the virtual keyboard was returning false, indicating that the
new preference was not to be persisted, even though it was
persisting the setting. That caused the accessibility
framework not to be informed of the new value, which led
TalkBack to speak the old value rather than the new one.

Bug: 30140972
Change-Id: I02b7dc1db52cb7646650e6f2e49a1e15c2233897
2016-07-15 12:54:45 -07:00