Merge "Import translations. DO NOT MERGE ANYWHERE" into main
diff --git a/aconfig/catalyst/lockscreen.aconfig b/aconfig/catalyst/lockscreen.aconfig
new file mode 100644
index 0000000..9a84f66
--- /dev/null
+++ b/aconfig/catalyst/lockscreen.aconfig
@@ -0,0 +1,9 @@
+package: "com.android.settings.flags"
+container: "system"
+
+flag {
+  name: "catalyst_lockscreen_from_display_settings"
+  namespace: "android_settings"
+  description: "Flag for Display & touch > Lock screen"
+  bug: "323791114"
+}
diff --git a/aconfig/catalyst/network_and_internet.aconfig b/aconfig/catalyst/network_and_internet.aconfig
index a5183f3..94faaef 100644
--- a/aconfig/catalyst/network_and_internet.aconfig
+++ b/aconfig/catalyst/network_and_internet.aconfig
@@ -9,6 +9,13 @@
 }
 
 flag {
+  name: "catalyst_internet_settings"
+  namespace: "android_settings"
+  description: "Flag for Internet"
+  bug: "323791114"
+}
+
+flag {
   name: "catalyst_mobile_network_list"
   namespace: "android_settings"
   description: "Flag for SIMs"
diff --git a/aconfig/settings_display_flag_declarations.aconfig b/aconfig/settings_display_flag_declarations.aconfig
index 9fe587b..a85d967 100644
--- a/aconfig/settings_display_flag_declarations.aconfig
+++ b/aconfig/settings_display_flag_declarations.aconfig
@@ -8,3 +8,10 @@
     bug: "315937886"
 }
 
+flag {
+    name: "screen_timeout_settings_dashboard"
+    namespace: "android_settings"
+    description: "Use dashboard style settings"
+    bug: "368359967"
+}
+
diff --git a/res-product/values-es-rUS/strings.xml b/res-product/values-es-rUS/strings.xml
index b3ab141..fdf6e0d 100644
--- a/res-product/values-es-rUS/strings.xml
+++ b/res-product/values-es-rUS/strings.xml
@@ -356,7 +356,7 @@
     <string name="auto_rotate_summary_a11y" product="tablet" msgid="4708833814245913981">"Cuando muevas la tablet entre el modo vertical y el horizontal"</string>
     <string name="daltonizer_feature_summary" product="default" msgid="3940653889277283702">"Ajusta cómo se muestran los colores en tu teléfono"</string>
     <string name="daltonizer_feature_summary" product="tablet" msgid="4006596881671077623">"Ajusta cómo se muestran los colores en tu tablet"</string>
-    <string name="spatial_audio_speaker" product="default" msgid="7148176677982615792">"Altavoces del teléfono"</string>
+    <string name="spatial_audio_speaker" product="default" msgid="7148176677982615792">"Bocinas del teléfono"</string>
     <string name="spatial_audio_speaker" product="tablet" msgid="5452617980485166854">"Bocinas de la tablet"</string>
     <string name="spatial_audio_speaker" product="device" msgid="6204289590128303795">"Altavoces del dispositivo"</string>
     <string name="audio_sharing_dialog_share_content" product="default" msgid="708698992481271057">"La música y los videos de este teléfono se reproducirán en ambos pares de auriculares"</string>
diff --git a/res/drawable-night/mouse_keys_click.xml b/res/drawable-night/mouse_keys_click.xml
new file mode 100644
index 0000000..e5e8d5a
--- /dev/null
+++ b/res/drawable-night/mouse_keys_click.xml
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2024 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="348dp"
+        android:height="160dp"
+        android:viewportWidth="348"
+        android:viewportHeight="160">
+    <path
+        android:pathData="M6,14C6,9.58 9.58,6 14,6H334C338.42,6 342,9.58 342,14V146C342,150.42 338.42,154 334,154H14C9.58,154 6,150.42 6,146V14Z"
+        android:fillColor="#171216"/>
+    <path
+        android:pathData="M14,16C14,14.9 14.9,14 16,14H30.23C31.34,14 32.23,14.9 32.23,16V32C32.23,33.1 31.34,34 30.23,34H16C14.9,34 14,33.1 14,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M36.23,16C36.23,14.9 37.13,14 38.23,14H52.46C53.57,14 54.46,14.9 54.46,16V32C54.46,33.1 53.57,34 52.46,34H38.23C37.13,34 36.23,33.1 36.23,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M58.46,16C58.46,14.9 59.36,14 60.46,14H74.69C75.8,14 76.69,14.9 76.69,16V32C76.69,33.1 75.8,34 74.69,34H60.46C59.36,34 58.46,33.1 58.46,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M80.69,16C80.69,14.9 81.59,14 82.69,14H96.92C98.03,14 98.92,14.9 98.92,16V32C98.92,33.1 98.03,34 96.92,34H82.69C81.59,34 80.69,33.1 80.69,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M102.92,16C102.92,14.9 103.82,14 104.92,14H119.15C120.26,14 121.15,14.9 121.15,16V32C121.15,33.1 120.26,34 119.15,34H104.92C103.82,34 102.92,33.1 102.92,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M125.15,16C125.15,14.9 126.05,14 127.15,14H141.38C142.49,14 143.38,14.9 143.38,16V32C143.38,33.1 142.49,34 141.38,34H127.15C126.05,34 125.15,33.1 125.15,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M147.38,16C147.38,14.9 148.28,14 149.38,14H163.62C164.72,14 165.62,14.9 165.62,16V32C165.62,33.1 164.72,34 163.62,34H149.38C148.28,34 147.38,33.1 147.38,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M169.62,16C169.62,14.9 170.51,14 171.62,14H185.85C186.95,14 187.85,14.9 187.85,16V32C187.85,33.1 186.95,34 185.85,34H171.62C170.51,34 169.62,33.1 169.62,32V16Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M191.85,16C191.85,14.9 192.74,14 193.85,14H208.08C209.18,14 210.08,14.9 210.08,16V32C210.08,33.1 209.18,34 208.08,34H193.85C192.74,34 191.85,33.1 191.85,32V16Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M214.08,16C214.08,14.9 214.97,14 216.08,14H230.31C231.41,14 232.31,14.9 232.31,16V32C232.31,33.1 231.41,34 230.31,34H216.08C214.97,34 214.08,33.1 214.08,32V16Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M236.31,16C236.31,14.9 237.2,14 238.31,14H252.54C253.64,14 254.54,14.9 254.54,16V32C254.54,33.1 253.64,34 252.54,34H238.31C237.2,34 236.31,33.1 236.31,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M258.54,16C258.54,14.9 259.43,14 260.54,14H274.77C275.87,14 276.77,14.9 276.77,16V32C276.77,33.1 275.87,34 274.77,34H260.54C259.43,34 258.54,33.1 258.54,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M280.77,16C280.77,14.9 281.67,14 282.77,14H297C298.11,14 299,14.9 299,16V32C299,33.1 298.11,34 297,34H282.77C281.67,34 280.77,33.1 280.77,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M303,16C303,14.9 303.89,14 305,14H332C333.11,14 334,14.9 334,16V32C334,33.1 333.11,34 332,34H305C303.89,34 303,33.1 303,32V16Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M14,44C14,42.9 14.9,42 16,42H43C44.1,42 45,42.9 45,44V60C45,61.1 44.1,62 43,62H16C14.9,62 14,61.1 14,60V44Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M49,44C49,42.9 49.9,42 51,42H68.4C69.5,42 70.4,42.9 70.4,44V60C70.4,61.1 69.5,62 68.4,62H51C49.9,62 49,61.1 49,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M74.4,44C74.4,42.9 75.3,42 76.4,42H93.8C94.9,42 95.8,42.9 95.8,44V60C95.8,61.1 94.9,62 93.8,62H76.4C75.3,62 74.4,61.1 74.4,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M99.8,44C99.8,42.9 100.69,42 101.8,42H119.2C120.31,42 121.2,42.9 121.2,44V60C121.2,61.1 120.31,62 119.2,62H101.8C100.69,62 99.8,61.1 99.8,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M125.2,44C125.2,42.9 126.1,42 127.2,42H144.6C145.71,42 146.6,42.9 146.6,44V60C146.6,61.1 145.71,62 144.6,62H127.2C126.1,62 125.2,61.1 125.2,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M150.6,44C150.6,42.9 151.5,42 152.6,42H170C171.1,42 172,42.9 172,44V60C172,61.1 171.1,62 170,62H152.6C151.5,62 150.6,61.1 150.6,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M176,44C176,42.9 176.9,42 178,42H195.4C196.51,42 197.4,42.9 197.4,44V60C197.4,61.1 196.51,62 195.4,62H178C176.9,62 176,61.1 176,60V44Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M201.4,44C201.4,42.9 202.29,42 203.4,42H220.8C221.9,42 222.8,42.9 222.8,44V60C222.8,61.1 221.9,62 220.8,62H203.4C202.29,62 201.4,61.1 201.4,60V44Z"
+        android:fillColor="#F1B3E6"/>
+    <path
+        android:pathData="M226.8,44C226.8,42.9 227.7,42 228.8,42H246.2C247.3,42 248.2,42.9 248.2,44V60C248.2,61.1 247.3,62 246.2,62H228.8C227.7,62 226.8,61.1 226.8,60V44Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M252.2,44C252.2,42.9 253.1,42 254.2,42H271.6C272.7,42 273.6,42.9 273.6,44V60C273.6,61.1 272.7,62 271.6,62H254.2C253.1,62 252.2,61.1 252.2,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M277.6,44C277.6,42.9 278.5,42 279.6,42H297C298.11,42 299,42.9 299,44V60C299,61.1 298.11,62 297,62H279.6C278.5,62 277.6,61.1 277.6,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M303,44C303,42.9 303.89,42 305,42H332C333.11,42 334,42.9 334,44V60C334,61.1 333.11,62 332,62H305C303.89,62 303,61.1 303,60V44Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M14,72C14,70.9 14.9,70 16,70H48C49.1,70 50,70.9 50,72V88C50,89.1 49.1,90 48,90H16C14.9,90 14,89.1 14,88V72Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M54,72C54,70.9 54.9,70 56,70H73.78C74.88,70 75.78,70.9 75.78,72V88C75.78,89.1 74.88,90 73.78,90H56C54.9,90 54,89.1 54,88V72Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M79.78,72C79.78,70.9 80.67,70 81.78,70H99.56C100.66,70 101.56,70.9 101.56,72V88C101.56,89.1 100.66,90 99.56,90H81.78C80.67,90 79.78,89.1 79.78,88V72Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M105.56,72C105.56,70.9 106.45,70 107.56,70H125.33C126.44,70 127.33,70.9 127.33,72V88C127.33,89.1 126.44,90 125.33,90H107.56C106.45,90 105.56,89.1 105.56,88V72Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M131.33,72C131.33,70.9 132.23,70 133.33,70H151.11C152.22,70 153.11,70.9 153.11,72V88C153.11,89.1 152.22,90 151.11,90H133.33C132.23,90 131.33,89.1 131.33,88V72Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M157.11,72C157.11,70.9 158.01,70 159.11,70H176.89C177.99,70 178.89,70.9 178.89,72V88C178.89,89.1 177.99,90 176.89,90H159.11C158.01,90 157.11,89.1 157.11,88V72Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M182.89,72C182.89,70.9 183.78,70 184.89,70H202.67C203.77,70 204.67,70.9 204.67,72V88C204.67,89.1 203.77,90 202.67,90H184.89C183.78,90 182.89,89.1 182.89,88V72Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M208.67,72C208.67,70.9 209.56,70 210.67,70H228.45C229.55,70 230.45,70.9 230.45,72V88C230.45,89.1 229.55,90 228.45,90H210.67C209.56,90 208.67,89.1 208.67,88V72Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M234.44,72C234.44,70.9 235.34,70 236.44,70H254.22C255.33,70 256.22,70.9 256.22,72V88C256.22,89.1 255.33,90 254.22,90H236.44C235.34,90 234.44,89.1 234.44,88V72Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M260.22,72C260.22,70.9 261.12,70 262.22,70H280C281.11,70 282,70.9 282,72V88C282,89.1 281.11,90 280,90H262.22C261.12,90 260.22,89.1 260.22,88V72Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M286,72C286,70.9 286.89,70 288,70H332C333.11,70 334,70.9 334,72V88C334,89.1 333.11,90 332,90H288C286.89,90 286,89.1 286,88V72Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M14,100C14,98.9 14.9,98 16,98H62C63.1,98 64,98.9 64,100V116C64,117.11 63.1,118 62,118H16C14.9,118 14,117.11 14,116V100Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M68,100C68,98.9 68.9,98 70,98H87.78C88.88,98 89.78,98.9 89.78,100V116C89.78,117.11 88.88,118 87.78,118H70C68.9,118 68,117.11 68,116V100Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M93.78,100C93.78,98.9 94.67,98 95.78,98H113.56C114.66,98 115.56,98.9 115.56,100V116C115.56,117.11 114.66,118 113.56,118H95.78C94.67,118 93.78,117.11 93.78,116V100Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M119.56,100C119.56,98.9 120.45,98 121.56,98H139.33C140.44,98 141.33,98.9 141.33,100V116C141.33,117.11 140.44,118 139.33,118H121.56C120.45,118 119.56,117.11 119.56,116V100Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M145.33,100C145.33,98.9 146.23,98 147.33,98H165.11C166.22,98 167.11,98.9 167.11,100V116C167.11,117.11 166.22,118 165.11,118H147.33C146.23,118 145.33,117.11 145.33,116V100Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M171.11,100C171.11,98.9 172.01,98 173.11,98H190.89C191.99,98 192.89,98.9 192.89,100V116C192.89,117.11 191.99,118 190.89,118H173.11C172.01,118 171.11,117.11 171.11,116V100Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M196.89,100C196.89,98.9 197.78,98 198.89,98H216.67C217.77,98 218.67,98.9 218.67,100V116C218.67,117.11 217.77,118 216.67,118H198.89C197.78,118 196.89,117.11 196.89,116V100Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M222.67,100C222.67,98.9 223.56,98 224.67,98H242.45C243.55,98 244.45,98.9 244.45,100V116C244.45,117.11 243.55,118 242.45,118H224.67C223.56,118 222.67,117.11 222.67,116V100Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M248.44,100C248.44,98.9 249.34,98 250.44,98H268.22C269.33,98 270.22,98.9 270.22,100V116C270.22,117.11 269.33,118 268.22,118H250.44C249.34,118 248.44,117.11 248.44,116V100Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M274.22,100C274.22,98.9 275.12,98 276.22,98H294C295.11,98 296,98.9 296,100V116C296,117.11 295.11,118 294,118H276.22C275.12,118 274.22,117.11 274.22,116V100Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M300,100C300,98.9 300.89,98 302,98H332C333.11,98 334,98.9 334,100V116C334,117.11 333.11,118 332,118H302C300.89,118 300,117.11 300,116V100Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M14,128C14,126.89 14.9,126 16,126H48C49.1,126 50,126.89 50,128V144C50,145.1 49.1,146 48,146H16C14.9,146 14,145.1 14,144V128Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M54,128C54,126.89 54.9,126 56,126H88C89.1,126 90,126.89 90,128V144C90,145.1 89.1,146 88,146H56C54.9,146 54,145.1 54,144V128Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M94,128C94,126.89 94.9,126 96,126H248C249.1,126 250,126.89 250,128V144C250,145.1 249.1,146 248,146H96C94.9,146 94,145.1 94,144V128Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M254,128C254,126.89 254.9,126 256,126H276C277.11,126 278,126.89 278,128V144C278,145.1 277.11,146 276,146H256C254.9,146 254,145.1 254,144V128Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M282,128C282,126.89 282.89,126 284,126H304C305.11,126 306,126.89 306,128V144C306,145.1 305.11,146 304,146H284C282.89,146 282,145.1 282,144V128Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M310,128C310,126.89 310.89,126 312,126H332C333.11,126 334,126.89 334,128V144C334,145.1 333.11,146 332,146H312C310.89,146 310,145.1 310,144V128Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M18,3C9.72,3 3,9.72 3,18V142C3,150.28 9.72,157 18,157H330C338.28,157 345,150.28 345,142V18C345,9.72 338.28,3 330,3H18Z"
+        android:strokeWidth="6"
+        android:fillColor="#00000000"
+        android:strokeColor="#3A3338"/>
+</vector>
diff --git a/res/drawable-night/mouse_keys_directional.xml b/res/drawable-night/mouse_keys_directional.xml
new file mode 100644
index 0000000..fd49f1e
--- /dev/null
+++ b/res/drawable-night/mouse_keys_directional.xml
@@ -0,0 +1,248 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2024 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="348dp"
+        android:height="160dp"
+        android:viewportWidth="348"
+        android:viewportHeight="160">
+    <path
+        android:pathData="M6,14C6,9.58 9.58,6 14,6H334C338.42,6 342,9.58 342,14V146C342,150.42 338.42,154 334,154H14C9.58,154 6,150.42 6,146V14Z"
+        android:fillColor="#171216"/>
+    <path
+        android:pathData="M14,16C14,14.9 14.9,14 16,14H30.23C31.34,14 32.23,14.9 32.23,16V32C32.23,33.1 31.34,34 30.23,34H16C14.9,34 14,33.1 14,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M36.23,16C36.23,14.9 37.13,14 38.23,14H52.46C53.57,14 54.46,14.9 54.46,16V32C54.46,33.1 53.57,34 52.46,34H38.23C37.13,34 36.23,33.1 36.23,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M58.46,16C58.46,14.9 59.36,14 60.46,14H74.69C75.8,14 76.69,14.9 76.69,16V32C76.69,33.1 75.8,34 74.69,34H60.46C59.36,34 58.46,33.1 58.46,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M80.69,16C80.69,14.9 81.59,14 82.69,14H96.92C98.03,14 98.92,14.9 98.92,16V32C98.92,33.1 98.03,34 96.92,34H82.69C81.59,34 80.69,33.1 80.69,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M102.92,16C102.92,14.9 103.82,14 104.92,14H119.15C120.26,14 121.15,14.9 121.15,16V32C121.15,33.1 120.26,34 119.15,34H104.92C103.82,34 102.92,33.1 102.92,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M125.15,16C125.15,14.9 126.05,14 127.15,14H141.38C142.49,14 143.38,14.9 143.38,16V32C143.38,33.1 142.49,34 141.38,34H127.15C126.05,34 125.15,33.1 125.15,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M147.38,16C147.38,14.9 148.28,14 149.38,14H163.62C164.72,14 165.62,14.9 165.62,16V32C165.62,33.1 164.72,34 163.62,34H149.38C148.28,34 147.38,33.1 147.38,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M169.62,16C169.62,14.9 170.51,14 171.62,14H185.85C186.95,14 187.85,14.9 187.85,16V32C187.85,33.1 186.95,34 185.85,34H171.62C170.51,34 169.62,33.1 169.62,32V16Z"
+        android:fillColor="#F1B3E6"/>
+    <group>
+        <clip-path
+            android:pathData="M172.4,18h12v12h-12z"/>
+        <path
+            android:pathData="M181.24,27.41L176.46,22.64V26.69H174.99V20.11H181.56V21.59H177.51L182.29,26.36L181.24,27.41Z"
+            android:fillColor="#4C1F49"/>
+    </group>
+    <path
+        android:pathData="M191.85,16C191.85,14.9 192.74,14 193.85,14H208.08C209.18,14 210.08,14.9 210.08,16V32C210.08,33.1 209.18,34 208.08,34H193.85C192.74,34 191.85,33.1 191.85,32V16Z"
+        android:fillColor="#F1B3E6"/>
+    <group>
+        <clip-path
+            android:pathData="M194.63,18h12v12h-12z"/>
+        <path
+            android:pathData="M199.89,28.02V22.81L197.66,25.05L196.61,24L200.63,19.98L204.66,24L203.61,25.05L201.37,22.81V28.02H199.89Z"
+            android:fillColor="#4C1F49"/>
+    </group>
+    <path
+        android:pathData="M214.08,16C214.08,14.9 214.97,14 216.08,14H230.31C231.41,14 232.31,14.9 232.31,16V32C232.31,33.1 231.41,34 230.31,34H216.08C214.97,34 214.08,33.1 214.08,32V16Z"
+        android:fillColor="#F1B3E6"/>
+    <group>
+        <clip-path
+            android:pathData="M216.86,18h12v12h-12z"/>
+        <path
+            android:pathData="M220.02,27.41L218.98,26.36L223.75,21.59H219.7V20.11H226.27V26.69H224.8V22.64L220.02,27.41Z"
+            android:fillColor="#4C1F49"/>
+    </group>
+    <path
+        android:pathData="M236.31,16C236.31,14.9 237.2,14 238.31,14H252.54C253.64,14 254.54,14.9 254.54,16V32C254.54,33.1 253.64,34 252.54,34H238.31C237.2,34 236.31,33.1 236.31,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M258.54,16C258.54,14.9 259.43,14 260.54,14H274.77C275.87,14 276.77,14.9 276.77,16V32C276.77,33.1 275.87,34 274.77,34H260.54C259.43,34 258.54,33.1 258.54,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M280.77,16C280.77,14.9 281.66,14 282.77,14H297C298.1,14 299,14.9 299,16V32C299,33.1 298.1,34 297,34H282.77C281.66,34 280.77,33.1 280.77,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M303,16C303,14.9 303.89,14 305,14H332C333.11,14 334,14.9 334,16V32C334,33.1 333.11,34 332,34H305C303.89,34 303,33.1 303,32V16Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M14,44C14,42.9 14.9,42 16,42H43C44.1,42 45,42.9 45,44V60C45,61.1 44.1,62 43,62H16C14.9,62 14,61.1 14,60V44Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M49,44C49,42.9 49.9,42 51,42H68.4C69.5,42 70.4,42.9 70.4,44V60C70.4,61.1 69.5,62 68.4,62H51C49.9,62 49,61.1 49,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M74.4,44C74.4,42.9 75.3,42 76.4,42H93.8C94.9,42 95.8,42.9 95.8,44V60C95.8,61.1 94.9,62 93.8,62H76.4C75.3,62 74.4,61.1 74.4,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M99.8,44C99.8,42.9 100.69,42 101.8,42H119.2C120.3,42 121.2,42.9 121.2,44V60C121.2,61.1 120.3,62 119.2,62H101.8C100.69,62 99.8,61.1 99.8,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M125.2,44C125.2,42.9 126.1,42 127.2,42H144.6C145.71,42 146.6,42.9 146.6,44V60C146.6,61.1 145.71,62 144.6,62H127.2C126.1,62 125.2,61.1 125.2,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M150.6,44C150.6,42.9 151.5,42 152.6,42H170C171.1,42 172,42.9 172,44V60C172,61.1 171.1,62 170,62H152.6C151.5,62 150.6,61.1 150.6,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M176,44C176,42.9 176.9,42 178,42H195.4C196.51,42 197.4,42.9 197.4,44V60C197.4,61.1 196.51,62 195.4,62H178C176.9,62 176,61.1 176,60V44Z"
+        android:fillColor="#F1B3E6"/>
+    <group>
+        <clip-path
+            android:pathData="M180.79,46h12v12h-12z"/>
+        <path
+            android:pathData="M185.6,52.74L187.84,54.97L186.79,56.03L182.76,52L186.79,47.97L187.84,49.03L185.6,51.26H190.81V52.74H185.6Z"
+            android:fillColor="#4C1F49"/>
+    </group>
+    <path
+        android:pathData="M201.4,44C201.4,42.9 202.29,42 203.4,42H220.8C221.9,42 222.8,42.9 222.8,44V60C222.8,61.1 221.9,62 220.8,62H203.4C202.29,62 201.4,61.1 201.4,60V44Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M226.8,44C226.8,42.9 227.7,42 228.8,42H246.2C247.3,42 248.2,42.9 248.2,44V60C248.2,61.1 247.3,62 246.2,62H228.8C227.7,62 226.8,61.1 226.8,60V44Z"
+        android:fillColor="#F1B3E6"/>
+    <group>
+        <clip-path
+            android:pathData="M231.59,46h12v12h-12z"/>
+        <path
+            android:pathData="M238.77,52.74H233.56V51.26H238.77L236.54,49.03L237.59,47.97L241.61,52L237.59,56.03L236.54,54.97L238.77,52.74Z"
+            android:fillColor="#4C1F49"/>
+    </group>
+    <path
+        android:pathData="M252.2,44C252.2,42.9 253.1,42 254.2,42H271.6C272.7,42 273.6,42.9 273.6,44V60C273.6,61.1 272.7,62 271.6,62H254.2C253.1,62 252.2,61.1 252.2,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M277.6,44C277.6,42.9 278.5,42 279.6,42H297C298.11,42 299,42.9 299,44V60C299,61.1 298.11,62 297,62H279.6C278.5,62 277.6,61.1 277.6,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M303,44C303,42.9 303.89,42 305,42H332C333.11,42 334,42.9 334,44V60C334,61.1 333.11,62 332,62H305C303.89,62 303,61.1 303,60V44Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M14,72C14,70.9 14.9,70 16,70H48C49.1,70 50,70.9 50,72V88C50,89.1 49.1,90 48,90H16C14.9,90 14,89.1 14,88V72Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M54,72C54,70.9 54.9,70 56,70H73.78C74.88,70 75.78,70.9 75.78,72V88C75.78,89.1 74.88,90 73.78,90H56C54.9,90 54,89.1 54,88V72Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M79.78,72C79.78,70.9 80.67,70 81.78,70H99.56C100.66,70 101.56,70.9 101.56,72V88C101.56,89.1 100.66,90 99.56,90H81.78C80.67,90 79.78,89.1 79.78,88V72Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M105.56,72C105.56,70.9 106.45,70 107.56,70H125.33C126.44,70 127.33,70.9 127.33,72V88C127.33,89.1 126.44,90 125.33,90H107.56C106.45,90 105.56,89.1 105.56,88V72Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M131.33,72C131.33,70.9 132.23,70 133.33,70H151.11C152.22,70 153.11,70.9 153.11,72V88C153.11,89.1 152.22,90 151.11,90H133.33C132.23,90 131.33,89.1 131.33,88V72Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M157.11,72C157.11,70.9 158.01,70 159.11,70H176.89C177.99,70 178.89,70.9 178.89,72V88C178.89,89.1 177.99,90 176.89,90H159.11C158.01,90 157.11,89.1 157.11,88V72Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M182.89,72C182.89,70.9 183.78,70 184.89,70H202.67C203.77,70 204.67,70.9 204.67,72V88C204.67,89.1 203.77,90 202.67,90H184.89C183.78,90 182.89,89.1 182.89,88V72Z"
+        android:fillColor="#F1B3E6"/>
+    <group>
+        <clip-path
+            android:pathData="M187.67,74h12v12h-12z"/>
+        <path
+            android:pathData="M190.09,83.59V78.51H191.56V81.07L196.64,76L197.67,77.04L192.6,82.11H195.16V83.59H190.09Z"
+            android:fillColor="#4C1F49"/>
+    </group>
+    <path
+        android:pathData="M208.67,72C208.67,70.9 209.56,70 210.67,70H228.44C229.55,70 230.44,70.9 230.44,72V88C230.44,89.1 229.55,90 228.44,90H210.67C209.56,90 208.67,89.1 208.67,88V72Z"
+        android:fillColor="#F1B3E6"/>
+    <group>
+        <clip-path
+            android:pathData="M213.45,74h12v12h-12z"/>
+        <path
+            android:pathData="M218.71,75.97H220.19V81.19L222.43,78.95L223.48,80L219.45,84.03L215.43,80L216.48,78.95L218.71,81.19V75.97Z"
+            android:fillColor="#4C1F49"/>
+    </group>
+    <path
+        android:pathData="M234.44,72C234.44,70.9 235.34,70 236.44,70H254.22C255.33,70 256.22,70.9 256.22,72V88C256.22,89.1 255.33,90 254.22,90H236.44C235.34,90 234.44,89.1 234.44,88V72Z"
+        android:fillColor="#F1B3E6"/>
+    <group>
+        <clip-path
+            android:pathData="M239.23,74h12v12h-12z"/>
+        <path
+            android:pathData="M243.84,83.69V82.21H246.4L241.21,77.01L242.24,75.97L247.44,81.18V78.61H248.92V83.69H243.84Z"
+            android:fillColor="#4C1F49"/>
+    </group>
+    <path
+        android:pathData="M260.22,72C260.22,70.9 261.12,70 262.22,70H280C281.11,70 282,70.9 282,72V88C282,89.1 281.11,90 280,90H262.22C261.12,90 260.22,89.1 260.22,88V72Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M286,72C286,70.9 286.89,70 288,70H332C333.11,70 334,70.9 334,72V88C334,89.1 333.11,90 332,90H288C286.89,90 286,89.1 286,88V72Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M14,100C14,98.9 14.9,98 16,98H62C63.1,98 64,98.9 64,100V116C64,117.11 63.1,118 62,118H16C14.9,118 14,117.11 14,116V100Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M68,100C68,98.9 68.9,98 70,98H87.78C88.88,98 89.78,98.9 89.78,100V116C89.78,117.11 88.88,118 87.78,118H70C68.9,118 68,117.11 68,116V100Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M93.78,100C93.78,98.9 94.67,98 95.78,98H113.56C114.66,98 115.56,98.9 115.56,100V116C115.56,117.11 114.66,118 113.56,118H95.78C94.67,118 93.78,117.11 93.78,116V100Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M119.56,100C119.56,98.9 120.45,98 121.56,98H139.33C140.44,98 141.33,98.9 141.33,100V116C141.33,117.11 140.44,118 139.33,118H121.56C120.45,118 119.56,117.11 119.56,116V100Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M145.33,100C145.33,98.9 146.23,98 147.33,98H165.11C166.22,98 167.11,98.9 167.11,100V116C167.11,117.11 166.22,118 165.11,118H147.33C146.23,118 145.33,117.11 145.33,116V100Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M171.11,100C171.11,98.9 172.01,98 173.11,98H190.89C191.99,98 192.89,98.9 192.89,100V116C192.89,117.11 191.99,118 190.89,118H173.11C172.01,118 171.11,117.11 171.11,116V100Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M196.89,100C196.89,98.9 197.78,98 198.89,98H216.67C217.77,98 218.67,98.9 218.67,100V116C218.67,117.11 217.77,118 216.67,118H198.89C197.78,118 196.89,117.11 196.89,116V100Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M222.67,100C222.67,98.9 223.56,98 224.67,98H242.44C243.55,98 244.44,98.9 244.44,100V116C244.44,117.11 243.55,118 242.44,118H224.67C223.56,118 222.67,117.11 222.67,116V100Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M248.44,100C248.44,98.9 249.34,98 250.44,98H268.22C269.33,98 270.22,98.9 270.22,100V116C270.22,117.11 269.33,118 268.22,118H250.44C249.34,118 248.44,117.11 248.44,116V100Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M274.22,100C274.22,98.9 275.12,98 276.22,98H294C295.11,98 296,98.9 296,100V116C296,117.11 295.11,118 294,118H276.22C275.12,118 274.22,117.11 274.22,116V100Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M300,100C300,98.9 300.89,98 302,98H332C333.11,98 334,98.9 334,100V116C334,117.11 333.11,118 332,118H302C300.89,118 300,117.11 300,116V100Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M14,128C14,126.89 14.9,126 16,126H48C49.1,126 50,126.89 50,128V144C50,145.1 49.1,146 48,146H16C14.9,146 14,145.1 14,144V128Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M54,128C54,126.89 54.9,126 56,126H88C89.1,126 90,126.89 90,128V144C90,145.1 89.1,146 88,146H56C54.9,146 54,145.1 54,144V128Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M94,128C94,126.89 94.9,126 96,126H248C249.1,126 250,126.89 250,128V144C250,145.1 249.1,146 248,146H96C94.9,146 94,145.1 94,144V128Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M254,128C254,126.89 254.9,126 256,126H276C277.11,126 278,126.89 278,128V144C278,145.1 277.11,146 276,146H256C254.9,146 254,145.1 254,144V128Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M282,128C282,126.89 282.89,126 284,126H304C305.11,126 306,126.89 306,128V144C306,145.1 305.11,146 304,146H284C282.89,146 282,145.1 282,144V128Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M310,128C310,126.89 310.89,126 312,126H332C333.11,126 334,126.89 334,128V144C334,145.1 333.11,146 332,146H312C310.89,146 310,145.1 310,144V128Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M18,3C9.72,3 3,9.72 3,18V142C3,150.28 9.72,157 18,157H330C338.28,157 345,150.28 345,142V18C345,9.72 338.28,3 330,3H18Z"
+        android:strokeWidth="6"
+        android:fillColor="#00000000"
+        android:strokeColor="#3A3338"/>
+</vector>
diff --git a/res/drawable-night/mouse_keys_press_hold.xml b/res/drawable-night/mouse_keys_press_hold.xml
new file mode 100644
index 0000000..eb85602
--- /dev/null
+++ b/res/drawable-night/mouse_keys_press_hold.xml
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2024 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="348dp"
+        android:height="160dp"
+        android:viewportWidth="348"
+        android:viewportHeight="160">
+    <path
+        android:pathData="M6,14C6,9.58 9.58,6 14,6H334C338.42,6 342,9.58 342,14V146C342,150.42 338.42,154 334,154H14C9.58,154 6,150.42 6,146V14Z"
+        android:fillColor="#171216"/>
+    <path
+        android:pathData="M14,16C14,14.9 14.9,14 16,14H30.23C31.34,14 32.23,14.9 32.23,16V32C32.23,33.1 31.34,34 30.23,34H16C14.9,34 14,33.1 14,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M36.23,16C36.23,14.9 37.13,14 38.23,14H52.46C53.57,14 54.46,14.9 54.46,16V32C54.46,33.1 53.57,34 52.46,34H38.23C37.13,34 36.23,33.1 36.23,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M58.46,16C58.46,14.9 59.36,14 60.46,14H74.69C75.8,14 76.69,14.9 76.69,16V32C76.69,33.1 75.8,34 74.69,34H60.46C59.36,34 58.46,33.1 58.46,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M80.69,16C80.69,14.9 81.59,14 82.69,14H96.92C98.03,14 98.92,14.9 98.92,16V32C98.92,33.1 98.03,34 96.92,34H82.69C81.59,34 80.69,33.1 80.69,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M102.92,16C102.92,14.9 103.82,14 104.92,14H119.15C120.26,14 121.15,14.9 121.15,16V32C121.15,33.1 120.26,34 119.15,34H104.92C103.82,34 102.92,33.1 102.92,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M125.15,16C125.15,14.9 126.05,14 127.15,14H141.38C142.49,14 143.38,14.9 143.38,16V32C143.38,33.1 142.49,34 141.38,34H127.15C126.05,34 125.15,33.1 125.15,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M147.38,16C147.38,14.9 148.28,14 149.38,14H163.62C164.72,14 165.62,14.9 165.62,16V32C165.62,33.1 164.72,34 163.62,34H149.38C148.28,34 147.38,33.1 147.38,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M169.62,16C169.62,14.9 170.51,14 171.62,14H185.85C186.95,14 187.85,14.9 187.85,16V32C187.85,33.1 186.95,34 185.85,34H171.62C170.51,34 169.62,33.1 169.62,32V16Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M191.85,16C191.85,14.9 192.74,14 193.85,14H208.08C209.18,14 210.08,14.9 210.08,16V32C210.08,33.1 209.18,34 208.08,34H193.85C192.74,34 191.85,33.1 191.85,32V16Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M214.08,16C214.08,14.9 214.97,14 216.08,14H230.31C231.41,14 232.31,14.9 232.31,16V32C232.31,33.1 231.41,34 230.31,34H216.08C214.97,34 214.08,33.1 214.08,32V16Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M236.31,16C236.31,14.9 237.2,14 238.31,14H252.54C253.64,14 254.54,14.9 254.54,16V32C254.54,33.1 253.64,34 252.54,34H238.31C237.2,34 236.31,33.1 236.31,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M258.54,16C258.54,14.9 259.43,14 260.54,14H274.77C275.87,14 276.77,14.9 276.77,16V32C276.77,33.1 275.87,34 274.77,34H260.54C259.43,34 258.54,33.1 258.54,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M280.77,16C280.77,14.9 281.67,14 282.77,14H297C298.11,14 299,14.9 299,16V32C299,33.1 298.11,34 297,34H282.77C281.67,34 280.77,33.1 280.77,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M303,16C303,14.9 303.89,14 305,14H332C333.11,14 334,14.9 334,16V32C334,33.1 333.11,34 332,34H305C303.89,34 303,33.1 303,32V16Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M14,44C14,42.9 14.9,42 16,42H43C44.1,42 45,42.9 45,44V60C45,61.1 44.1,62 43,62H16C14.9,62 14,61.1 14,60V44Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M49,44C49,42.9 49.9,42 51,42H68.4C69.5,42 70.4,42.9 70.4,44V60C70.4,61.1 69.5,62 68.4,62H51C49.9,62 49,61.1 49,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M74.4,44C74.4,42.9 75.3,42 76.4,42H93.8C94.9,42 95.8,42.9 95.8,44V60C95.8,61.1 94.9,62 93.8,62H76.4C75.3,62 74.4,61.1 74.4,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M99.8,44C99.8,42.9 100.69,42 101.8,42H119.2C120.31,42 121.2,42.9 121.2,44V60C121.2,61.1 120.31,62 119.2,62H101.8C100.69,62 99.8,61.1 99.8,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M125.2,44C125.2,42.9 126.1,42 127.2,42H144.6C145.71,42 146.6,42.9 146.6,44V60C146.6,61.1 145.71,62 144.6,62H127.2C126.1,62 125.2,61.1 125.2,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M150.6,44C150.6,42.9 151.5,42 152.6,42H170C171.1,42 172,42.9 172,44V60C172,61.1 171.1,62 170,62H152.6C151.5,62 150.6,61.1 150.6,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M176,44C176,42.9 176.9,42 178,42H195.4C196.51,42 197.4,42.9 197.4,44V60C197.4,61.1 196.51,62 195.4,62H178C176.9,62 176,61.1 176,60V44Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M201.4,44C201.4,42.9 202.29,42 203.4,42H220.8C221.9,42 222.8,42.9 222.8,44V60C222.8,61.1 221.9,62 220.8,62H203.4C202.29,62 201.4,61.1 201.4,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M226.8,44C226.8,42.9 227.7,42 228.8,42H246.2C247.3,42 248.2,42.9 248.2,44V60C248.2,61.1 247.3,62 246.2,62H228.8C227.7,62 226.8,61.1 226.8,60V44Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M252.2,44C252.2,42.9 253.1,42 254.2,42H271.6C272.7,42 273.6,42.9 273.6,44V60C273.6,61.1 272.7,62 271.6,62H254.2C253.1,62 252.2,61.1 252.2,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M277.6,44C277.6,42.9 278.5,42 279.6,42H297C298.11,42 299,42.9 299,44V60C299,61.1 298.11,62 297,62H279.6C278.5,62 277.6,61.1 277.6,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M303,44C303,42.9 303.89,42 305,42H332C333.11,42 334,42.9 334,44V60C334,61.1 333.11,62 332,62H305C303.89,62 303,61.1 303,60V44Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M14,72C14,70.9 14.9,70 16,70H48C49.1,70 50,70.9 50,72V88C50,89.1 49.1,90 48,90H16C14.9,90 14,89.1 14,88V72Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M54,72C54,70.9 54.9,70 56,70H73.78C74.88,70 75.78,70.9 75.78,72V88C75.78,89.1 74.88,90 73.78,90H56C54.9,90 54,89.1 54,88V72Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M79.78,72C79.78,70.9 80.67,70 81.78,70H99.56C100.66,70 101.56,70.9 101.56,72V88C101.56,89.1 100.66,90 99.56,90H81.78C80.67,90 79.78,89.1 79.78,88V72Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M105.56,72C105.56,70.9 106.45,70 107.56,70H125.33C126.44,70 127.33,70.9 127.33,72V88C127.33,89.1 126.44,90 125.33,90H107.56C106.45,90 105.56,89.1 105.56,88V72Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M131.33,72C131.33,70.9 132.23,70 133.33,70H151.11C152.22,70 153.11,70.9 153.11,72V88C153.11,89.1 152.22,90 151.11,90H133.33C132.23,90 131.33,89.1 131.33,88V72Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M157.11,72C157.11,70.9 158.01,70 159.11,70H176.89C177.99,70 178.89,70.9 178.89,72V88C178.89,89.1 177.99,90 176.89,90H159.11C158.01,90 157.11,89.1 157.11,88V72Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M182.89,72C182.89,70.9 183.78,70 184.89,70H202.67C203.77,70 204.67,70.9 204.67,72V88C204.67,89.1 203.77,90 202.67,90H184.89C183.78,90 182.89,89.1 182.89,88V72Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M208.67,72C208.67,70.9 209.56,70 210.67,70H228.45C229.55,70 230.45,70.9 230.45,72V88C230.45,89.1 229.55,90 228.45,90H210.67C209.56,90 208.67,89.1 208.67,88V72Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M234.44,72C234.44,70.9 235.34,70 236.44,70H254.22C255.33,70 256.22,70.9 256.22,72V88C256.22,89.1 255.33,90 254.22,90H236.44C235.34,90 234.44,89.1 234.44,88V72Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M260.22,72C260.22,70.9 261.12,70 262.22,70H280C281.11,70 282,70.9 282,72V88C282,89.1 281.11,90 280,90H262.22C261.12,90 260.22,89.1 260.22,88V72Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M286,72C286,70.9 286.89,70 288,70H332C333.11,70 334,70.9 334,72V88C334,89.1 333.11,90 332,90H288C286.89,90 286,89.1 286,88V72Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M14,100C14,98.9 14.9,98 16,98H62C63.1,98 64,98.9 64,100V116C64,117.11 63.1,118 62,118H16C14.9,118 14,117.11 14,116V100Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M68,100C68,98.9 68.9,98 70,98H87.78C88.88,98 89.78,98.9 89.78,100V116C89.78,117.11 88.88,118 87.78,118H70C68.9,118 68,117.11 68,116V100Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M93.78,100C93.78,98.9 94.67,98 95.78,98H113.56C114.66,98 115.56,98.9 115.56,100V116C115.56,117.11 114.66,118 113.56,118H95.78C94.67,118 93.78,117.11 93.78,116V100Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M119.56,100C119.56,98.9 120.45,98 121.56,98H139.33C140.44,98 141.33,98.9 141.33,100V116C141.33,117.11 140.44,118 139.33,118H121.56C120.45,118 119.56,117.11 119.56,116V100Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M145.33,100C145.33,98.9 146.23,98 147.33,98H165.11C166.22,98 167.11,98.9 167.11,100V116C167.11,117.11 166.22,118 165.11,118H147.33C146.23,118 145.33,117.11 145.33,116V100Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M171.11,100C171.11,98.9 172.01,98 173.11,98H190.89C191.99,98 192.89,98.9 192.89,100V116C192.89,117.11 191.99,118 190.89,118H173.11C172.01,118 171.11,117.11 171.11,116V100Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M196.89,100C196.89,98.9 197.78,98 198.89,98H216.67C217.77,98 218.67,98.9 218.67,100V116C218.67,117.11 217.77,118 216.67,118H198.89C197.78,118 196.89,117.11 196.89,116V100Z"
+        android:fillColor="#F1B3E6"/>
+    <path
+        android:pathData="M222.67,100C222.67,98.9 223.56,98 224.67,98H242.45C243.55,98 244.45,98.9 244.45,100V116C244.45,117.11 243.55,118 242.45,118H224.67C223.56,118 222.67,117.11 222.67,116V100Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M248.44,100C248.44,98.9 249.34,98 250.44,98H268.22C269.33,98 270.22,98.9 270.22,100V116C270.22,117.11 269.33,118 268.22,118H250.44C249.34,118 248.44,117.11 248.44,116V100Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M274.22,100C274.22,98.9 275.12,98 276.22,98H294C295.11,98 296,98.9 296,100V116C296,117.11 295.11,118 294,118H276.22C275.12,118 274.22,117.11 274.22,116V100Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M300,100C300,98.9 300.89,98 302,98H332C333.11,98 334,98.9 334,100V116C334,117.11 333.11,118 332,118H302C300.89,118 300,117.11 300,116V100Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M14,128C14,126.89 14.9,126 16,126H48C49.1,126 50,126.89 50,128V144C50,145.1 49.1,146 48,146H16C14.9,146 14,145.1 14,144V128Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M54,128C54,126.89 54.9,126 56,126H88C89.1,126 90,126.89 90,128V144C90,145.1 89.1,146 88,146H56C54.9,146 54,145.1 54,144V128Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M94,128C94,126.89 94.9,126 96,126H248C249.1,126 250,126.89 250,128V144C250,145.1 249.1,146 248,146H96C94.9,146 94,145.1 94,144V128Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M254,128C254,126.89 254.9,126 256,126H276C277.11,126 278,126.89 278,128V144C278,145.1 277.11,146 276,146H256C254.9,146 254,145.1 254,144V128Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M282,128C282,126.89 282.89,126 284,126H304C305.11,126 306,126.89 306,128V144C306,145.1 305.11,146 304,146H284C282.89,146 282,145.1 282,144V128Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M310,128C310,126.89 310.89,126 312,126H332C333.11,126 334,126.89 334,128V144C334,145.1 333.11,146 332,146H312C310.89,146 310,145.1 310,144V128Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M18,3C9.72,3 3,9.72 3,18V142C3,150.28 9.72,157 18,157H330C338.28,157 345,150.28 345,142V18C345,9.72 338.28,3 330,3H18Z"
+        android:strokeWidth="6"
+        android:fillColor="#00000000"
+        android:strokeColor="#3A3338"/>
+</vector>
diff --git a/res/drawable-night/mouse_keys_release.xml b/res/drawable-night/mouse_keys_release.xml
new file mode 100644
index 0000000..4fb7c4a
--- /dev/null
+++ b/res/drawable-night/mouse_keys_release.xml
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2024 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="348dp"
+        android:height="160dp"
+        android:viewportWidth="348"
+        android:viewportHeight="160">
+    <path
+        android:pathData="M6,14C6,9.58 9.58,6 14,6H334C338.42,6 342,9.58 342,14V146C342,150.42 338.42,154 334,154H14C9.58,154 6,150.42 6,146V14Z"
+        android:fillColor="#171216"/>
+    <path
+        android:pathData="M14,16C14,14.9 14.9,14 16,14H30.23C31.34,14 32.23,14.9 32.23,16V32C32.23,33.1 31.34,34 30.23,34H16C14.9,34 14,33.1 14,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M36.23,16C36.23,14.9 37.13,14 38.23,14H52.46C53.57,14 54.46,14.9 54.46,16V32C54.46,33.1 53.57,34 52.46,34H38.23C37.13,34 36.23,33.1 36.23,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M58.46,16C58.46,14.9 59.36,14 60.46,14H74.69C75.8,14 76.69,14.9 76.69,16V32C76.69,33.1 75.8,34 74.69,34H60.46C59.36,34 58.46,33.1 58.46,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M80.69,16C80.69,14.9 81.59,14 82.69,14H96.92C98.03,14 98.92,14.9 98.92,16V32C98.92,33.1 98.03,34 96.92,34H82.69C81.59,34 80.69,33.1 80.69,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M102.92,16C102.92,14.9 103.82,14 104.92,14H119.15C120.26,14 121.15,14.9 121.15,16V32C121.15,33.1 120.26,34 119.15,34H104.92C103.82,34 102.92,33.1 102.92,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M125.15,16C125.15,14.9 126.05,14 127.15,14H141.38C142.49,14 143.38,14.9 143.38,16V32C143.38,33.1 142.49,34 141.38,34H127.15C126.05,34 125.15,33.1 125.15,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M147.38,16C147.38,14.9 148.28,14 149.38,14H163.62C164.72,14 165.62,14.9 165.62,16V32C165.62,33.1 164.72,34 163.62,34H149.38C148.28,34 147.38,33.1 147.38,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M169.62,16C169.62,14.9 170.51,14 171.62,14H185.85C186.95,14 187.85,14.9 187.85,16V32C187.85,33.1 186.95,34 185.85,34H171.62C170.51,34 169.62,33.1 169.62,32V16Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M191.85,16C191.85,14.9 192.74,14 193.85,14H208.08C209.18,14 210.08,14.9 210.08,16V32C210.08,33.1 209.18,34 208.08,34H193.85C192.74,34 191.85,33.1 191.85,32V16Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M214.08,16C214.08,14.9 214.97,14 216.08,14H230.31C231.41,14 232.31,14.9 232.31,16V32C232.31,33.1 231.41,34 230.31,34H216.08C214.97,34 214.08,33.1 214.08,32V16Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M236.31,16C236.31,14.9 237.2,14 238.31,14H252.54C253.64,14 254.54,14.9 254.54,16V32C254.54,33.1 253.64,34 252.54,34H238.31C237.2,34 236.31,33.1 236.31,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M258.54,16C258.54,14.9 259.43,14 260.54,14H274.77C275.87,14 276.77,14.9 276.77,16V32C276.77,33.1 275.87,34 274.77,34H260.54C259.43,34 258.54,33.1 258.54,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M280.77,16C280.77,14.9 281.67,14 282.77,14H297C298.11,14 299,14.9 299,16V32C299,33.1 298.11,34 297,34H282.77C281.67,34 280.77,33.1 280.77,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M303,16C303,14.9 303.89,14 305,14H332C333.11,14 334,14.9 334,16V32C334,33.1 333.11,34 332,34H305C303.89,34 303,33.1 303,32V16Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M14,44C14,42.9 14.9,42 16,42H43C44.1,42 45,42.9 45,44V60C45,61.1 44.1,62 43,62H16C14.9,62 14,61.1 14,60V44Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M49,44C49,42.9 49.9,42 51,42H68.4C69.5,42 70.4,42.9 70.4,44V60C70.4,61.1 69.5,62 68.4,62H51C49.9,62 49,61.1 49,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M74.4,44C74.4,42.9 75.3,42 76.4,42H93.8C94.9,42 95.8,42.9 95.8,44V60C95.8,61.1 94.9,62 93.8,62H76.4C75.3,62 74.4,61.1 74.4,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M99.8,44C99.8,42.9 100.69,42 101.8,42H119.2C120.31,42 121.2,42.9 121.2,44V60C121.2,61.1 120.31,62 119.2,62H101.8C100.69,62 99.8,61.1 99.8,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M125.2,44C125.2,42.9 126.1,42 127.2,42H144.6C145.71,42 146.6,42.9 146.6,44V60C146.6,61.1 145.71,62 144.6,62H127.2C126.1,62 125.2,61.1 125.2,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M150.6,44C150.6,42.9 151.5,42 152.6,42H170C171.1,42 172,42.9 172,44V60C172,61.1 171.1,62 170,62H152.6C151.5,62 150.6,61.1 150.6,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M176,44C176,42.9 176.9,42 178,42H195.4C196.51,42 197.4,42.9 197.4,44V60C197.4,61.1 196.51,62 195.4,62H178C176.9,62 176,61.1 176,60V44Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M201.4,44C201.4,42.9 202.29,42 203.4,42H220.8C221.9,42 222.8,42.9 222.8,44V60C222.8,61.1 221.9,62 220.8,62H203.4C202.29,62 201.4,61.1 201.4,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M226.8,44C226.8,42.9 227.7,42 228.8,42H246.2C247.3,42 248.2,42.9 248.2,44V60C248.2,61.1 247.3,62 246.2,62H228.8C227.7,62 226.8,61.1 226.8,60V44Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M252.2,44C252.2,42.9 253.1,42 254.2,42H271.6C272.7,42 273.6,42.9 273.6,44V60C273.6,61.1 272.7,62 271.6,62H254.2C253.1,62 252.2,61.1 252.2,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M277.6,44C277.6,42.9 278.5,42 279.6,42H297C298.11,42 299,42.9 299,44V60C299,61.1 298.11,62 297,62H279.6C278.5,62 277.6,61.1 277.6,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M303,44C303,42.9 303.89,42 305,42H332C333.11,42 334,42.9 334,44V60C334,61.1 333.11,62 332,62H305C303.89,62 303,61.1 303,60V44Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M14,72C14,70.9 14.9,70 16,70H48C49.1,70 50,70.9 50,72V88C50,89.1 49.1,90 48,90H16C14.9,90 14,89.1 14,88V72Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M54,72C54,70.9 54.9,70 56,70H73.78C74.88,70 75.78,70.9 75.78,72V88C75.78,89.1 74.88,90 73.78,90H56C54.9,90 54,89.1 54,88V72Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M79.78,72C79.78,70.9 80.67,70 81.78,70H99.56C100.66,70 101.56,70.9 101.56,72V88C101.56,89.1 100.66,90 99.56,90H81.78C80.67,90 79.78,89.1 79.78,88V72Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M105.56,72C105.56,70.9 106.45,70 107.56,70H125.33C126.44,70 127.33,70.9 127.33,72V88C127.33,89.1 126.44,90 125.33,90H107.56C106.45,90 105.56,89.1 105.56,88V72Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M131.33,72C131.33,70.9 132.23,70 133.33,70H151.11C152.22,70 153.11,70.9 153.11,72V88C153.11,89.1 152.22,90 151.11,90H133.33C132.23,90 131.33,89.1 131.33,88V72Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M157.11,72C157.11,70.9 158.01,70 159.11,70H176.89C177.99,70 178.89,70.9 178.89,72V88C178.89,89.1 177.99,90 176.89,90H159.11C158.01,90 157.11,89.1 157.11,88V72Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M182.89,72C182.89,70.9 183.78,70 184.89,70H202.67C203.77,70 204.67,70.9 204.67,72V88C204.67,89.1 203.77,90 202.67,90H184.89C183.78,90 182.89,89.1 182.89,88V72Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M208.67,72C208.67,70.9 209.56,70 210.67,70H228.45C229.55,70 230.45,70.9 230.45,72V88C230.45,89.1 229.55,90 228.45,90H210.67C209.56,90 208.67,89.1 208.67,88V72Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M234.44,72C234.44,70.9 235.34,70 236.44,70H254.22C255.33,70 256.22,70.9 256.22,72V88C256.22,89.1 255.33,90 254.22,90H236.44C235.34,90 234.44,89.1 234.44,88V72Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M260.22,72C260.22,70.9 261.12,70 262.22,70H280C281.11,70 282,70.9 282,72V88C282,89.1 281.11,90 280,90H262.22C261.12,90 260.22,89.1 260.22,88V72Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M286,72C286,70.9 286.89,70 288,70H332C333.11,70 334,70.9 334,72V88C334,89.1 333.11,90 332,90H288C286.89,90 286,89.1 286,88V72Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M14,100C14,98.9 14.9,98 16,98H62C63.1,98 64,98.9 64,100V116C64,117.11 63.1,118 62,118H16C14.9,118 14,117.11 14,116V100Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M68,100C68,98.9 68.9,98 70,98H87.78C88.88,98 89.78,98.9 89.78,100V116C89.78,117.11 88.88,118 87.78,118H70C68.9,118 68,117.11 68,116V100Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M93.78,100C93.78,98.9 94.67,98 95.78,98H113.56C114.66,98 115.56,98.9 115.56,100V116C115.56,117.11 114.66,118 113.56,118H95.78C94.67,118 93.78,117.11 93.78,116V100Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M119.56,100C119.56,98.9 120.45,98 121.56,98H139.33C140.44,98 141.33,98.9 141.33,100V116C141.33,117.11 140.44,118 139.33,118H121.56C120.45,118 119.56,117.11 119.56,116V100Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M145.33,100C145.33,98.9 146.23,98 147.33,98H165.11C166.22,98 167.11,98.9 167.11,100V116C167.11,117.11 166.22,118 165.11,118H147.33C146.23,118 145.33,117.11 145.33,116V100Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M171.11,100C171.11,98.9 172.01,98 173.11,98H190.89C191.99,98 192.89,98.9 192.89,100V116C192.89,117.11 191.99,118 190.89,118H173.11C172.01,118 171.11,117.11 171.11,116V100Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M196.89,100C196.89,98.9 197.78,98 198.89,98H216.67C217.77,98 218.67,98.9 218.67,100V116C218.67,117.11 217.77,118 216.67,118H198.89C197.78,118 196.89,117.11 196.89,116V100Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M222.67,100C222.67,98.9 223.56,98 224.67,98H242.45C243.55,98 244.45,98.9 244.45,100V116C244.45,117.11 243.55,118 242.45,118H224.67C223.56,118 222.67,117.11 222.67,116V100Z"
+        android:fillColor="#F1B3E6"/>
+    <path
+        android:pathData="M248.44,100C248.44,98.9 249.34,98 250.44,98H268.22C269.33,98 270.22,98.9 270.22,100V116C270.22,117.11 269.33,118 268.22,118H250.44C249.34,118 248.44,117.11 248.44,116V100Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M274.22,100C274.22,98.9 275.12,98 276.22,98H294C295.11,98 296,98.9 296,100V116C296,117.11 295.11,118 294,118H276.22C275.12,118 274.22,117.11 274.22,116V100Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M300,100C300,98.9 300.89,98 302,98H332C333.11,98 334,98.9 334,100V116C334,117.11 333.11,118 332,118H302C300.89,118 300,117.11 300,116V100Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M14,128C14,126.89 14.9,126 16,126H48C49.1,126 50,126.89 50,128V144C50,145.1 49.1,146 48,146H16C14.9,146 14,145.1 14,144V128Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M54,128C54,126.89 54.9,126 56,126H88C89.1,126 90,126.89 90,128V144C90,145.1 89.1,146 88,146H56C54.9,146 54,145.1 54,144V128Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M94,128C94,126.89 94.9,126 96,126H248C249.1,126 250,126.89 250,128V144C250,145.1 249.1,146 248,146H96C94.9,146 94,145.1 94,144V128Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M254,128C254,126.89 254.9,126 256,126H276C277.11,126 278,126.89 278,128V144C278,145.1 277.11,146 276,146H256C254.9,146 254,145.1 254,144V128Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M282,128C282,126.89 282.89,126 284,126H304C305.11,126 306,126.89 306,128V144C306,145.1 305.11,146 304,146H284C282.89,146 282,145.1 282,144V128Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M310,128C310,126.89 310.89,126 312,126H332C333.11,126 334,126.89 334,128V144C334,145.1 333.11,146 332,146H312C310.89,146 310,145.1 310,144V128Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M18,3C9.72,3 3,9.72 3,18V142C3,150.28 9.72,157 18,157H330C338.28,157 345,150.28 345,142V18C345,9.72 338.28,3 330,3H18Z"
+        android:strokeWidth="6"
+        android:fillColor="#00000000"
+        android:strokeColor="#3A3338"/>
+</vector>
diff --git a/res/drawable-night/mouse_keys_release2.xml b/res/drawable-night/mouse_keys_release2.xml
new file mode 100644
index 0000000..e844bc9
--- /dev/null
+++ b/res/drawable-night/mouse_keys_release2.xml
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2024 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="348dp"
+        android:height="160dp"
+        android:viewportWidth="348"
+        android:viewportHeight="160">
+    <path
+        android:pathData="M6,14C6,9.58 9.58,6 14,6H334C338.42,6 342,9.58 342,14V146C342,150.42 338.42,154 334,154H14C9.58,154 6,150.42 6,146V14Z"
+        android:fillColor="#171216"/>
+    <path
+        android:pathData="M14,16C14,14.9 14.9,14 16,14H30.23C31.34,14 32.23,14.9 32.23,16V32C32.23,33.1 31.34,34 30.23,34H16C14.9,34 14,33.1 14,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M36.23,16C36.23,14.9 37.13,14 38.23,14H52.46C53.57,14 54.46,14.9 54.46,16V32C54.46,33.1 53.57,34 52.46,34H38.23C37.13,34 36.23,33.1 36.23,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M58.46,16C58.46,14.9 59.36,14 60.46,14H74.69C75.8,14 76.69,14.9 76.69,16V32C76.69,33.1 75.8,34 74.69,34H60.46C59.36,34 58.46,33.1 58.46,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M80.69,16C80.69,14.9 81.59,14 82.69,14H96.92C98.03,14 98.92,14.9 98.92,16V32C98.92,33.1 98.03,34 96.92,34H82.69C81.59,34 80.69,33.1 80.69,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M102.92,16C102.92,14.9 103.82,14 104.92,14H119.15C120.26,14 121.15,14.9 121.15,16V32C121.15,33.1 120.26,34 119.15,34H104.92C103.82,34 102.92,33.1 102.92,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M125.15,16C125.15,14.9 126.05,14 127.15,14H141.38C142.49,14 143.38,14.9 143.38,16V32C143.38,33.1 142.49,34 141.38,34H127.15C126.05,34 125.15,33.1 125.15,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M147.38,16C147.38,14.9 148.28,14 149.38,14H163.62C164.72,14 165.62,14.9 165.62,16V32C165.62,33.1 164.72,34 163.62,34H149.38C148.28,34 147.38,33.1 147.38,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M169.62,16C169.62,14.9 170.51,14 171.62,14H185.85C186.95,14 187.85,14.9 187.85,16V32C187.85,33.1 186.95,34 185.85,34H171.62C170.51,34 169.62,33.1 169.62,32V16Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M191.85,16C191.85,14.9 192.74,14 193.85,14H208.08C209.18,14 210.08,14.9 210.08,16V32C210.08,33.1 209.18,34 208.08,34H193.85C192.74,34 191.85,33.1 191.85,32V16Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M214.08,16C214.08,14.9 214.97,14 216.08,14H230.31C231.41,14 232.31,14.9 232.31,16V32C232.31,33.1 231.41,34 230.31,34H216.08C214.97,34 214.08,33.1 214.08,32V16Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M236.31,16C236.31,14.9 237.2,14 238.31,14H252.54C253.64,14 254.54,14.9 254.54,16V32C254.54,33.1 253.64,34 252.54,34H238.31C237.2,34 236.31,33.1 236.31,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M258.54,16C258.54,14.9 259.43,14 260.54,14H274.77C275.87,14 276.77,14.9 276.77,16V32C276.77,33.1 275.87,34 274.77,34H260.54C259.43,34 258.54,33.1 258.54,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M280.77,16C280.77,14.9 281.67,14 282.77,14H297C298.11,14 299,14.9 299,16V32C299,33.1 298.11,34 297,34H282.77C281.67,34 280.77,33.1 280.77,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M303,16C303,14.9 303.89,14 305,14H332C333.11,14 334,14.9 334,16V32C334,33.1 333.11,34 332,34H305C303.89,34 303,33.1 303,32V16Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M14,44C14,42.9 14.9,42 16,42H43C44.1,42 45,42.9 45,44V60C45,61.1 44.1,62 43,62H16C14.9,62 14,61.1 14,60V44Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M49,44C49,42.9 49.9,42 51,42H68.4C69.5,42 70.4,42.9 70.4,44V60C70.4,61.1 69.5,62 68.4,62H51C49.9,62 49,61.1 49,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M74.4,44C74.4,42.9 75.3,42 76.4,42H93.8C94.9,42 95.8,42.9 95.8,44V60C95.8,61.1 94.9,62 93.8,62H76.4C75.3,62 74.4,61.1 74.4,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M99.8,44C99.8,42.9 100.69,42 101.8,42H119.2C120.31,42 121.2,42.9 121.2,44V60C121.2,61.1 120.31,62 119.2,62H101.8C100.69,62 99.8,61.1 99.8,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M125.2,44C125.2,42.9 126.1,42 127.2,42H144.6C145.71,42 146.6,42.9 146.6,44V60C146.6,61.1 145.71,62 144.6,62H127.2C126.1,62 125.2,61.1 125.2,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M150.6,44C150.6,42.9 151.5,42 152.6,42H170C171.1,42 172,42.9 172,44V60C172,61.1 171.1,62 170,62H152.6C151.5,62 150.6,61.1 150.6,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M176,44C176,42.9 176.9,42 178,42H195.4C196.51,42 197.4,42.9 197.4,44V60C197.4,61.1 196.51,62 195.4,62H178C176.9,62 176,61.1 176,60V44Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M201.4,44C201.4,42.9 202.29,42 203.4,42H220.8C221.9,42 222.8,42.9 222.8,44V60C222.8,61.1 221.9,62 220.8,62H203.4C202.29,62 201.4,61.1 201.4,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M226.8,44C226.8,42.9 227.7,42 228.8,42H246.2C247.3,42 248.2,42.9 248.2,44V60C248.2,61.1 247.3,62 246.2,62H228.8C227.7,62 226.8,61.1 226.8,60V44Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M252.2,44C252.2,42.9 253.1,42 254.2,42H271.6C272.7,42 273.6,42.9 273.6,44V60C273.6,61.1 272.7,62 271.6,62H254.2C253.1,62 252.2,61.1 252.2,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M277.6,44C277.6,42.9 278.5,42 279.6,42H297C298.11,42 299,42.9 299,44V60C299,61.1 298.11,62 297,62H279.6C278.5,62 277.6,61.1 277.6,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M303,44C303,42.9 303.89,42 305,42H332C333.11,42 334,42.9 334,44V60C334,61.1 333.11,62 332,62H305C303.89,62 303,61.1 303,60V44Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M14,72C14,70.9 14.9,70 16,70H48C49.1,70 50,70.9 50,72V88C50,89.1 49.1,90 48,90H16C14.9,90 14,89.1 14,88V72Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M54,72C54,70.9 54.9,70 56,70H73.78C74.88,70 75.78,70.9 75.78,72V88C75.78,89.1 74.88,90 73.78,90H56C54.9,90 54,89.1 54,88V72Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M79.78,72C79.78,70.9 80.67,70 81.78,70H99.56C100.66,70 101.56,70.9 101.56,72V88C101.56,89.1 100.66,90 99.56,90H81.78C80.67,90 79.78,89.1 79.78,88V72Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M105.56,72C105.56,70.9 106.45,70 107.56,70H125.33C126.44,70 127.33,70.9 127.33,72V88C127.33,89.1 126.44,90 125.33,90H107.56C106.45,90 105.56,89.1 105.56,88V72Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M131.33,72C131.33,70.9 132.23,70 133.33,70H151.11C152.22,70 153.11,70.9 153.11,72V88C153.11,89.1 152.22,90 151.11,90H133.33C132.23,90 131.33,89.1 131.33,88V72Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M157.11,72C157.11,70.9 158.01,70 159.11,70H176.89C177.99,70 178.89,70.9 178.89,72V88C178.89,89.1 177.99,90 176.89,90H159.11C158.01,90 157.11,89.1 157.11,88V72Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M182.89,72C182.89,70.9 183.78,70 184.89,70H202.67C203.77,70 204.67,70.9 204.67,72V88C204.67,89.1 203.77,90 202.67,90H184.89C183.78,90 182.89,89.1 182.89,88V72Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M208.67,72C208.67,70.9 209.56,70 210.67,70H228.45C229.55,70 230.45,70.9 230.45,72V88C230.45,89.1 229.55,90 228.45,90H210.67C209.56,90 208.67,89.1 208.67,88V72Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M234.44,72C234.44,70.9 235.34,70 236.44,70H254.22C255.33,70 256.22,70.9 256.22,72V88C256.22,89.1 255.33,90 254.22,90H236.44C235.34,90 234.44,89.1 234.44,88V72Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M260.22,72C260.22,70.9 261.12,70 262.22,70H280C281.11,70 282,70.9 282,72V88C282,89.1 281.11,90 280,90H262.22C261.12,90 260.22,89.1 260.22,88V72Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M286,72C286,70.9 286.89,70 288,70H332C333.11,70 334,70.9 334,72V88C334,89.1 333.11,90 332,90H288C286.89,90 286,89.1 286,88V72Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M14,100C14,98.9 14.9,98 16,98H62C63.1,98 64,98.9 64,100V116C64,117.11 63.1,118 62,118H16C14.9,118 14,117.11 14,116V100Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M68,100C68,98.9 68.9,98 70,98H87.78C88.88,98 89.78,98.9 89.78,100V116C89.78,117.11 88.88,118 87.78,118H70C68.9,118 68,117.11 68,116V100Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M93.78,100C93.78,98.9 94.67,98 95.78,98H113.56C114.66,98 115.56,98.9 115.56,100V116C115.56,117.11 114.66,118 113.56,118H95.78C94.67,118 93.78,117.11 93.78,116V100Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M119.56,100C119.56,98.9 120.45,98 121.56,98H139.33C140.44,98 141.33,98.9 141.33,100V116C141.33,117.11 140.44,118 139.33,118H121.56C120.45,118 119.56,117.11 119.56,116V100Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M145.33,100C145.33,98.9 146.23,98 147.33,98H165.11C166.22,98 167.11,98.9 167.11,100V116C167.11,117.11 166.22,118 165.11,118H147.33C146.23,118 145.33,117.11 145.33,116V100Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M171.11,100C171.11,98.9 172.01,98 173.11,98H190.89C191.99,98 192.89,98.9 192.89,100V116C192.89,117.11 191.99,118 190.89,118H173.11C172.01,118 171.11,117.11 171.11,116V100Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M196.89,100C196.89,98.9 197.78,98 198.89,98H216.67C217.77,98 218.67,98.9 218.67,100V116C218.67,117.11 217.77,118 216.67,118H198.89C197.78,118 196.89,117.11 196.89,116V100Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M222.67,100C222.67,98.9 223.56,98 224.67,98H242.45C243.55,98 244.45,98.9 244.45,100V116C244.45,117.11 243.55,118 242.45,118H224.67C223.56,118 222.67,117.11 222.67,116V100Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M248.44,100C248.44,98.9 249.34,98 250.44,98H268.22C269.33,98 270.22,98.9 270.22,100V116C270.22,117.11 269.33,118 268.22,118H250.44C249.34,118 248.44,117.11 248.44,116V100Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M274.22,100C274.22,98.9 275.12,98 276.22,98H294C295.11,98 296,98.9 296,100V116C296,117.11 295.11,118 294,118H276.22C275.12,118 274.22,117.11 274.22,116V100Z"
+        android:fillColor="#F1B3E6"/>
+    <path
+        android:pathData="M300,100C300,98.9 300.89,98 302,98H332C333.11,98 334,98.9 334,100V116C334,117.11 333.11,118 332,118H302C300.89,118 300,117.11 300,116V100Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M14,128C14,126.89 14.9,126 16,126H48C49.1,126 50,126.89 50,128V144C50,145.1 49.1,146 48,146H16C14.9,146 14,145.1 14,144V128Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M54,128C54,126.89 54.9,126 56,126H88C89.1,126 90,126.89 90,128V144C90,145.1 89.1,146 88,146H56C54.9,146 54,145.1 54,144V128Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M94,128C94,126.89 94.9,126 96,126H248C249.1,126 250,126.89 250,128V144C250,145.1 249.1,146 248,146H96C94.9,146 94,145.1 94,144V128Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M254,128C254,126.89 254.9,126 256,126H276C277.11,126 278,126.89 278,128V144C278,145.1 277.11,146 276,146H256C254.9,146 254,145.1 254,144V128Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M282,128C282,126.89 282.89,126 284,126H304C305.11,126 306,126.89 306,128V144C306,145.1 305.11,146 304,146H284C282.89,146 282,145.1 282,144V128Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M310,128C310,126.89 310.89,126 312,126H332C333.11,126 334,126.89 334,128V144C334,145.1 333.11,146 332,146H312C310.89,146 310,145.1 310,144V128Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M18,3C9.72,3 3,9.72 3,18V142C3,150.28 9.72,157 18,157H330C338.28,157 345,150.28 345,142V18C345,9.72 338.28,3 330,3H18Z"
+        android:strokeWidth="6"
+        android:fillColor="#00000000"
+        android:strokeColor="#3A3338"/>
+</vector>
diff --git a/res/drawable-night/mouse_keys_toggle_scroll.xml b/res/drawable-night/mouse_keys_toggle_scroll.xml
new file mode 100644
index 0000000..3d6cbf3
--- /dev/null
+++ b/res/drawable-night/mouse_keys_toggle_scroll.xml
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2024 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="348dp"
+        android:height="160dp"
+        android:viewportWidth="348"
+        android:viewportHeight="160">
+    <path
+        android:pathData="M6,14C6,9.58 9.58,6 14,6H334C338.42,6 342,9.58 342,14V146C342,150.42 338.42,154 334,154H14C9.58,154 6,150.42 6,146V14Z"
+        android:fillColor="#171216"/>
+    <path
+        android:pathData="M14,16C14,14.9 14.9,14 16,14H30.23C31.34,14 32.23,14.9 32.23,16V32C32.23,33.1 31.34,34 30.23,34H16C14.9,34 14,33.1 14,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M36.23,16C36.23,14.9 37.13,14 38.23,14H52.46C53.57,14 54.46,14.9 54.46,16V32C54.46,33.1 53.57,34 52.46,34H38.23C37.13,34 36.23,33.1 36.23,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M58.46,16C58.46,14.9 59.36,14 60.46,14H74.69C75.8,14 76.69,14.9 76.69,16V32C76.69,33.1 75.8,34 74.69,34H60.46C59.36,34 58.46,33.1 58.46,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M80.69,16C80.69,14.9 81.59,14 82.69,14H96.92C98.03,14 98.92,14.9 98.92,16V32C98.92,33.1 98.03,34 96.92,34H82.69C81.59,34 80.69,33.1 80.69,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M102.92,16C102.92,14.9 103.82,14 104.92,14H119.15C120.26,14 121.15,14.9 121.15,16V32C121.15,33.1 120.26,34 119.15,34H104.92C103.82,34 102.92,33.1 102.92,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M125.15,16C125.15,14.9 126.05,14 127.15,14H141.38C142.49,14 143.38,14.9 143.38,16V32C143.38,33.1 142.49,34 141.38,34H127.15C126.05,34 125.15,33.1 125.15,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M147.38,16C147.38,14.9 148.28,14 149.38,14H163.62C164.72,14 165.62,14.9 165.62,16V32C165.62,33.1 164.72,34 163.62,34H149.38C148.28,34 147.38,33.1 147.38,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M169.62,16C169.62,14.9 170.51,14 171.62,14H185.85C186.95,14 187.85,14.9 187.85,16V32C187.85,33.1 186.95,34 185.85,34H171.62C170.51,34 169.62,33.1 169.62,32V16Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M191.85,16C191.85,14.9 192.74,14 193.85,14H208.08C209.18,14 210.08,14.9 210.08,16V32C210.08,33.1 209.18,34 208.08,34H193.85C192.74,34 191.85,33.1 191.85,32V16Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M214.08,16C214.08,14.9 214.97,14 216.08,14H230.31C231.41,14 232.31,14.9 232.31,16V32C232.31,33.1 231.41,34 230.31,34H216.08C214.97,34 214.08,33.1 214.08,32V16Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M236.31,16C236.31,14.9 237.2,14 238.31,14H252.54C253.64,14 254.54,14.9 254.54,16V32C254.54,33.1 253.64,34 252.54,34H238.31C237.2,34 236.31,33.1 236.31,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M258.54,16C258.54,14.9 259.43,14 260.54,14H274.77C275.87,14 276.77,14.9 276.77,16V32C276.77,33.1 275.87,34 274.77,34H260.54C259.43,34 258.54,33.1 258.54,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M280.77,16C280.77,14.9 281.67,14 282.77,14H297C298.11,14 299,14.9 299,16V32C299,33.1 298.11,34 297,34H282.77C281.67,34 280.77,33.1 280.77,32V16Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M303,16C303,14.9 303.89,14 305,14H332C333.11,14 334,14.9 334,16V32C334,33.1 333.11,34 332,34H305C303.89,34 303,33.1 303,32V16Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M14,44C14,42.9 14.9,42 16,42H43C44.1,42 45,42.9 45,44V60C45,61.1 44.1,62 43,62H16C14.9,62 14,61.1 14,60V44Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M49,44C49,42.9 49.9,42 51,42H68.4C69.5,42 70.4,42.9 70.4,44V60C70.4,61.1 69.5,62 68.4,62H51C49.9,62 49,61.1 49,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M74.4,44C74.4,42.9 75.3,42 76.4,42H93.8C94.9,42 95.8,42.9 95.8,44V60C95.8,61.1 94.9,62 93.8,62H76.4C75.3,62 74.4,61.1 74.4,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M99.8,44C99.8,42.9 100.69,42 101.8,42H119.2C120.31,42 121.2,42.9 121.2,44V60C121.2,61.1 120.31,62 119.2,62H101.8C100.69,62 99.8,61.1 99.8,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M125.2,44C125.2,42.9 126.1,42 127.2,42H144.6C145.71,42 146.6,42.9 146.6,44V60C146.6,61.1 145.71,62 144.6,62H127.2C126.1,62 125.2,61.1 125.2,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M150.6,44C150.6,42.9 151.5,42 152.6,42H170C171.1,42 172,42.9 172,44V60C172,61.1 171.1,62 170,62H152.6C151.5,62 150.6,61.1 150.6,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M176,44C176,42.9 176.9,42 178,42H195.4C196.51,42 197.4,42.9 197.4,44V60C197.4,61.1 196.51,62 195.4,62H178C176.9,62 176,61.1 176,60V44Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M201.4,44C201.4,42.9 202.29,42 203.4,42H220.8C221.9,42 222.8,42.9 222.8,44V60C222.8,61.1 221.9,62 220.8,62H203.4C202.29,62 201.4,61.1 201.4,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M226.8,44C226.8,42.9 227.7,42 228.8,42H246.2C247.3,42 248.2,42.9 248.2,44V60C248.2,61.1 247.3,62 246.2,62H228.8C227.7,62 226.8,61.1 226.8,60V44Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M252.2,44C252.2,42.9 253.1,42 254.2,42H271.6C272.7,42 273.6,42.9 273.6,44V60C273.6,61.1 272.7,62 271.6,62H254.2C253.1,62 252.2,61.1 252.2,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M277.6,44C277.6,42.9 278.5,42 279.6,42H297C298.11,42 299,42.9 299,44V60C299,61.1 298.11,62 297,62H279.6C278.5,62 277.6,61.1 277.6,60V44Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M303,44C303,42.9 303.89,42 305,42H332C333.11,42 334,42.9 334,44V60C334,61.1 333.11,62 332,62H305C303.89,62 303,61.1 303,60V44Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M14,72C14,70.9 14.9,70 16,70H48C49.1,70 50,70.9 50,72V88C50,89.1 49.1,90 48,90H16C14.9,90 14,89.1 14,88V72Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M54,72C54,70.9 54.9,70 56,70H73.78C74.88,70 75.78,70.9 75.78,72V88C75.78,89.1 74.88,90 73.78,90H56C54.9,90 54,89.1 54,88V72Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M79.78,72C79.78,70.9 80.67,70 81.78,70H99.56C100.66,70 101.56,70.9 101.56,72V88C101.56,89.1 100.66,90 99.56,90H81.78C80.67,90 79.78,89.1 79.78,88V72Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M105.56,72C105.56,70.9 106.45,70 107.56,70H125.33C126.44,70 127.33,70.9 127.33,72V88C127.33,89.1 126.44,90 125.33,90H107.56C106.45,90 105.56,89.1 105.56,88V72Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M131.33,72C131.33,70.9 132.23,70 133.33,70H151.11C152.22,70 153.11,70.9 153.11,72V88C153.11,89.1 152.22,90 151.11,90H133.33C132.23,90 131.33,89.1 131.33,88V72Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M157.11,72C157.11,70.9 158.01,70 159.11,70H176.89C177.99,70 178.89,70.9 178.89,72V88C178.89,89.1 177.99,90 176.89,90H159.11C158.01,90 157.11,89.1 157.11,88V72Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M182.89,72C182.89,70.9 183.78,70 184.89,70H202.67C203.77,70 204.67,70.9 204.67,72V88C204.67,89.1 203.77,90 202.67,90H184.89C183.78,90 182.89,89.1 182.89,88V72Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M208.67,72C208.67,70.9 209.56,70 210.67,70H228.45C229.55,70 230.45,70.9 230.45,72V88C230.45,89.1 229.55,90 228.45,90H210.67C209.56,90 208.67,89.1 208.67,88V72Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M234.44,72C234.44,70.9 235.34,70 236.44,70H254.22C255.33,70 256.22,70.9 256.22,72V88C256.22,89.1 255.33,90 254.22,90H236.44C235.34,90 234.44,89.1 234.44,88V72Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M260.22,72C260.22,70.9 261.12,70 262.22,70H280C281.11,70 282,70.9 282,72V88C282,89.1 281.11,90 280,90H262.22C261.12,90 260.22,89.1 260.22,88V72Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M286,72C286,70.9 286.89,70 288,70H332C333.11,70 334,70.9 334,72V88C334,89.1 333.11,90 332,90H288C286.89,90 286,89.1 286,88V72Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M14,100C14,98.9 14.9,98 16,98H62C63.1,98 64,98.9 64,100V116C64,117.11 63.1,118 62,118H16C14.9,118 14,117.11 14,116V100Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M68,100C68,98.9 68.9,98 70,98H87.78C88.88,98 89.78,98.9 89.78,100V116C89.78,117.11 88.88,118 87.78,118H70C68.9,118 68,117.11 68,116V100Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M93.78,100C93.78,98.9 94.67,98 95.78,98H113.56C114.66,98 115.56,98.9 115.56,100V116C115.56,117.11 114.66,118 113.56,118H95.78C94.67,118 93.78,117.11 93.78,116V100Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M119.56,100C119.56,98.9 120.45,98 121.56,98H139.33C140.44,98 141.33,98.9 141.33,100V116C141.33,117.11 140.44,118 139.33,118H121.56C120.45,118 119.56,117.11 119.56,116V100Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M145.33,100C145.33,98.9 146.23,98 147.33,98H165.11C166.22,98 167.11,98.9 167.11,100V116C167.11,117.11 166.22,118 165.11,118H147.33C146.23,118 145.33,117.11 145.33,116V100Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M171.11,100C171.11,98.9 172.01,98 173.11,98H190.89C191.99,98 192.89,98.9 192.89,100V116C192.89,117.11 191.99,118 190.89,118H173.11C172.01,118 171.11,117.11 171.11,116V100Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M196.89,100C196.89,98.9 197.78,98 198.89,98H216.67C217.77,98 218.67,98.9 218.67,100V116C218.67,117.11 217.77,118 216.67,118H198.89C197.78,118 196.89,117.11 196.89,116V100Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M222.67,100C222.67,98.9 223.56,98 224.67,98H242.45C243.55,98 244.45,98.9 244.45,100V116C244.45,117.11 243.55,118 242.45,118H224.67C223.56,118 222.67,117.11 222.67,116V100Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M248.44,100C248.44,98.9 249.34,98 250.44,98H268.22C269.33,98 270.22,98.9 270.22,100V116C270.22,117.11 269.33,118 268.22,118H250.44C249.34,118 248.44,117.11 248.44,116V100Z"
+        android:fillColor="#F1B3E6"/>
+    <path
+        android:pathData="M274.22,100C274.22,98.9 275.12,98 276.22,98H294C295.11,98 296,98.9 296,100V116C296,117.11 295.11,118 294,118H276.22C275.12,118 274.22,117.11 274.22,116V100Z"
+        android:fillColor="#554151"/>
+    <path
+        android:pathData="M300,100C300,98.9 300.89,98 302,98H332C333.11,98 334,98.9 334,100V116C334,117.11 333.11,118 332,118H302C300.89,118 300,117.11 300,116V100Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M14,128C14,126.89 14.9,126 16,126H48C49.1,126 50,126.89 50,128V144C50,145.1 49.1,146 48,146H16C14.9,146 14,145.1 14,144V128Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M54,128C54,126.89 54.9,126 56,126H88C89.1,126 90,126.89 90,128V144C90,145.1 89.1,146 88,146H56C54.9,146 54,145.1 54,144V128Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M94,128C94,126.89 94.9,126 96,126H248C249.1,126 250,126.89 250,128V144C250,145.1 249.1,146 248,146H96C94.9,146 94,145.1 94,144V128Z"
+        android:fillColor="#4E444B"/>
+    <path
+        android:pathData="M254,128C254,126.89 254.9,126 256,126H276C277.11,126 278,126.89 278,128V144C278,145.1 277.11,146 276,146H256C254.9,146 254,145.1 254,144V128Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M282,128C282,126.89 282.89,126 284,126H304C305.11,126 306,126.89 306,128V144C306,145.1 305.11,146 304,146H284C282.89,146 282,145.1 282,144V128Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M310,128C310,126.89 310.89,126 312,126H332C333.11,126 334,126.89 334,128V144C334,145.1 333.11,146 332,146H312C310.89,146 310,145.1 310,144V128Z"
+        android:fillColor="#3A3338"/>
+    <path
+        android:pathData="M18,3C9.72,3 3,9.72 3,18V142C3,150.28 9.72,157 18,157H330C338.28,157 345,150.28 345,142V18C345,9.72 338.28,3 330,3H18Z"
+        android:strokeWidth="6"
+        android:fillColor="#00000000"
+        android:strokeColor="#3A3338"/>
+</vector>
diff --git a/res/drawable/audio_sharing_rounded_bg.xml b/res/drawable/audio_sharing_rounded_bg.xml
deleted file mode 100644
index 35517ea..0000000
--- a/res/drawable/audio_sharing_rounded_bg.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2023 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<shape
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
-    android:shape="rectangle">
-    <solid android:color="?androidprv:attr/colorAccentPrimary" />
-    <corners android:radius="12dp" />
-</shape>
\ No newline at end of file
diff --git a/res/drawable/audio_sharing_rounded_bg_ripple.xml b/res/drawable/audio_sharing_rounded_bg_ripple.xml
deleted file mode 100644
index 18696c6..0000000
--- a/res/drawable/audio_sharing_rounded_bg_ripple.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2023 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<ripple xmlns:android="http://schemas.android.com/apk/res/android"
-    android:color="?android:attr/colorControlHighlight">
-    <item android:drawable="@drawable/audio_sharing_rounded_bg"/>
-</ripple>
\ No newline at end of file
diff --git a/res/drawable/mouse_keys_click.xml b/res/drawable/mouse_keys_click.xml
new file mode 100644
index 0000000..2dd6238
--- /dev/null
+++ b/res/drawable/mouse_keys_click.xml
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2024 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="348dp"
+        android:height="160dp"
+        android:viewportWidth="348"
+        android:viewportHeight="160">
+    <path
+        android:pathData="M6,14C6,9.58 9.58,6 14,6H334C338.42,6 342,9.58 342,14V146C342,150.42 338.42,154 334,154H14C9.58,154 6,150.42 6,146V14Z"
+        android:fillColor="#FFF7F9"/>
+    <path
+        android:pathData="M14,16C14,14.9 14.9,14 16,14H30.23C31.34,14 32.23,14.9 32.23,16V32C32.23,33.1 31.34,34 30.23,34H16C14.9,34 14,33.1 14,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M36.23,16C36.23,14.9 37.13,14 38.23,14H52.46C53.57,14 54.46,14.9 54.46,16V32C54.46,33.1 53.57,34 52.46,34H38.23C37.13,34 36.23,33.1 36.23,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M58.46,16C58.46,14.9 59.36,14 60.46,14H74.69C75.8,14 76.69,14.9 76.69,16V32C76.69,33.1 75.8,34 74.69,34H60.46C59.36,34 58.46,33.1 58.46,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M80.69,16C80.69,14.9 81.59,14 82.69,14H96.92C98.03,14 98.92,14.9 98.92,16V32C98.92,33.1 98.03,34 96.92,34H82.69C81.59,34 80.69,33.1 80.69,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M102.92,16C102.92,14.9 103.82,14 104.92,14H119.15C120.26,14 121.15,14.9 121.15,16V32C121.15,33.1 120.26,34 119.15,34H104.92C103.82,34 102.92,33.1 102.92,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M125.15,16C125.15,14.9 126.05,14 127.15,14H141.38C142.49,14 143.38,14.9 143.38,16V32C143.38,33.1 142.49,34 141.38,34H127.15C126.05,34 125.15,33.1 125.15,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M147.38,16C147.38,14.9 148.28,14 149.38,14H163.62C164.72,14 165.62,14.9 165.62,16V32C165.62,33.1 164.72,34 163.62,34H149.38C148.28,34 147.38,33.1 147.38,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M169.62,16C169.62,14.9 170.51,14 171.62,14H185.85C186.95,14 187.85,14.9 187.85,16V32C187.85,33.1 186.95,34 185.85,34H171.62C170.51,34 169.62,33.1 169.62,32V16Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M191.85,16C191.85,14.9 192.74,14 193.85,14H208.08C209.18,14 210.08,14.9 210.08,16V32C210.08,33.1 209.18,34 208.08,34H193.85C192.74,34 191.85,33.1 191.85,32V16Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M214.08,16C214.08,14.9 214.97,14 216.08,14H230.31C231.41,14 232.31,14.9 232.31,16V32C232.31,33.1 231.41,34 230.31,34H216.08C214.97,34 214.08,33.1 214.08,32V16Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M236.31,16C236.31,14.9 237.2,14 238.31,14H252.54C253.64,14 254.54,14.9 254.54,16V32C254.54,33.1 253.64,34 252.54,34H238.31C237.2,34 236.31,33.1 236.31,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M258.54,16C258.54,14.9 259.43,14 260.54,14H274.77C275.87,14 276.77,14.9 276.77,16V32C276.77,33.1 275.87,34 274.77,34H260.54C259.43,34 258.54,33.1 258.54,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M280.77,16C280.77,14.9 281.67,14 282.77,14H297C298.11,14 299,14.9 299,16V32C299,33.1 298.11,34 297,34H282.77C281.67,34 280.77,33.1 280.77,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M303,16C303,14.9 303.89,14 305,14H332C333.11,14 334,14.9 334,16V32C334,33.1 333.11,34 332,34H305C303.89,34 303,33.1 303,32V16Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M14,44C14,42.9 14.9,42 16,42H43C44.1,42 45,42.9 45,44V60C45,61.1 44.1,62 43,62H16C14.9,62 14,61.1 14,60V44Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M49,44C49,42.9 49.9,42 51,42H68.4C69.5,42 70.4,42.9 70.4,44V60C70.4,61.1 69.5,62 68.4,62H51C49.9,62 49,61.1 49,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M74.4,44C74.4,42.9 75.3,42 76.4,42H93.8C94.9,42 95.8,42.9 95.8,44V60C95.8,61.1 94.9,62 93.8,62H76.4C75.3,62 74.4,61.1 74.4,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M99.8,44C99.8,42.9 100.69,42 101.8,42H119.2C120.31,42 121.2,42.9 121.2,44V60C121.2,61.1 120.31,62 119.2,62H101.8C100.69,62 99.8,61.1 99.8,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M125.2,44C125.2,42.9 126.1,42 127.2,42H144.6C145.71,42 146.6,42.9 146.6,44V60C146.6,61.1 145.71,62 144.6,62H127.2C126.1,62 125.2,61.1 125.2,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M150.6,44C150.6,42.9 151.5,42 152.6,42H170C171.1,42 172,42.9 172,44V60C172,61.1 171.1,62 170,62H152.6C151.5,62 150.6,61.1 150.6,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M176,44C176,42.9 176.9,42 178,42H195.4C196.51,42 197.4,42.9 197.4,44V60C197.4,61.1 196.51,62 195.4,62H178C176.9,62 176,61.1 176,60V44Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M201.4,44C201.4,42.9 202.29,42 203.4,42H220.8C221.9,42 222.8,42.9 222.8,44V60C222.8,61.1 221.9,62 220.8,62H203.4C202.29,62 201.4,61.1 201.4,60V44Z"
+        android:fillColor="#804D7A"/>
+    <path
+        android:pathData="M226.8,44C226.8,42.9 227.7,42 228.8,42H246.2C247.3,42 248.2,42.9 248.2,44V60C248.2,61.1 247.3,62 246.2,62H228.8C227.7,62 226.8,61.1 226.8,60V44Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M252.2,44C252.2,42.9 253.1,42 254.2,42H271.6C272.7,42 273.6,42.9 273.6,44V60C273.6,61.1 272.7,62 271.6,62H254.2C253.1,62 252.2,61.1 252.2,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M277.6,44C277.6,42.9 278.5,42 279.6,42H297C298.11,42 299,42.9 299,44V60C299,61.1 298.11,62 297,62H279.6C278.5,62 277.6,61.1 277.6,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M303,44C303,42.9 303.89,42 305,42H332C333.11,42 334,42.9 334,44V60C334,61.1 333.11,62 332,62H305C303.89,62 303,61.1 303,60V44Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M14,72C14,70.9 14.9,70 16,70H48C49.1,70 50,70.9 50,72V88C50,89.1 49.1,90 48,90H16C14.9,90 14,89.1 14,88V72Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M54,72C54,70.9 54.9,70 56,70H73.78C74.88,70 75.78,70.9 75.78,72V88C75.78,89.1 74.88,90 73.78,90H56C54.9,90 54,89.1 54,88V72Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M79.78,72C79.78,70.9 80.67,70 81.78,70H99.56C100.66,70 101.56,70.9 101.56,72V88C101.56,89.1 100.66,90 99.56,90H81.78C80.67,90 79.78,89.1 79.78,88V72Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M105.56,72C105.56,70.9 106.45,70 107.56,70H125.33C126.44,70 127.33,70.9 127.33,72V88C127.33,89.1 126.44,90 125.33,90H107.56C106.45,90 105.56,89.1 105.56,88V72Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M131.33,72C131.33,70.9 132.23,70 133.33,70H151.11C152.22,70 153.11,70.9 153.11,72V88C153.11,89.1 152.22,90 151.11,90H133.33C132.23,90 131.33,89.1 131.33,88V72Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M157.11,72C157.11,70.9 158.01,70 159.11,70H176.89C177.99,70 178.89,70.9 178.89,72V88C178.89,89.1 177.99,90 176.89,90H159.11C158.01,90 157.11,89.1 157.11,88V72Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M182.89,72C182.89,70.9 183.78,70 184.89,70H202.67C203.77,70 204.67,70.9 204.67,72V88C204.67,89.1 203.77,90 202.67,90H184.89C183.78,90 182.89,89.1 182.89,88V72Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M208.67,72C208.67,70.9 209.56,70 210.67,70H228.45C229.55,70 230.45,70.9 230.45,72V88C230.45,89.1 229.55,90 228.45,90H210.67C209.56,90 208.67,89.1 208.67,88V72Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M234.44,72C234.44,70.9 235.34,70 236.44,70H254.22C255.33,70 256.22,70.9 256.22,72V88C256.22,89.1 255.33,90 254.22,90H236.44C235.34,90 234.44,89.1 234.44,88V72Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M260.22,72C260.22,70.9 261.12,70 262.22,70H280C281.11,70 282,70.9 282,72V88C282,89.1 281.11,90 280,90H262.22C261.12,90 260.22,89.1 260.22,88V72Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M286,72C286,70.9 286.89,70 288,70H332C333.11,70 334,70.9 334,72V88C334,89.1 333.11,90 332,90H288C286.89,90 286,89.1 286,88V72Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M14,100C14,98.9 14.9,98 16,98H62C63.1,98 64,98.9 64,100V116C64,117.11 63.1,118 62,118H16C14.9,118 14,117.11 14,116V100Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M68,100C68,98.9 68.9,98 70,98H87.78C88.88,98 89.78,98.9 89.78,100V116C89.78,117.11 88.88,118 87.78,118H70C68.9,118 68,117.11 68,116V100Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M93.78,100C93.78,98.9 94.67,98 95.78,98H113.56C114.66,98 115.56,98.9 115.56,100V116C115.56,117.11 114.66,118 113.56,118H95.78C94.67,118 93.78,117.11 93.78,116V100Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M119.56,100C119.56,98.9 120.45,98 121.56,98H139.33C140.44,98 141.33,98.9 141.33,100V116C141.33,117.11 140.44,118 139.33,118H121.56C120.45,118 119.56,117.11 119.56,116V100Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M145.33,100C145.33,98.9 146.23,98 147.33,98H165.11C166.22,98 167.11,98.9 167.11,100V116C167.11,117.11 166.22,118 165.11,118H147.33C146.23,118 145.33,117.11 145.33,116V100Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M171.11,100C171.11,98.9 172.01,98 173.11,98H190.89C191.99,98 192.89,98.9 192.89,100V116C192.89,117.11 191.99,118 190.89,118H173.11C172.01,118 171.11,117.11 171.11,116V100Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M196.89,100C196.89,98.9 197.78,98 198.89,98H216.67C217.77,98 218.67,98.9 218.67,100V116C218.67,117.11 217.77,118 216.67,118H198.89C197.78,118 196.89,117.11 196.89,116V100Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M222.67,100C222.67,98.9 223.56,98 224.67,98H242.45C243.55,98 244.45,98.9 244.45,100V116C244.45,117.11 243.55,118 242.45,118H224.67C223.56,118 222.67,117.11 222.67,116V100Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M248.44,100C248.44,98.9 249.34,98 250.44,98H268.22C269.33,98 270.22,98.9 270.22,100V116C270.22,117.11 269.33,118 268.22,118H250.44C249.34,118 248.44,117.11 248.44,116V100Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M274.22,100C274.22,98.9 275.12,98 276.22,98H294C295.11,98 296,98.9 296,100V116C296,117.11 295.11,118 294,118H276.22C275.12,118 274.22,117.11 274.22,116V100Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M300,100C300,98.9 300.89,98 302,98H332C333.11,98 334,98.9 334,100V116C334,117.11 333.11,118 332,118H302C300.89,118 300,117.11 300,116V100Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M14,128C14,126.89 14.9,126 16,126H48C49.1,126 50,126.89 50,128V144C50,145.1 49.1,146 48,146H16C14.9,146 14,145.1 14,144V128Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M54,128C54,126.89 54.9,126 56,126H88C89.1,126 90,126.89 90,128V144C90,145.1 89.1,146 88,146H56C54.9,146 54,145.1 54,144V128Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M94,128C94,126.89 94.9,126 96,126H248C249.1,126 250,126.89 250,128V144C250,145.1 249.1,146 248,146H96C94.9,146 94,145.1 94,144V128Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M254,128C254,126.89 254.9,126 256,126H276C277.11,126 278,126.89 278,128V144C278,145.1 277.11,146 276,146H256C254.9,146 254,145.1 254,144V128Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M282,128C282,126.89 282.89,126 284,126H304C305.11,126 306,126.89 306,128V144C306,145.1 305.11,146 304,146H284C282.89,146 282,145.1 282,144V128Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M310,128C310,126.89 310.89,126 312,126H332C333.11,126 334,126.89 334,128V144C334,145.1 333.11,146 332,146H312C310.89,146 310,145.1 310,144V128Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M18,3C9.72,3 3,9.72 3,18V142C3,150.28 9.72,157 18,157H330C338.28,157 345,150.28 345,142V18C345,9.72 338.28,3 330,3H18Z"
+        android:strokeWidth="6"
+        android:fillColor="#00000000"
+        android:strokeColor="#ECDFE5"/>
+</vector>
diff --git a/res/drawable/mouse_keys_directional.xml b/res/drawable/mouse_keys_directional.xml
new file mode 100644
index 0000000..ae79563
--- /dev/null
+++ b/res/drawable/mouse_keys_directional.xml
@@ -0,0 +1,251 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2024 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="348dp"
+        android:height="160dp"
+        android:viewportWidth="348"
+        android:viewportHeight="160">
+    <path
+        android:pathData="M6,14C6,9.58 9.58,6 14,6H334C338.42,6 342,9.58 342,14V146C342,150.42 338.42,154 334,154H14C9.58,154 6,150.42 6,146V14Z"
+        android:fillColor="#FFF7F9"/>
+    <path
+        android:pathData="M14,16C14,14.9 14.9,14 16,14H30.23C31.34,14 32.23,14.9 32.23,16V32C32.23,33.1 31.34,34 30.23,34H16C14.9,34 14,33.1 14,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M36.23,16C36.23,14.9 37.13,14 38.23,14H52.46C53.57,14 54.46,14.9 54.46,16V32C54.46,33.1 53.57,34 52.46,34H38.23C37.13,34 36.23,33.1 36.23,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M58.46,16C58.46,14.9 59.36,14 60.46,14H74.69C75.8,14 76.69,14.9 76.69,16V32C76.69,33.1 75.8,34 74.69,34H60.46C59.36,34 58.46,33.1 58.46,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M80.69,16C80.69,14.9 81.59,14 82.69,14H96.92C98.03,14 98.92,14.9 98.92,16V32C98.92,33.1 98.03,34 96.92,34H82.69C81.59,34 80.69,33.1 80.69,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M102.92,16C102.92,14.9 103.82,14 104.92,14H119.15C120.26,14 121.15,14.9 121.15,16V32C121.15,33.1 120.26,34 119.15,34H104.92C103.82,34 102.92,33.1 102.92,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M125.15,16C125.15,14.9 126.05,14 127.15,14H141.38C142.49,14 143.38,14.9 143.38,16V32C143.38,33.1 142.49,34 141.38,34H127.15C126.05,34 125.15,33.1 125.15,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M147.38,16C147.38,14.9 148.28,14 149.38,14H163.62C164.72,14 165.62,14.9 165.62,16V32C165.62,33.1 164.72,34 163.62,34H149.38C148.28,34 147.38,33.1 147.38,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M169.62,16C169.62,14.9 170.51,14 171.62,14H185.85C186.95,14 187.85,14.9 187.85,16V32C187.85,33.1 186.95,34 185.85,34H171.62C170.51,34 169.62,33.1 169.62,32V16Z"
+        android:fillColor="#804D7A"/>
+    <path
+        android:pathData="M169.62,16C169.62,14.9 170.51,14 171.62,14H185.85C186.95,14 187.85,14.9 187.85,16V32C187.85,33.1 186.95,34 185.85,34H171.62C170.51,34 169.62,33.1 169.62,32V16Z"
+        android:fillColor="#804D7A"/>
+    <group>
+        <clip-path
+            android:pathData="M172.4,18h12v12h-12z"/>
+        <path
+            android:pathData="M181.24,27.41L176.46,22.64V26.69H174.99V20.11H181.56V21.59H177.51L182.29,26.36L181.24,27.41Z"
+            android:fillColor="#ffffff"/>
+    </group>
+    <path
+        android:pathData="M191.85,16C191.85,14.9 192.74,14 193.85,14H208.08C209.18,14 210.08,14.9 210.08,16V32C210.08,33.1 209.18,34 208.08,34H193.85C192.74,34 191.85,33.1 191.85,32V16Z"
+        android:fillColor="#804D7A"/>
+    <group>
+        <clip-path
+            android:pathData="M194.63,18h12v12h-12z"/>
+        <path
+            android:pathData="M199.89,28.02V22.81L197.66,25.05L196.61,24L200.63,19.98L204.66,24L203.61,25.05L201.37,22.81V28.02H199.89Z"
+            android:fillColor="#ffffff"/>
+    </group>
+    <path
+        android:pathData="M214.08,16C214.08,14.9 214.97,14 216.08,14H230.31C231.41,14 232.31,14.9 232.31,16V32C232.31,33.1 231.41,34 230.31,34H216.08C214.97,34 214.08,33.1 214.08,32V16Z"
+        android:fillColor="#804D7A"/>
+    <group>
+        <clip-path
+            android:pathData="M216.86,18h12v12h-12z"/>
+        <path
+            android:pathData="M220.02,27.41L218.98,26.36L223.75,21.59H219.7V20.11H226.27V26.69H224.8V22.64L220.02,27.41Z"
+            android:fillColor="#ffffff"/>
+    </group>
+    <path
+        android:pathData="M236.31,16C236.31,14.9 237.2,14 238.31,14H252.54C253.64,14 254.54,14.9 254.54,16V32C254.54,33.1 253.64,34 252.54,34H238.31C237.2,34 236.31,33.1 236.31,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M258.54,16C258.54,14.9 259.43,14 260.54,14H274.77C275.87,14 276.77,14.9 276.77,16V32C276.77,33.1 275.87,34 274.77,34H260.54C259.43,34 258.54,33.1 258.54,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M280.77,16C280.77,14.9 281.66,14 282.77,14H297C298.1,14 299,14.9 299,16V32C299,33.1 298.1,34 297,34H282.77C281.66,34 280.77,33.1 280.77,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M303,16C303,14.9 303.89,14 305,14H332C333.11,14 334,14.9 334,16V32C334,33.1 333.11,34 332,34H305C303.89,34 303,33.1 303,32V16Z"
+        android:fillColor="#F2E5EB"/>
+    <path
+        android:pathData="M14,44C14,42.9 14.9,42 16,42H43C44.1,42 45,42.9 45,44V60C45,61.1 44.1,62 43,62H16C14.9,62 14,61.1 14,60V44Z"
+        android:fillColor="#F2E5EB"/>
+    <path
+        android:pathData="M49,44C49,42.9 49.9,42 51,42H68.4C69.5,42 70.4,42.9 70.4,44V60C70.4,61.1 69.5,62 68.4,62H51C49.9,62 49,61.1 49,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M74.4,44C74.4,42.9 75.3,42 76.4,42H93.8C94.9,42 95.8,42.9 95.8,44V60C95.8,61.1 94.9,62 93.8,62H76.4C75.3,62 74.4,61.1 74.4,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M99.8,44C99.8,42.9 100.69,42 101.8,42H119.2C120.3,42 121.2,42.9 121.2,44V60C121.2,61.1 120.3,62 119.2,62H101.8C100.69,62 99.8,61.1 99.8,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M125.2,44C125.2,42.9 126.1,42 127.2,42H144.6C145.71,42 146.6,42.9 146.6,44V60C146.6,61.1 145.71,62 144.6,62H127.2C126.1,62 125.2,61.1 125.2,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M150.6,44C150.6,42.9 151.5,42 152.6,42H170C171.1,42 172,42.9 172,44V60C172,61.1 171.1,62 170,62H152.6C151.5,62 150.6,61.1 150.6,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M176,44C176,42.9 176.9,42 178,42H195.4C196.51,42 197.4,42.9 197.4,44V60C197.4,61.1 196.51,62 195.4,62H178C176.9,62 176,61.1 176,60V44Z"
+        android:fillColor="#804D7A"/>
+    <group>
+        <clip-path
+            android:pathData="M180.79,46h12v12h-12z"/>
+        <path
+            android:pathData="M185.6,52.74L187.84,54.97L186.79,56.03L182.76,52L186.79,47.97L187.84,49.03L185.6,51.26H190.81V52.74H185.6Z"
+            android:fillColor="#ffffff"/>
+    </group>
+    <path
+        android:pathData="M201.4,44C201.4,42.9 202.29,42 203.4,42H220.8C221.9,42 222.8,42.9 222.8,44V60C222.8,61.1 221.9,62 220.8,62H203.4C202.29,62 201.4,61.1 201.4,60V44Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M226.8,44C226.8,42.9 227.7,42 228.8,42H246.2C247.3,42 248.2,42.9 248.2,44V60C248.2,61.1 247.3,62 246.2,62H228.8C227.7,62 226.8,61.1 226.8,60V44Z"
+        android:fillColor="#804D7A"/>
+    <group>
+        <clip-path
+            android:pathData="M231.59,46h12v12h-12z"/>
+        <path
+            android:pathData="M238.77,52.74H233.56V51.26H238.77L236.54,49.03L237.59,47.97L241.61,52L237.59,56.03L236.54,54.97L238.77,52.74Z"
+            android:fillColor="#ffffff"/>
+    </group>
+    <path
+        android:pathData="M252.2,44C252.2,42.9 253.1,42 254.2,42H271.6C272.7,42 273.6,42.9 273.6,44V60C273.6,61.1 272.7,62 271.6,62H254.2C253.1,62 252.2,61.1 252.2,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M277.6,44C277.6,42.9 278.5,42 279.6,42H297C298.11,42 299,42.9 299,44V60C299,61.1 298.11,62 297,62H279.6C278.5,62 277.6,61.1 277.6,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M303,44C303,42.9 303.89,42 305,42H332C333.11,42 334,42.9 334,44V60C334,61.1 333.11,62 332,62H305C303.89,62 303,61.1 303,60V44Z"
+        android:fillColor="#F2E5EB"/>
+    <path
+        android:pathData="M14,72C14,70.9 14.9,70 16,70H48C49.1,70 50,70.9 50,72V88C50,89.1 49.1,90 48,90H16C14.9,90 14,89.1 14,88V72Z"
+        android:fillColor="#F2E5EB"/>
+    <path
+        android:pathData="M54,72C54,70.9 54.9,70 56,70H73.78C74.88,70 75.78,70.9 75.78,72V88C75.78,89.1 74.88,90 73.78,90H56C54.9,90 54,89.1 54,88V72Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M79.78,72C79.78,70.9 80.67,70 81.78,70H99.56C100.66,70 101.56,70.9 101.56,72V88C101.56,89.1 100.66,90 99.56,90H81.78C80.67,90 79.78,89.1 79.78,88V72Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M105.56,72C105.56,70.9 106.45,70 107.56,70H125.33C126.44,70 127.33,70.9 127.33,72V88C127.33,89.1 126.44,90 125.33,90H107.56C106.45,90 105.56,89.1 105.56,88V72Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M131.33,72C131.33,70.9 132.23,70 133.33,70H151.11C152.22,70 153.11,70.9 153.11,72V88C153.11,89.1 152.22,90 151.11,90H133.33C132.23,90 131.33,89.1 131.33,88V72Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M157.11,72C157.11,70.9 158.01,70 159.11,70H176.89C177.99,70 178.89,70.9 178.89,72V88C178.89,89.1 177.99,90 176.89,90H159.11C158.01,90 157.11,89.1 157.11,88V72Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M182.89,72C182.89,70.9 183.78,70 184.89,70H202.67C203.77,70 204.67,70.9 204.67,72V88C204.67,89.1 203.77,90 202.67,90H184.89C183.78,90 182.89,89.1 182.89,88V72Z"
+        android:fillColor="#804D7A"/>
+    <group>
+        <clip-path
+            android:pathData="M187.67,74h12v12h-12z"/>
+        <path
+            android:pathData="M190.09,83.59V78.51H191.56V81.07L196.64,76L197.67,77.04L192.6,82.11H195.16V83.59H190.09Z"
+            android:fillColor="#ffffff"/>
+    </group>
+    <path
+        android:pathData="M208.67,72C208.67,70.9 209.56,70 210.67,70H228.44C229.55,70 230.44,70.9 230.44,72V88C230.44,89.1 229.55,90 228.44,90H210.67C209.56,90 208.67,89.1 208.67,88V72Z"
+        android:fillColor="#804D7A"/>
+    <group>
+        <clip-path
+            android:pathData="M213.45,74h12v12h-12z"/>
+        <path
+            android:pathData="M218.71,75.97H220.19V81.19L222.43,78.95L223.48,80L219.45,84.03L215.43,80L216.48,78.95L218.71,81.19V75.97Z"
+            android:fillColor="#ffffff"/>
+    </group>
+    <path
+        android:pathData="M234.44,72C234.44,70.9 235.34,70 236.44,70H254.22C255.33,70 256.22,70.9 256.22,72V88C256.22,89.1 255.33,90 254.22,90H236.44C235.34,90 234.44,89.1 234.44,88V72Z"
+        android:fillColor="#804D7A"/>
+    <group>
+        <clip-path
+            android:pathData="M239.23,74h12v12h-12z"/>
+        <path
+            android:pathData="M243.84,83.69V82.21H246.4L241.21,77.01L242.24,75.97L247.44,81.18V78.61H248.92V83.69H243.84Z"
+            android:fillColor="#ffffff"/>
+    </group>
+    <path
+        android:pathData="M260.22,72C260.22,70.9 261.12,70 262.22,70H280C281.11,70 282,70.9 282,72V88C282,89.1 281.11,90 280,90H262.22C261.12,90 260.22,89.1 260.22,88V72Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M286,72C286,70.9 286.89,70 288,70H332C333.11,70 334,70.9 334,72V88C334,89.1 333.11,90 332,90H288C286.89,90 286,89.1 286,88V72Z"
+        android:fillColor="#F2E5EB"/>
+    <path
+        android:pathData="M14,100C14,98.9 14.9,98 16,98H62C63.1,98 64,98.9 64,100V116C64,117.11 63.1,118 62,118H16C14.9,118 14,117.11 14,116V100Z"
+        android:fillColor="#F2E5EB"/>
+    <path
+        android:pathData="M68,100C68,98.9 68.9,98 70,98H87.78C88.88,98 89.78,98.9 89.78,100V116C89.78,117.11 88.88,118 87.78,118H70C68.9,118 68,117.11 68,116V100Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M93.78,100C93.78,98.9 94.67,98 95.78,98H113.56C114.66,98 115.56,98.9 115.56,100V116C115.56,117.11 114.66,118 113.56,118H95.78C94.67,118 93.78,117.11 93.78,116V100Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M119.56,100C119.56,98.9 120.45,98 121.56,98H139.33C140.44,98 141.33,98.9 141.33,100V116C141.33,117.11 140.44,118 139.33,118H121.56C120.45,118 119.56,117.11 119.56,116V100Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M145.33,100C145.33,98.9 146.23,98 147.33,98H165.11C166.22,98 167.11,98.9 167.11,100V116C167.11,117.11 166.22,118 165.11,118H147.33C146.23,118 145.33,117.11 145.33,116V100Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M171.11,100C171.11,98.9 172.01,98 173.11,98H190.89C191.99,98 192.89,98.9 192.89,100V116C192.89,117.11 191.99,118 190.89,118H173.11C172.01,118 171.11,117.11 171.11,116V100Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M196.89,100C196.89,98.9 197.78,98 198.89,98H216.67C217.77,98 218.67,98.9 218.67,100V116C218.67,117.11 217.77,118 216.67,118H198.89C197.78,118 196.89,117.11 196.89,116V100Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M222.67,100C222.67,98.9 223.56,98 224.67,98H242.44C243.55,98 244.44,98.9 244.44,100V116C244.44,117.11 243.55,118 242.44,118H224.67C223.56,118 222.67,117.11 222.67,116V100Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M248.44,100C248.44,98.9 249.34,98 250.44,98H268.22C269.33,98 270.22,98.9 270.22,100V116C270.22,117.11 269.33,118 268.22,118H250.44C249.34,118 248.44,117.11 248.44,116V100Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M274.22,100C274.22,98.9 275.12,98 276.22,98H294C295.11,98 296,98.9 296,100V116C296,117.11 295.11,118 294,118H276.22C275.12,118 274.22,117.11 274.22,116V100Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M300,100C300,98.9 300.89,98 302,98H332C333.11,98 334,98.9 334,100V116C334,117.11 333.11,118 332,118H302C300.89,118 300,117.11 300,116V100Z"
+        android:fillColor="#F2E5EB"/>
+    <path
+        android:pathData="M14,128C14,126.89 14.9,126 16,126H48C49.1,126 50,126.89 50,128V144C50,145.1 49.1,146 48,146H16C14.9,146 14,145.1 14,144V128Z"
+        android:fillColor="#F2E5EB"/>
+    <path
+        android:pathData="M54,128C54,126.89 54.9,126 56,126H88C89.1,126 90,126.89 90,128V144C90,145.1 89.1,146 88,146H56C54.9,146 54,145.1 54,144V128Z"
+        android:fillColor="#F2E5EB"/>
+    <path
+        android:pathData="M94,128C94,126.89 94.9,126 96,126H248C249.1,126 250,126.89 250,128V144C250,145.1 249.1,146 248,146H96C94.9,146 94,145.1 94,144V128Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M254,128C254,126.89 254.9,126 256,126H276C277.11,126 278,126.89 278,128V144C278,145.1 277.11,146 276,146H256C254.9,146 254,145.1 254,144V128Z"
+        android:fillColor="#F2E5EB"/>
+    <path
+        android:pathData="M282,128C282,126.89 282.89,126 284,126H304C305.11,126 306,126.89 306,128V144C306,145.1 305.11,146 304,146H284C282.89,146 282,145.1 282,144V128Z"
+        android:fillColor="#F2E5EB"/>
+    <path
+        android:pathData="M310,128C310,126.89 310.89,126 312,126H332C333.11,126 334,126.89 334,128V144C334,145.1 333.11,146 332,146H312C310.89,146 310,145.1 310,144V128Z"
+        android:fillColor="#F2E5EB"/>
+    <path
+        android:pathData="M18,3C9.72,3 3,9.72 3,18V142C3,150.28 9.72,157 18,157H330C338.28,157 345,150.28 345,142V18C345,9.72 338.28,3 330,3H18Z"
+        android:strokeWidth="6"
+        android:fillColor="#00000000"
+        android:strokeColor="#ECDFE5"/>
+</vector>
diff --git a/res/drawable/mouse_keys_press_hold.xml b/res/drawable/mouse_keys_press_hold.xml
new file mode 100644
index 0000000..af20290
--- /dev/null
+++ b/res/drawable/mouse_keys_press_hold.xml
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2024 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="348dp"
+        android:height="160dp"
+        android:viewportWidth="348"
+        android:viewportHeight="160">
+    <path
+        android:pathData="M6,14C6,9.58 9.58,6 14,6H334C338.42,6 342,9.58 342,14V146C342,150.42 338.42,154 334,154H14C9.58,154 6,150.42 6,146V14Z"
+        android:fillColor="#FFF7F9"/>
+    <path
+        android:pathData="M14,16C14,14.9 14.9,14 16,14H30.23C31.34,14 32.23,14.9 32.23,16V32C32.23,33.1 31.34,34 30.23,34H16C14.9,34 14,33.1 14,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M36.23,16C36.23,14.9 37.13,14 38.23,14H52.46C53.57,14 54.46,14.9 54.46,16V32C54.46,33.1 53.57,34 52.46,34H38.23C37.13,34 36.23,33.1 36.23,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M58.46,16C58.46,14.9 59.36,14 60.46,14H74.69C75.8,14 76.69,14.9 76.69,16V32C76.69,33.1 75.8,34 74.69,34H60.46C59.36,34 58.46,33.1 58.46,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M80.69,16C80.69,14.9 81.59,14 82.69,14H96.92C98.03,14 98.92,14.9 98.92,16V32C98.92,33.1 98.03,34 96.92,34H82.69C81.59,34 80.69,33.1 80.69,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M102.92,16C102.92,14.9 103.82,14 104.92,14H119.15C120.26,14 121.15,14.9 121.15,16V32C121.15,33.1 120.26,34 119.15,34H104.92C103.82,34 102.92,33.1 102.92,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M125.15,16C125.15,14.9 126.05,14 127.15,14H141.38C142.49,14 143.38,14.9 143.38,16V32C143.38,33.1 142.49,34 141.38,34H127.15C126.05,34 125.15,33.1 125.15,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M147.38,16C147.38,14.9 148.28,14 149.38,14H163.62C164.72,14 165.62,14.9 165.62,16V32C165.62,33.1 164.72,34 163.62,34H149.38C148.28,34 147.38,33.1 147.38,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M169.62,16C169.62,14.9 170.51,14 171.62,14H185.85C186.95,14 187.85,14.9 187.85,16V32C187.85,33.1 186.95,34 185.85,34H171.62C170.51,34 169.62,33.1 169.62,32V16Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M191.85,16C191.85,14.9 192.74,14 193.85,14H208.08C209.18,14 210.08,14.9 210.08,16V32C210.08,33.1 209.18,34 208.08,34H193.85C192.74,34 191.85,33.1 191.85,32V16Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M214.08,16C214.08,14.9 214.97,14 216.08,14H230.31C231.41,14 232.31,14.9 232.31,16V32C232.31,33.1 231.41,34 230.31,34H216.08C214.97,34 214.08,33.1 214.08,32V16Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M236.31,16C236.31,14.9 237.2,14 238.31,14H252.54C253.64,14 254.54,14.9 254.54,16V32C254.54,33.1 253.64,34 252.54,34H238.31C237.2,34 236.31,33.1 236.31,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M258.54,16C258.54,14.9 259.43,14 260.54,14H274.77C275.87,14 276.77,14.9 276.77,16V32C276.77,33.1 275.87,34 274.77,34H260.54C259.43,34 258.54,33.1 258.54,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M280.77,16C280.77,14.9 281.67,14 282.77,14H297C298.11,14 299,14.9 299,16V32C299,33.1 298.11,34 297,34H282.77C281.67,34 280.77,33.1 280.77,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M303,16C303,14.9 303.89,14 305,14H332C333.11,14 334,14.9 334,16V32C334,33.1 333.11,34 332,34H305C303.89,34 303,33.1 303,32V16Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M14,44C14,42.9 14.9,42 16,42H43C44.1,42 45,42.9 45,44V60C45,61.1 44.1,62 43,62H16C14.9,62 14,61.1 14,60V44Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M49,44C49,42.9 49.9,42 51,42H68.4C69.5,42 70.4,42.9 70.4,44V60C70.4,61.1 69.5,62 68.4,62H51C49.9,62 49,61.1 49,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M74.4,44C74.4,42.9 75.3,42 76.4,42H93.8C94.9,42 95.8,42.9 95.8,44V60C95.8,61.1 94.9,62 93.8,62H76.4C75.3,62 74.4,61.1 74.4,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M99.8,44C99.8,42.9 100.69,42 101.8,42H119.2C120.31,42 121.2,42.9 121.2,44V60C121.2,61.1 120.31,62 119.2,62H101.8C100.69,62 99.8,61.1 99.8,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M125.2,44C125.2,42.9 126.1,42 127.2,42H144.6C145.71,42 146.6,42.9 146.6,44V60C146.6,61.1 145.71,62 144.6,62H127.2C126.1,62 125.2,61.1 125.2,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M150.6,44C150.6,42.9 151.5,42 152.6,42H170C171.1,42 172,42.9 172,44V60C172,61.1 171.1,62 170,62H152.6C151.5,62 150.6,61.1 150.6,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M176,44C176,42.9 176.9,42 178,42H195.4C196.51,42 197.4,42.9 197.4,44V60C197.4,61.1 196.51,62 195.4,62H178C176.9,62 176,61.1 176,60V44Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M201.4,44C201.4,42.9 202.29,42 203.4,42H220.8C221.9,42 222.8,42.9 222.8,44V60C222.8,61.1 221.9,62 220.8,62H203.4C202.29,62 201.4,61.1 201.4,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M226.8,44C226.8,42.9 227.7,42 228.8,42H246.2C247.3,42 248.2,42.9 248.2,44V60C248.2,61.1 247.3,62 246.2,62H228.8C227.7,62 226.8,61.1 226.8,60V44Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M252.2,44C252.2,42.9 253.1,42 254.2,42H271.6C272.7,42 273.6,42.9 273.6,44V60C273.6,61.1 272.7,62 271.6,62H254.2C253.1,62 252.2,61.1 252.2,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M277.6,44C277.6,42.9 278.5,42 279.6,42H297C298.11,42 299,42.9 299,44V60C299,61.1 298.11,62 297,62H279.6C278.5,62 277.6,61.1 277.6,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M303,44C303,42.9 303.89,42 305,42H332C333.11,42 334,42.9 334,44V60C334,61.1 333.11,62 332,62H305C303.89,62 303,61.1 303,60V44Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M14,72C14,70.9 14.9,70 16,70H48C49.1,70 50,70.9 50,72V88C50,89.1 49.1,90 48,90H16C14.9,90 14,89.1 14,88V72Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M54,72C54,70.9 54.9,70 56,70H73.78C74.88,70 75.78,70.9 75.78,72V88C75.78,89.1 74.88,90 73.78,90H56C54.9,90 54,89.1 54,88V72Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M79.78,72C79.78,70.9 80.67,70 81.78,70H99.56C100.66,70 101.56,70.9 101.56,72V88C101.56,89.1 100.66,90 99.56,90H81.78C80.67,90 79.78,89.1 79.78,88V72Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M105.56,72C105.56,70.9 106.45,70 107.56,70H125.33C126.44,70 127.33,70.9 127.33,72V88C127.33,89.1 126.44,90 125.33,90H107.56C106.45,90 105.56,89.1 105.56,88V72Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M131.33,72C131.33,70.9 132.23,70 133.33,70H151.11C152.22,70 153.11,70.9 153.11,72V88C153.11,89.1 152.22,90 151.11,90H133.33C132.23,90 131.33,89.1 131.33,88V72Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M157.11,72C157.11,70.9 158.01,70 159.11,70H176.89C177.99,70 178.89,70.9 178.89,72V88C178.89,89.1 177.99,90 176.89,90H159.11C158.01,90 157.11,89.1 157.11,88V72Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M182.89,72C182.89,70.9 183.78,70 184.89,70H202.67C203.77,70 204.67,70.9 204.67,72V88C204.67,89.1 203.77,90 202.67,90H184.89C183.78,90 182.89,89.1 182.89,88V72Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M208.67,72C208.67,70.9 209.56,70 210.67,70H228.45C229.55,70 230.45,70.9 230.45,72V88C230.45,89.1 229.55,90 228.45,90H210.67C209.56,90 208.67,89.1 208.67,88V72Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M234.44,72C234.44,70.9 235.34,70 236.44,70H254.22C255.33,70 256.22,70.9 256.22,72V88C256.22,89.1 255.33,90 254.22,90H236.44C235.34,90 234.44,89.1 234.44,88V72Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M260.22,72C260.22,70.9 261.12,70 262.22,70H280C281.11,70 282,70.9 282,72V88C282,89.1 281.11,90 280,90H262.22C261.12,90 260.22,89.1 260.22,88V72Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M286,72C286,70.9 286.89,70 288,70H332C333.11,70 334,70.9 334,72V88C334,89.1 333.11,90 332,90H288C286.89,90 286,89.1 286,88V72Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M14,100C14,98.9 14.9,98 16,98H62C63.1,98 64,98.9 64,100V116C64,117.11 63.1,118 62,118H16C14.9,118 14,117.11 14,116V100Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M68,100C68,98.9 68.9,98 70,98H87.78C88.88,98 89.78,98.9 89.78,100V116C89.78,117.11 88.88,118 87.78,118H70C68.9,118 68,117.11 68,116V100Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M93.78,100C93.78,98.9 94.67,98 95.78,98H113.56C114.66,98 115.56,98.9 115.56,100V116C115.56,117.11 114.66,118 113.56,118H95.78C94.67,118 93.78,117.11 93.78,116V100Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M119.56,100C119.56,98.9 120.45,98 121.56,98H139.33C140.44,98 141.33,98.9 141.33,100V116C141.33,117.11 140.44,118 139.33,118H121.56C120.45,118 119.56,117.11 119.56,116V100Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M145.33,100C145.33,98.9 146.23,98 147.33,98H165.11C166.22,98 167.11,98.9 167.11,100V116C167.11,117.11 166.22,118 165.11,118H147.33C146.23,118 145.33,117.11 145.33,116V100Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M171.11,100C171.11,98.9 172.01,98 173.11,98H190.89C191.99,98 192.89,98.9 192.89,100V116C192.89,117.11 191.99,118 190.89,118H173.11C172.01,118 171.11,117.11 171.11,116V100Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M196.89,100C196.89,98.9 197.78,98 198.89,98H216.67C217.77,98 218.67,98.9 218.67,100V116C218.67,117.11 217.77,118 216.67,118H198.89C197.78,118 196.89,117.11 196.89,116V100Z"
+        android:fillColor="#804D7A"/>
+    <path
+        android:pathData="M222.67,100C222.67,98.9 223.56,98 224.67,98H242.45C243.55,98 244.45,98.9 244.45,100V116C244.45,117.11 243.55,118 242.45,118H224.67C223.56,118 222.67,117.11 222.67,116V100Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M248.44,100C248.44,98.9 249.34,98 250.44,98H268.22C269.33,98 270.22,98.9 270.22,100V116C270.22,117.11 269.33,118 268.22,118H250.44C249.34,118 248.44,117.11 248.44,116V100Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M274.22,100C274.22,98.9 275.12,98 276.22,98H294C295.11,98 296,98.9 296,100V116C296,117.11 295.11,118 294,118H276.22C275.12,118 274.22,117.11 274.22,116V100Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M300,100C300,98.9 300.89,98 302,98H332C333.11,98 334,98.9 334,100V116C334,117.11 333.11,118 332,118H302C300.89,118 300,117.11 300,116V100Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M14,128C14,126.89 14.9,126 16,126H48C49.1,126 50,126.89 50,128V144C50,145.1 49.1,146 48,146H16C14.9,146 14,145.1 14,144V128Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M54,128C54,126.89 54.9,126 56,126H88C89.1,126 90,126.89 90,128V144C90,145.1 89.1,146 88,146H56C54.9,146 54,145.1 54,144V128Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M94,128C94,126.89 94.9,126 96,126H248C249.1,126 250,126.89 250,128V144C250,145.1 249.1,146 248,146H96C94.9,146 94,145.1 94,144V128Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M254,128C254,126.89 254.9,126 256,126H276C277.11,126 278,126.89 278,128V144C278,145.1 277.11,146 276,146H256C254.9,146 254,145.1 254,144V128Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M282,128C282,126.89 282.89,126 284,126H304C305.11,126 306,126.89 306,128V144C306,145.1 305.11,146 304,146H284C282.89,146 282,145.1 282,144V128Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M310,128C310,126.89 310.89,126 312,126H332C333.11,126 334,126.89 334,128V144C334,145.1 333.11,146 332,146H312C310.89,146 310,145.1 310,144V128Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M18,3C9.72,3 3,9.72 3,18V142C3,150.28 9.72,157 18,157H330C338.28,157 345,150.28 345,142V18C345,9.72 338.28,3 330,3H18Z"
+        android:strokeWidth="6"
+        android:fillColor="#00000000"
+        android:strokeColor="#ECDFE5"/>
+</vector>
diff --git a/res/drawable/mouse_keys_release.xml b/res/drawable/mouse_keys_release.xml
new file mode 100644
index 0000000..232d5e7
--- /dev/null
+++ b/res/drawable/mouse_keys_release.xml
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2024 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="348dp"
+        android:height="160dp"
+        android:viewportWidth="348"
+        android:viewportHeight="160">
+    <path
+        android:pathData="M6,14C6,9.58 9.58,6 14,6H334C338.42,6 342,9.58 342,14V146C342,150.42 338.42,154 334,154H14C9.58,154 6,150.42 6,146V14Z"
+        android:fillColor="#FFF7F9"/>
+    <path
+        android:pathData="M14,16C14,14.9 14.9,14 16,14H30.23C31.34,14 32.23,14.9 32.23,16V32C32.23,33.1 31.34,34 30.23,34H16C14.9,34 14,33.1 14,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M36.23,16C36.23,14.9 37.13,14 38.23,14H52.46C53.57,14 54.46,14.9 54.46,16V32C54.46,33.1 53.57,34 52.46,34H38.23C37.13,34 36.23,33.1 36.23,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M58.46,16C58.46,14.9 59.36,14 60.46,14H74.69C75.8,14 76.69,14.9 76.69,16V32C76.69,33.1 75.8,34 74.69,34H60.46C59.36,34 58.46,33.1 58.46,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M80.69,16C80.69,14.9 81.59,14 82.69,14H96.92C98.03,14 98.92,14.9 98.92,16V32C98.92,33.1 98.03,34 96.92,34H82.69C81.59,34 80.69,33.1 80.69,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M102.92,16C102.92,14.9 103.82,14 104.92,14H119.15C120.26,14 121.15,14.9 121.15,16V32C121.15,33.1 120.26,34 119.15,34H104.92C103.82,34 102.92,33.1 102.92,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M125.15,16C125.15,14.9 126.05,14 127.15,14H141.38C142.49,14 143.38,14.9 143.38,16V32C143.38,33.1 142.49,34 141.38,34H127.15C126.05,34 125.15,33.1 125.15,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M147.38,16C147.38,14.9 148.28,14 149.38,14H163.62C164.72,14 165.62,14.9 165.62,16V32C165.62,33.1 164.72,34 163.62,34H149.38C148.28,34 147.38,33.1 147.38,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M169.62,16C169.62,14.9 170.51,14 171.62,14H185.85C186.95,14 187.85,14.9 187.85,16V32C187.85,33.1 186.95,34 185.85,34H171.62C170.51,34 169.62,33.1 169.62,32V16Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M191.85,16C191.85,14.9 192.74,14 193.85,14H208.08C209.18,14 210.08,14.9 210.08,16V32C210.08,33.1 209.18,34 208.08,34H193.85C192.74,34 191.85,33.1 191.85,32V16Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M214.08,16C214.08,14.9 214.97,14 216.08,14H230.31C231.41,14 232.31,14.9 232.31,16V32C232.31,33.1 231.41,34 230.31,34H216.08C214.97,34 214.08,33.1 214.08,32V16Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M236.31,16C236.31,14.9 237.2,14 238.31,14H252.54C253.64,14 254.54,14.9 254.54,16V32C254.54,33.1 253.64,34 252.54,34H238.31C237.2,34 236.31,33.1 236.31,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M258.54,16C258.54,14.9 259.43,14 260.54,14H274.77C275.87,14 276.77,14.9 276.77,16V32C276.77,33.1 275.87,34 274.77,34H260.54C259.43,34 258.54,33.1 258.54,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M280.77,16C280.77,14.9 281.67,14 282.77,14H297C298.11,14 299,14.9 299,16V32C299,33.1 298.11,34 297,34H282.77C281.67,34 280.77,33.1 280.77,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M303,16C303,14.9 303.89,14 305,14H332C333.11,14 334,14.9 334,16V32C334,33.1 333.11,34 332,34H305C303.89,34 303,33.1 303,32V16Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M14,44C14,42.9 14.9,42 16,42H43C44.1,42 45,42.9 45,44V60C45,61.1 44.1,62 43,62H16C14.9,62 14,61.1 14,60V44Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M49,44C49,42.9 49.9,42 51,42H68.4C69.5,42 70.4,42.9 70.4,44V60C70.4,61.1 69.5,62 68.4,62H51C49.9,62 49,61.1 49,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M74.4,44C74.4,42.9 75.3,42 76.4,42H93.8C94.9,42 95.8,42.9 95.8,44V60C95.8,61.1 94.9,62 93.8,62H76.4C75.3,62 74.4,61.1 74.4,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M99.8,44C99.8,42.9 100.69,42 101.8,42H119.2C120.31,42 121.2,42.9 121.2,44V60C121.2,61.1 120.31,62 119.2,62H101.8C100.69,62 99.8,61.1 99.8,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M125.2,44C125.2,42.9 126.1,42 127.2,42H144.6C145.71,42 146.6,42.9 146.6,44V60C146.6,61.1 145.71,62 144.6,62H127.2C126.1,62 125.2,61.1 125.2,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M150.6,44C150.6,42.9 151.5,42 152.6,42H170C171.1,42 172,42.9 172,44V60C172,61.1 171.1,62 170,62H152.6C151.5,62 150.6,61.1 150.6,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M176,44C176,42.9 176.9,42 178,42H195.4C196.51,42 197.4,42.9 197.4,44V60C197.4,61.1 196.51,62 195.4,62H178C176.9,62 176,61.1 176,60V44Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M201.4,44C201.4,42.9 202.29,42 203.4,42H220.8C221.9,42 222.8,42.9 222.8,44V60C222.8,61.1 221.9,62 220.8,62H203.4C202.29,62 201.4,61.1 201.4,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M226.8,44C226.8,42.9 227.7,42 228.8,42H246.2C247.3,42 248.2,42.9 248.2,44V60C248.2,61.1 247.3,62 246.2,62H228.8C227.7,62 226.8,61.1 226.8,60V44Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M252.2,44C252.2,42.9 253.1,42 254.2,42H271.6C272.7,42 273.6,42.9 273.6,44V60C273.6,61.1 272.7,62 271.6,62H254.2C253.1,62 252.2,61.1 252.2,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M277.6,44C277.6,42.9 278.5,42 279.6,42H297C298.11,42 299,42.9 299,44V60C299,61.1 298.11,62 297,62H279.6C278.5,62 277.6,61.1 277.6,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M303,44C303,42.9 303.89,42 305,42H332C333.11,42 334,42.9 334,44V60C334,61.1 333.11,62 332,62H305C303.89,62 303,61.1 303,60V44Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M14,72C14,70.9 14.9,70 16,70H48C49.1,70 50,70.9 50,72V88C50,89.1 49.1,90 48,90H16C14.9,90 14,89.1 14,88V72Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M54,72C54,70.9 54.9,70 56,70H73.78C74.88,70 75.78,70.9 75.78,72V88C75.78,89.1 74.88,90 73.78,90H56C54.9,90 54,89.1 54,88V72Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M79.78,72C79.78,70.9 80.67,70 81.78,70H99.56C100.66,70 101.56,70.9 101.56,72V88C101.56,89.1 100.66,90 99.56,90H81.78C80.67,90 79.78,89.1 79.78,88V72Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M105.56,72C105.56,70.9 106.45,70 107.56,70H125.33C126.44,70 127.33,70.9 127.33,72V88C127.33,89.1 126.44,90 125.33,90H107.56C106.45,90 105.56,89.1 105.56,88V72Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M131.33,72C131.33,70.9 132.23,70 133.33,70H151.11C152.22,70 153.11,70.9 153.11,72V88C153.11,89.1 152.22,90 151.11,90H133.33C132.23,90 131.33,89.1 131.33,88V72Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M157.11,72C157.11,70.9 158.01,70 159.11,70H176.89C177.99,70 178.89,70.9 178.89,72V88C178.89,89.1 177.99,90 176.89,90H159.11C158.01,90 157.11,89.1 157.11,88V72Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M182.89,72C182.89,70.9 183.78,70 184.89,70H202.67C203.77,70 204.67,70.9 204.67,72V88C204.67,89.1 203.77,90 202.67,90H184.89C183.78,90 182.89,89.1 182.89,88V72Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M208.67,72C208.67,70.9 209.56,70 210.67,70H228.45C229.55,70 230.45,70.9 230.45,72V88C230.45,89.1 229.55,90 228.45,90H210.67C209.56,90 208.67,89.1 208.67,88V72Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M234.44,72C234.44,70.9 235.34,70 236.44,70H254.22C255.33,70 256.22,70.9 256.22,72V88C256.22,89.1 255.33,90 254.22,90H236.44C235.34,90 234.44,89.1 234.44,88V72Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M260.22,72C260.22,70.9 261.12,70 262.22,70H280C281.11,70 282,70.9 282,72V88C282,89.1 281.11,90 280,90H262.22C261.12,90 260.22,89.1 260.22,88V72Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M286,72C286,70.9 286.89,70 288,70H332C333.11,70 334,70.9 334,72V88C334,89.1 333.11,90 332,90H288C286.89,90 286,89.1 286,88V72Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M14,100C14,98.9 14.9,98 16,98H62C63.1,98 64,98.9 64,100V116C64,117.11 63.1,118 62,118H16C14.9,118 14,117.11 14,116V100Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M68,100C68,98.9 68.9,98 70,98H87.78C88.88,98 89.78,98.9 89.78,100V116C89.78,117.11 88.88,118 87.78,118H70C68.9,118 68,117.11 68,116V100Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M93.78,100C93.78,98.9 94.67,98 95.78,98H113.56C114.66,98 115.56,98.9 115.56,100V116C115.56,117.11 114.66,118 113.56,118H95.78C94.67,118 93.78,117.11 93.78,116V100Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M119.56,100C119.56,98.9 120.45,98 121.56,98H139.33C140.44,98 141.33,98.9 141.33,100V116C141.33,117.11 140.44,118 139.33,118H121.56C120.45,118 119.56,117.11 119.56,116V100Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M145.33,100C145.33,98.9 146.23,98 147.33,98H165.11C166.22,98 167.11,98.9 167.11,100V116C167.11,117.11 166.22,118 165.11,118H147.33C146.23,118 145.33,117.11 145.33,116V100Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M171.11,100C171.11,98.9 172.01,98 173.11,98H190.89C191.99,98 192.89,98.9 192.89,100V116C192.89,117.11 191.99,118 190.89,118H173.11C172.01,118 171.11,117.11 171.11,116V100Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M196.89,100C196.89,98.9 197.78,98 198.89,98H216.67C217.77,98 218.67,98.9 218.67,100V116C218.67,117.11 217.77,118 216.67,118H198.89C197.78,118 196.89,117.11 196.89,116V100Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M222.67,100C222.67,98.9 223.56,98 224.67,98H242.45C243.55,98 244.45,98.9 244.45,100V116C244.45,117.11 243.55,118 242.45,118H224.67C223.56,118 222.67,117.11 222.67,116V100Z"
+        android:fillColor="#804D7A"/>
+    <path
+        android:pathData="M248.44,100C248.44,98.9 249.34,98 250.44,98H268.22C269.33,98 270.22,98.9 270.22,100V116C270.22,117.11 269.33,118 268.22,118H250.44C249.34,118 248.44,117.11 248.44,116V100Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M274.22,100C274.22,98.9 275.12,98 276.22,98H294C295.11,98 296,98.9 296,100V116C296,117.11 295.11,118 294,118H276.22C275.12,118 274.22,117.11 274.22,116V100Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M300,100C300,98.9 300.89,98 302,98H332C333.11,98 334,98.9 334,100V116C334,117.11 333.11,118 332,118H302C300.89,118 300,117.11 300,116V100Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M14,128C14,126.89 14.9,126 16,126H48C49.1,126 50,126.89 50,128V144C50,145.1 49.1,146 48,146H16C14.9,146 14,145.1 14,144V128Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M54,128C54,126.89 54.9,126 56,126H88C89.1,126 90,126.89 90,128V144C90,145.1 89.1,146 88,146H56C54.9,146 54,145.1 54,144V128Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M94,128C94,126.89 94.9,126 96,126H248C249.1,126 250,126.89 250,128V144C250,145.1 249.1,146 248,146H96C94.9,146 94,145.1 94,144V128Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M254,128C254,126.89 254.9,126 256,126H276C277.11,126 278,126.89 278,128V144C278,145.1 277.11,146 276,146H256C254.9,146 254,145.1 254,144V128Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M282,128C282,126.89 282.89,126 284,126H304C305.11,126 306,126.89 306,128V144C306,145.1 305.11,146 304,146H284C282.89,146 282,145.1 282,144V128Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M310,128C310,126.89 310.89,126 312,126H332C333.11,126 334,126.89 334,128V144C334,145.1 333.11,146 332,146H312C310.89,146 310,145.1 310,144V128Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M18,3C9.72,3 3,9.72 3,18V142C3,150.28 9.72,157 18,157H330C338.28,157 345,150.28 345,142V18C345,9.72 338.28,3 330,3H18Z"
+        android:strokeWidth="6"
+        android:fillColor="#00000000"
+        android:strokeColor="#ECDFE5"/>
+</vector>
diff --git a/res/drawable/mouse_keys_release2.xml b/res/drawable/mouse_keys_release2.xml
new file mode 100644
index 0000000..88422cb
--- /dev/null
+++ b/res/drawable/mouse_keys_release2.xml
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2024 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="348dp"
+        android:height="160dp"
+        android:viewportWidth="348"
+        android:viewportHeight="160">
+    <path
+        android:pathData="M6,14C6,9.58 9.58,6 14,6H334C338.42,6 342,9.58 342,14V146C342,150.42 338.42,154 334,154H14C9.58,154 6,150.42 6,146V14Z"
+        android:fillColor="#FFF7F9"/>
+    <path
+        android:pathData="M14,16C14,14.9 14.9,14 16,14H30.23C31.34,14 32.23,14.9 32.23,16V32C32.23,33.1 31.34,34 30.23,34H16C14.9,34 14,33.1 14,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M36.23,16C36.23,14.9 37.13,14 38.23,14H52.46C53.57,14 54.46,14.9 54.46,16V32C54.46,33.1 53.57,34 52.46,34H38.23C37.13,34 36.23,33.1 36.23,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M58.46,16C58.46,14.9 59.36,14 60.46,14H74.69C75.8,14 76.69,14.9 76.69,16V32C76.69,33.1 75.8,34 74.69,34H60.46C59.36,34 58.46,33.1 58.46,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M80.69,16C80.69,14.9 81.59,14 82.69,14H96.92C98.03,14 98.92,14.9 98.92,16V32C98.92,33.1 98.03,34 96.92,34H82.69C81.59,34 80.69,33.1 80.69,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M102.92,16C102.92,14.9 103.82,14 104.92,14H119.15C120.26,14 121.15,14.9 121.15,16V32C121.15,33.1 120.26,34 119.15,34H104.92C103.82,34 102.92,33.1 102.92,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M125.15,16C125.15,14.9 126.05,14 127.15,14H141.38C142.49,14 143.38,14.9 143.38,16V32C143.38,33.1 142.49,34 141.38,34H127.15C126.05,34 125.15,33.1 125.15,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M147.38,16C147.38,14.9 148.28,14 149.38,14H163.62C164.72,14 165.62,14.9 165.62,16V32C165.62,33.1 164.72,34 163.62,34H149.38C148.28,34 147.38,33.1 147.38,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M169.62,16C169.62,14.9 170.51,14 171.62,14H185.85C186.95,14 187.85,14.9 187.85,16V32C187.85,33.1 186.95,34 185.85,34H171.62C170.51,34 169.62,33.1 169.62,32V16Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M191.85,16C191.85,14.9 192.74,14 193.85,14H208.08C209.18,14 210.08,14.9 210.08,16V32C210.08,33.1 209.18,34 208.08,34H193.85C192.74,34 191.85,33.1 191.85,32V16Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M214.08,16C214.08,14.9 214.97,14 216.08,14H230.31C231.41,14 232.31,14.9 232.31,16V32C232.31,33.1 231.41,34 230.31,34H216.08C214.97,34 214.08,33.1 214.08,32V16Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M236.31,16C236.31,14.9 237.2,14 238.31,14H252.54C253.64,14 254.54,14.9 254.54,16V32C254.54,33.1 253.64,34 252.54,34H238.31C237.2,34 236.31,33.1 236.31,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M258.54,16C258.54,14.9 259.43,14 260.54,14H274.77C275.87,14 276.77,14.9 276.77,16V32C276.77,33.1 275.87,34 274.77,34H260.54C259.43,34 258.54,33.1 258.54,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M280.77,16C280.77,14.9 281.67,14 282.77,14H297C298.11,14 299,14.9 299,16V32C299,33.1 298.11,34 297,34H282.77C281.67,34 280.77,33.1 280.77,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M303,16C303,14.9 303.89,14 305,14H332C333.11,14 334,14.9 334,16V32C334,33.1 333.11,34 332,34H305C303.89,34 303,33.1 303,32V16Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M14,44C14,42.9 14.9,42 16,42H43C44.1,42 45,42.9 45,44V60C45,61.1 44.1,62 43,62H16C14.9,62 14,61.1 14,60V44Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M49,44C49,42.9 49.9,42 51,42H68.4C69.5,42 70.4,42.9 70.4,44V60C70.4,61.1 69.5,62 68.4,62H51C49.9,62 49,61.1 49,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M74.4,44C74.4,42.9 75.3,42 76.4,42H93.8C94.9,42 95.8,42.9 95.8,44V60C95.8,61.1 94.9,62 93.8,62H76.4C75.3,62 74.4,61.1 74.4,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M99.8,44C99.8,42.9 100.69,42 101.8,42H119.2C120.31,42 121.2,42.9 121.2,44V60C121.2,61.1 120.31,62 119.2,62H101.8C100.69,62 99.8,61.1 99.8,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M125.2,44C125.2,42.9 126.1,42 127.2,42H144.6C145.71,42 146.6,42.9 146.6,44V60C146.6,61.1 145.71,62 144.6,62H127.2C126.1,62 125.2,61.1 125.2,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M150.6,44C150.6,42.9 151.5,42 152.6,42H170C171.1,42 172,42.9 172,44V60C172,61.1 171.1,62 170,62H152.6C151.5,62 150.6,61.1 150.6,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M176,44C176,42.9 176.9,42 178,42H195.4C196.51,42 197.4,42.9 197.4,44V60C197.4,61.1 196.51,62 195.4,62H178C176.9,62 176,61.1 176,60V44Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M201.4,44C201.4,42.9 202.29,42 203.4,42H220.8C221.9,42 222.8,42.9 222.8,44V60C222.8,61.1 221.9,62 220.8,62H203.4C202.29,62 201.4,61.1 201.4,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M226.8,44C226.8,42.9 227.7,42 228.8,42H246.2C247.3,42 248.2,42.9 248.2,44V60C248.2,61.1 247.3,62 246.2,62H228.8C227.7,62 226.8,61.1 226.8,60V44Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M252.2,44C252.2,42.9 253.1,42 254.2,42H271.6C272.7,42 273.6,42.9 273.6,44V60C273.6,61.1 272.7,62 271.6,62H254.2C253.1,62 252.2,61.1 252.2,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M277.6,44C277.6,42.9 278.5,42 279.6,42H297C298.11,42 299,42.9 299,44V60C299,61.1 298.11,62 297,62H279.6C278.5,62 277.6,61.1 277.6,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M303,44C303,42.9 303.89,42 305,42H332C333.11,42 334,42.9 334,44V60C334,61.1 333.11,62 332,62H305C303.89,62 303,61.1 303,60V44Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M14,72C14,70.9 14.9,70 16,70H48C49.1,70 50,70.9 50,72V88C50,89.1 49.1,90 48,90H16C14.9,90 14,89.1 14,88V72Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M54,72C54,70.9 54.9,70 56,70H73.78C74.88,70 75.78,70.9 75.78,72V88C75.78,89.1 74.88,90 73.78,90H56C54.9,90 54,89.1 54,88V72Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M79.78,72C79.78,70.9 80.67,70 81.78,70H99.56C100.66,70 101.56,70.9 101.56,72V88C101.56,89.1 100.66,90 99.56,90H81.78C80.67,90 79.78,89.1 79.78,88V72Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M105.56,72C105.56,70.9 106.45,70 107.56,70H125.33C126.44,70 127.33,70.9 127.33,72V88C127.33,89.1 126.44,90 125.33,90H107.56C106.45,90 105.56,89.1 105.56,88V72Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M131.33,72C131.33,70.9 132.23,70 133.33,70H151.11C152.22,70 153.11,70.9 153.11,72V88C153.11,89.1 152.22,90 151.11,90H133.33C132.23,90 131.33,89.1 131.33,88V72Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M157.11,72C157.11,70.9 158.01,70 159.11,70H176.89C177.99,70 178.89,70.9 178.89,72V88C178.89,89.1 177.99,90 176.89,90H159.11C158.01,90 157.11,89.1 157.11,88V72Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M182.89,72C182.89,70.9 183.78,70 184.89,70H202.67C203.77,70 204.67,70.9 204.67,72V88C204.67,89.1 203.77,90 202.67,90H184.89C183.78,90 182.89,89.1 182.89,88V72Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M208.67,72C208.67,70.9 209.56,70 210.67,70H228.45C229.55,70 230.45,70.9 230.45,72V88C230.45,89.1 229.55,90 228.45,90H210.67C209.56,90 208.67,89.1 208.67,88V72Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M234.44,72C234.44,70.9 235.34,70 236.44,70H254.22C255.33,70 256.22,70.9 256.22,72V88C256.22,89.1 255.33,90 254.22,90H236.44C235.34,90 234.44,89.1 234.44,88V72Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M260.22,72C260.22,70.9 261.12,70 262.22,70H280C281.11,70 282,70.9 282,72V88C282,89.1 281.11,90 280,90H262.22C261.12,90 260.22,89.1 260.22,88V72Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M286,72C286,70.9 286.89,70 288,70H332C333.11,70 334,70.9 334,72V88C334,89.1 333.11,90 332,90H288C286.89,90 286,89.1 286,88V72Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M14,100C14,98.9 14.9,98 16,98H62C63.1,98 64,98.9 64,100V116C64,117.11 63.1,118 62,118H16C14.9,118 14,117.11 14,116V100Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M68,100C68,98.9 68.9,98 70,98H87.78C88.88,98 89.78,98.9 89.78,100V116C89.78,117.11 88.88,118 87.78,118H70C68.9,118 68,117.11 68,116V100Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M93.78,100C93.78,98.9 94.67,98 95.78,98H113.56C114.66,98 115.56,98.9 115.56,100V116C115.56,117.11 114.66,118 113.56,118H95.78C94.67,118 93.78,117.11 93.78,116V100Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M119.56,100C119.56,98.9 120.45,98 121.56,98H139.33C140.44,98 141.33,98.9 141.33,100V116C141.33,117.11 140.44,118 139.33,118H121.56C120.45,118 119.56,117.11 119.56,116V100Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M145.33,100C145.33,98.9 146.23,98 147.33,98H165.11C166.22,98 167.11,98.9 167.11,100V116C167.11,117.11 166.22,118 165.11,118H147.33C146.23,118 145.33,117.11 145.33,116V100Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M171.11,100C171.11,98.9 172.01,98 173.11,98H190.89C191.99,98 192.89,98.9 192.89,100V116C192.89,117.11 191.99,118 190.89,118H173.11C172.01,118 171.11,117.11 171.11,116V100Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M196.89,100C196.89,98.9 197.78,98 198.89,98H216.67C217.77,98 218.67,98.9 218.67,100V116C218.67,117.11 217.77,118 216.67,118H198.89C197.78,118 196.89,117.11 196.89,116V100Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M222.67,100C222.67,98.9 223.56,98 224.67,98H242.45C243.55,98 244.45,98.9 244.45,100V116C244.45,117.11 243.55,118 242.45,118H224.67C223.56,118 222.67,117.11 222.67,116V100Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M248.44,100C248.44,98.9 249.34,98 250.44,98H268.22C269.33,98 270.22,98.9 270.22,100V116C270.22,117.11 269.33,118 268.22,118H250.44C249.34,118 248.44,117.11 248.44,116V100Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M274.22,100C274.22,98.9 275.12,98 276.22,98H294C295.11,98 296,98.9 296,100V116C296,117.11 295.11,118 294,118H276.22C275.12,118 274.22,117.11 274.22,116V100Z"
+        android:fillColor="#804D7A"/>
+    <path
+        android:pathData="M300,100C300,98.9 300.89,98 302,98H332C333.11,98 334,98.9 334,100V116C334,117.11 333.11,118 332,118H302C300.89,118 300,117.11 300,116V100Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M14,128C14,126.89 14.9,126 16,126H48C49.1,126 50,126.89 50,128V144C50,145.1 49.1,146 48,146H16C14.9,146 14,145.1 14,144V128Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M54,128C54,126.89 54.9,126 56,126H88C89.1,126 90,126.89 90,128V144C90,145.1 89.1,146 88,146H56C54.9,146 54,145.1 54,144V128Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M94,128C94,126.89 94.9,126 96,126H248C249.1,126 250,126.89 250,128V144C250,145.1 249.1,146 248,146H96C94.9,146 94,145.1 94,144V128Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M254,128C254,126.89 254.9,126 256,126H276C277.11,126 278,126.89 278,128V144C278,145.1 277.11,146 276,146H256C254.9,146 254,145.1 254,144V128Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M282,128C282,126.89 282.89,126 284,126H304C305.11,126 306,126.89 306,128V144C306,145.1 305.11,146 304,146H284C282.89,146 282,145.1 282,144V128Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M310,128C310,126.89 310.89,126 312,126H332C333.11,126 334,126.89 334,128V144C334,145.1 333.11,146 332,146H312C310.89,146 310,145.1 310,144V128Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M18,3C9.72,3 3,9.72 3,18V142C3,150.28 9.72,157 18,157H330C338.28,157 345,150.28 345,142V18C345,9.72 338.28,3 330,3H18Z"
+        android:strokeWidth="6"
+        android:fillColor="#00000000"
+        android:strokeColor="#ECDFE5"/>
+</vector>
diff --git a/res/drawable/mouse_keys_toggle_scroll.xml b/res/drawable/mouse_keys_toggle_scroll.xml
new file mode 100644
index 0000000..1a1a550
--- /dev/null
+++ b/res/drawable/mouse_keys_toggle_scroll.xml
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2024 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="348dp"
+        android:height="160dp"
+        android:viewportWidth="348"
+        android:viewportHeight="160">
+    <path
+        android:pathData="M6,14C6,9.58 9.58,6 14,6H334C338.42,6 342,9.58 342,14V146C342,150.42 338.42,154 334,154H14C9.58,154 6,150.42 6,146V14Z"
+        android:fillColor="#FFF7F9"/>
+    <path
+        android:pathData="M14,16C14,14.9 14.9,14 16,14H30.23C31.34,14 32.23,14.9 32.23,16V32C32.23,33.1 31.34,34 30.23,34H16C14.9,34 14,33.1 14,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M36.23,16C36.23,14.9 37.13,14 38.23,14H52.46C53.57,14 54.46,14.9 54.46,16V32C54.46,33.1 53.57,34 52.46,34H38.23C37.13,34 36.23,33.1 36.23,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M58.46,16C58.46,14.9 59.36,14 60.46,14H74.69C75.8,14 76.69,14.9 76.69,16V32C76.69,33.1 75.8,34 74.69,34H60.46C59.36,34 58.46,33.1 58.46,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M80.69,16C80.69,14.9 81.59,14 82.69,14H96.92C98.03,14 98.92,14.9 98.92,16V32C98.92,33.1 98.03,34 96.92,34H82.69C81.59,34 80.69,33.1 80.69,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M102.92,16C102.92,14.9 103.82,14 104.92,14H119.15C120.26,14 121.15,14.9 121.15,16V32C121.15,33.1 120.26,34 119.15,34H104.92C103.82,34 102.92,33.1 102.92,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M125.15,16C125.15,14.9 126.05,14 127.15,14H141.38C142.49,14 143.38,14.9 143.38,16V32C143.38,33.1 142.49,34 141.38,34H127.15C126.05,34 125.15,33.1 125.15,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M147.38,16C147.38,14.9 148.28,14 149.38,14H163.62C164.72,14 165.62,14.9 165.62,16V32C165.62,33.1 164.72,34 163.62,34H149.38C148.28,34 147.38,33.1 147.38,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M169.62,16C169.62,14.9 170.51,14 171.62,14H185.85C186.95,14 187.85,14.9 187.85,16V32C187.85,33.1 186.95,34 185.85,34H171.62C170.51,34 169.62,33.1 169.62,32V16Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M191.85,16C191.85,14.9 192.74,14 193.85,14H208.08C209.18,14 210.08,14.9 210.08,16V32C210.08,33.1 209.18,34 208.08,34H193.85C192.74,34 191.85,33.1 191.85,32V16Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M214.08,16C214.08,14.9 214.97,14 216.08,14H230.31C231.41,14 232.31,14.9 232.31,16V32C232.31,33.1 231.41,34 230.31,34H216.08C214.97,34 214.08,33.1 214.08,32V16Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M236.31,16C236.31,14.9 237.2,14 238.31,14H252.54C253.64,14 254.54,14.9 254.54,16V32C254.54,33.1 253.64,34 252.54,34H238.31C237.2,34 236.31,33.1 236.31,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M258.54,16C258.54,14.9 259.43,14 260.54,14H274.77C275.87,14 276.77,14.9 276.77,16V32C276.77,33.1 275.87,34 274.77,34H260.54C259.43,34 258.54,33.1 258.54,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M280.77,16C280.77,14.9 281.67,14 282.77,14H297C298.11,14 299,14.9 299,16V32C299,33.1 298.11,34 297,34H282.77C281.67,34 280.77,33.1 280.77,32V16Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M303,16C303,14.9 303.89,14 305,14H332C333.11,14 334,14.9 334,16V32C334,33.1 333.11,34 332,34H305C303.89,34 303,33.1 303,32V16Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M14,44C14,42.9 14.9,42 16,42H43C44.1,42 45,42.9 45,44V60C45,61.1 44.1,62 43,62H16C14.9,62 14,61.1 14,60V44Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M49,44C49,42.9 49.9,42 51,42H68.4C69.5,42 70.4,42.9 70.4,44V60C70.4,61.1 69.5,62 68.4,62H51C49.9,62 49,61.1 49,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M74.4,44C74.4,42.9 75.3,42 76.4,42H93.8C94.9,42 95.8,42.9 95.8,44V60C95.8,61.1 94.9,62 93.8,62H76.4C75.3,62 74.4,61.1 74.4,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M99.8,44C99.8,42.9 100.69,42 101.8,42H119.2C120.31,42 121.2,42.9 121.2,44V60C121.2,61.1 120.31,62 119.2,62H101.8C100.69,62 99.8,61.1 99.8,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M125.2,44C125.2,42.9 126.1,42 127.2,42H144.6C145.71,42 146.6,42.9 146.6,44V60C146.6,61.1 145.71,62 144.6,62H127.2C126.1,62 125.2,61.1 125.2,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M150.6,44C150.6,42.9 151.5,42 152.6,42H170C171.1,42 172,42.9 172,44V60C172,61.1 171.1,62 170,62H152.6C151.5,62 150.6,61.1 150.6,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M176,44C176,42.9 176.9,42 178,42H195.4C196.51,42 197.4,42.9 197.4,44V60C197.4,61.1 196.51,62 195.4,62H178C176.9,62 176,61.1 176,60V44Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M201.4,44C201.4,42.9 202.29,42 203.4,42H220.8C221.9,42 222.8,42.9 222.8,44V60C222.8,61.1 221.9,62 220.8,62H203.4C202.29,62 201.4,61.1 201.4,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M226.8,44C226.8,42.9 227.7,42 228.8,42H246.2C247.3,42 248.2,42.9 248.2,44V60C248.2,61.1 247.3,62 246.2,62H228.8C227.7,62 226.8,61.1 226.8,60V44Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M252.2,44C252.2,42.9 253.1,42 254.2,42H271.6C272.7,42 273.6,42.9 273.6,44V60C273.6,61.1 272.7,62 271.6,62H254.2C253.1,62 252.2,61.1 252.2,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M277.6,44C277.6,42.9 278.5,42 279.6,42H297C298.11,42 299,42.9 299,44V60C299,61.1 298.11,62 297,62H279.6C278.5,62 277.6,61.1 277.6,60V44Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M303,44C303,42.9 303.89,42 305,42H332C333.11,42 334,42.9 334,44V60C334,61.1 333.11,62 332,62H305C303.89,62 303,61.1 303,60V44Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M14,72C14,70.9 14.9,70 16,70H48C49.1,70 50,70.9 50,72V88C50,89.1 49.1,90 48,90H16C14.9,90 14,89.1 14,88V72Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M54,72C54,70.9 54.9,70 56,70H73.78C74.88,70 75.78,70.9 75.78,72V88C75.78,89.1 74.88,90 73.78,90H56C54.9,90 54,89.1 54,88V72Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M79.78,72C79.78,70.9 80.67,70 81.78,70H99.56C100.66,70 101.56,70.9 101.56,72V88C101.56,89.1 100.66,90 99.56,90H81.78C80.67,90 79.78,89.1 79.78,88V72Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M105.56,72C105.56,70.9 106.45,70 107.56,70H125.33C126.44,70 127.33,70.9 127.33,72V88C127.33,89.1 126.44,90 125.33,90H107.56C106.45,90 105.56,89.1 105.56,88V72Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M131.33,72C131.33,70.9 132.23,70 133.33,70H151.11C152.22,70 153.11,70.9 153.11,72V88C153.11,89.1 152.22,90 151.11,90H133.33C132.23,90 131.33,89.1 131.33,88V72Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M157.11,72C157.11,70.9 158.01,70 159.11,70H176.89C177.99,70 178.89,70.9 178.89,72V88C178.89,89.1 177.99,90 176.89,90H159.11C158.01,90 157.11,89.1 157.11,88V72Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M182.89,72C182.89,70.9 183.78,70 184.89,70H202.67C203.77,70 204.67,70.9 204.67,72V88C204.67,89.1 203.77,90 202.67,90H184.89C183.78,90 182.89,89.1 182.89,88V72Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M208.67,72C208.67,70.9 209.56,70 210.67,70H228.45C229.55,70 230.45,70.9 230.45,72V88C230.45,89.1 229.55,90 228.45,90H210.67C209.56,90 208.67,89.1 208.67,88V72Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M234.44,72C234.44,70.9 235.34,70 236.44,70H254.22C255.33,70 256.22,70.9 256.22,72V88C256.22,89.1 255.33,90 254.22,90H236.44C235.34,90 234.44,89.1 234.44,88V72Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M260.22,72C260.22,70.9 261.12,70 262.22,70H280C281.11,70 282,70.9 282,72V88C282,89.1 281.11,90 280,90H262.22C261.12,90 260.22,89.1 260.22,88V72Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M286,72C286,70.9 286.89,70 288,70H332C333.11,70 334,70.9 334,72V88C334,89.1 333.11,90 332,90H288C286.89,90 286,89.1 286,88V72Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M14,100C14,98.9 14.9,98 16,98H62C63.1,98 64,98.9 64,100V116C64,117.11 63.1,118 62,118H16C14.9,118 14,117.11 14,116V100Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M68,100C68,98.9 68.9,98 70,98H87.78C88.88,98 89.78,98.9 89.78,100V116C89.78,117.11 88.88,118 87.78,118H70C68.9,118 68,117.11 68,116V100Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M93.78,100C93.78,98.9 94.67,98 95.78,98H113.56C114.66,98 115.56,98.9 115.56,100V116C115.56,117.11 114.66,118 113.56,118H95.78C94.67,118 93.78,117.11 93.78,116V100Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M119.56,100C119.56,98.9 120.45,98 121.56,98H139.33C140.44,98 141.33,98.9 141.33,100V116C141.33,117.11 140.44,118 139.33,118H121.56C120.45,118 119.56,117.11 119.56,116V100Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M145.33,100C145.33,98.9 146.23,98 147.33,98H165.11C166.22,98 167.11,98.9 167.11,100V116C167.11,117.11 166.22,118 165.11,118H147.33C146.23,118 145.33,117.11 145.33,116V100Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M171.11,100C171.11,98.9 172.01,98 173.11,98H190.89C191.99,98 192.89,98.9 192.89,100V116C192.89,117.11 191.99,118 190.89,118H173.11C172.01,118 171.11,117.11 171.11,116V100Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M196.89,100C196.89,98.9 197.78,98 198.89,98H216.67C217.77,98 218.67,98.9 218.67,100V116C218.67,117.11 217.77,118 216.67,118H198.89C197.78,118 196.89,117.11 196.89,116V100Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M222.67,100C222.67,98.9 223.56,98 224.67,98H242.45C243.55,98 244.45,98.9 244.45,100V116C244.45,117.11 243.55,118 242.45,118H224.67C223.56,118 222.67,117.11 222.67,116V100Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M248.44,100C248.44,98.9 249.34,98 250.44,98H268.22C269.33,98 270.22,98.9 270.22,100V116C270.22,117.11 269.33,118 268.22,118H250.44C249.34,118 248.44,117.11 248.44,116V100Z"
+        android:fillColor="#804D7A"/>
+    <path
+        android:pathData="M274.22,100C274.22,98.9 275.12,98 276.22,98H294C295.11,98 296,98.9 296,100V116C296,117.11 295.11,118 294,118H276.22C275.12,118 274.22,117.11 274.22,116V100Z"
+        android:fillColor="#F8DAEE"/>
+    <path
+        android:pathData="M300,100C300,98.9 300.89,98 302,98H332C333.11,98 334,98.9 334,100V116C334,117.11 333.11,118 332,118H302C300.89,118 300,117.11 300,116V100Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M14,128C14,126.89 14.9,126 16,126H48C49.1,126 50,126.89 50,128V144C50,145.1 49.1,146 48,146H16C14.9,146 14,145.1 14,144V128Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M54,128C54,126.89 54.9,126 56,126H88C89.1,126 90,126.89 90,128V144C90,145.1 89.1,146 88,146H56C54.9,146 54,145.1 54,144V128Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M94,128C94,126.89 94.9,126 96,126H248C249.1,126 250,126.89 250,128V144C250,145.1 249.1,146 248,146H96C94.9,146 94,145.1 94,144V128Z"
+        android:fillColor="#D1C2CB"/>
+    <path
+        android:pathData="M254,128C254,126.89 254.9,126 256,126H276C277.11,126 278,126.89 278,128V144C278,145.1 277.11,146 276,146H256C254.9,146 254,145.1 254,144V128Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M282,128C282,126.89 282.89,126 284,126H304C305.11,126 306,126.89 306,128V144C306,145.1 305.11,146 304,146H284C282.89,146 282,145.1 282,144V128Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M310,128C310,126.89 310.89,126 312,126H332C333.11,126 334,126.89 334,128V144C334,145.1 333.11,146 332,146H312C310.89,146 310,145.1 310,144V128Z"
+        android:fillColor="#ECDFE5"/>
+    <path
+        android:pathData="M18,3C9.72,3 3,9.72 3,18V142C3,150.28 9.72,157 18,157H330C338.28,157 345,150.28 345,142V18C345,9.72 338.28,3 330,3H18Z"
+        android:strokeWidth="6"
+        android:fillColor="#00000000"
+        android:strokeColor="#ECDFE5"/>
+</vector>
diff --git a/res/layout/dialog_custom_body_audio_sharing.xml b/res/layout/dialog_custom_body_audio_sharing.xml
index ba7f643..5e9f239 100644
--- a/res/layout/dialog_custom_body_audio_sharing.xml
+++ b/res/layout/dialog_custom_body_audio_sharing.xml
@@ -64,7 +64,7 @@
             android:layout_gravity="center"
             android:layout_marginTop="4dp"
             android:textColor="?androidprv:attr/textColorOnAccent"
-            android:background="@drawable/audio_sharing_rounded_bg_ripple"
+            android:background="@drawable/audio_sharing_rounded_bg_ripple_top"
             android:visibility="gone" />
 
         <Button
@@ -75,7 +75,7 @@
             android:layout_gravity="center"
             android:layout_marginTop="4dp"
             android:textColor="?androidprv:attr/textColorOnAccent"
-            android:background="@drawable/audio_sharing_rounded_bg_ripple"
+            android:background="@drawable/audio_sharing_rounded_bg_ripple_bottom"
             android:visibility="gone" />
     </LinearLayout>
 </ScrollView>
\ No newline at end of file
diff --git a/res/layout/mouse_keys_image_item.xml b/res/layout/mouse_keys_image_item.xml
new file mode 100644
index 0000000..36b9992
--- /dev/null
+++ b/res/layout/mouse_keys_image_item.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright 2024 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+          android:id="@+id/layout_description"
+          android:layout_width="match_parent"
+          android:layout_height="wrap_content"
+          android:layout_marginStart="16dp"
+          android:layout_marginEnd="20dp"
+          android:layout_marginBottom="20dp"
+          android:textAppearance="?android:attr/textAppearanceListItemSmall"
+          android:drawablePadding="8dp"/>
diff --git a/res/layout/mouse_keys_image_list.xml b/res/layout/mouse_keys_image_list.xml
new file mode 100644
index 0000000..f111736
--- /dev/null
+++ b/res/layout/mouse_keys_image_list.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright 2024 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+<androidx.constraintlayout.widget.ConstraintLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content">
+
+    <androidx.recyclerview.widget.RecyclerView
+        android:id="@+id/mouse_keys_image_recycler_list"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:clipToPadding="true"
+        android:nestedScrollingEnabled="false"
+        android:padding="12dp"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintBottom_toBottomOf="parent"/>
+
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 8c9045d..ebb69f7 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -4546,6 +4546,8 @@
     <string name="sticky_keys_summary">Press one key at a time for shortcuts instead of holding keys down together</string>
     <!-- Title for a toggle switch for 'mouse' keys,  an accessibility setting that allows the mouse pointer to be controlled using certain keys on a physical keyboard if keyboard is connected. [CHAR LIMIT=35] -->
     <string name="mouse_keys">Mouse keys</string>
+    <!-- Title for a toggle switch for 'mouse' keys under mouse key main page,  an accessibility setting that allows the mouse pointer to be controlled using certain keys on a physical keyboard if keyboard is connected. [CHAR LIMIT=35] -->
+    <string name="mouse_keys_main_title">Use mouse keys</string>
     <!-- Summary text for the accessibility setting 'Mouse keys' preference sub-screen. [CHAR LIMIT=100] -->
     <string name="mouse_keys_summary">Use your keyboard to control the pointer</string>
     <!-- Title for the 'Mouse reverse scrolling' preference switch, which reverses the direction of mouse scroll wheels so that moving the wheel up scrolls the content down. [CHAR LIMIT=60] -->
@@ -4556,6 +4558,21 @@
     <string name="mouse_swap_primary_button">Swap left and right buttons</string>
     <!-- Summary text for the 'Swap buttons' preference switch indicating to users that when this switch is enabled, their left click will behave as though it is the right click (secondary action) and that the right click will be the primary action. [CHAR LIMIT=NONE] -->
     <string name="mouse_swap_primary_button_summary">Use the left mouse button as your right</string>
+    <!-- page title for Mouse key main page. [CHAR LIMIT=NONE] -->
+    <string name="mouse_key_main_page_title">Mouse keys for <xliff:g id="keyboard name" example="my keyboard">%s</xliff:g></string>
+    <!-- Summary text for Mouse keys directional image. [CHAR LIMIT=NONE] -->
+    <string name="mouse_keys_directional_summary">Use the \“<xliff:g id="directional_label" example="7,8,9,u,o,j,k,l">%s</xliff:g>\” keys to move the mouse pointer</string>
+    <!-- Summary text for Mouse keys click image. [CHAR LIMIT=NONE] -->
+    <string name="mouse_keys_click_summary">Use the \“<xliff:g id="click_label" example="i">%s</xliff:g>\” key to click the primary mouse button</string>
+    <!-- Summary text for Mouse keys press hold image. [CHAR LIMIT=NONE] -->
+    <string name="mouse_keys_press_hold_summary">Use the \“<xliff:g id="press_hold_label" example="m">%s</xliff:g>\” key to press &amp; hold the primary mouse button</string>
+    <!-- Summary text for Mouse keys release image. [CHAR LIMIT=NONE] -->
+    <string name="mouse_keys_release_summary">Use the \“<xliff:g id="release_label" example=",">%s</xliff:g>\” key to release the primary mouse button</string>
+    <!-- Summary text for Mouse keys toggle scroll image. [CHAR LIMIT=NONE] -->
+    <string name="mouse_keys_toggle_scroll_summary">Use the \“<xliff:g id="release_label_1" example=".">%1$s</xliff:g>\” key to toggle scroll mode. This will make the \“<xliff:g id="release_label_2" example="8, k, o, u">%2$s</xliff:g>\” keys scroll the view top, down, left or right</string>
+    <!-- Summary text for Mouse keys click secondary button image. [CHAR LIMIT=NONE] -->
+    <string name="mouse_keys_release2_summary">Use the \“<xliff:g id="release_2_label" example="/">%s</xliff:g>\” key to click the secondary mouse button</string>
+
     <!-- Title for the button to trigger the 'keyboard shortcuts helper' dialog. [CHAR LIMIT=35] -->
     <string name="keyboard_shortcuts_helper">Keyboard shortcuts</string>
     <!-- Summary text for the 'keyboard shortcuts helper' dialog. [CHAR LIMIT=100] -->
diff --git a/res/xml/mouse_keys_main_page.xml b/res/xml/mouse_keys_main_page.xml
new file mode 100644
index 0000000..d781b51
--- /dev/null
+++ b/res/xml/mouse_keys_main_page.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright 2024 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/mouse_keys"
+    android:key="mouse_key_main_page">
+
+    <com.android.settingslib.widget.MainSwitchPreference
+        android:key="mouse_keys_main_switch"
+        android:title="@string/mouse_keys_main_title"
+        settings:controller="com.android.settings.inputmethod.KeyboardAccessibilityMouseKeysController"/>
+
+    <com.android.settingslib.widget.LayoutPreference
+        android:key="mouse_keys_list"
+        android:layout="@layout/mouse_keys_image_list"/>
+
+</PreferenceScreen>
\ No newline at end of file
diff --git a/res/xml/physical_keyboard_a11y_settings.xml b/res/xml/physical_keyboard_a11y_settings.xml
index 3bfe199..9d634c0 100644
--- a/res/xml/physical_keyboard_a11y_settings.xml
+++ b/res/xml/physical_keyboard_a11y_settings.xml
@@ -44,14 +44,15 @@
             android:title="@string/slow_keys"
             android:defaultValue="false"
             android:summary="@string/slow_keys_summary"
-            settings:controller="com.android.settings.inputmethod.KeyboardAccessibilitySlowKeysController" />
+            settings:controller="com.android.settings.inputmethod.KeyboardAccessibilitySlowKeysController"/>
 
-        <SwitchPreferenceCompat
+        <com.android.settingslib.PrimarySwitchPreference
             android:key="keyboard_a11y_page_mouse_keys"
             android:title="@string/mouse_keys"
             android:summary="@string/mouse_keys_summary"
             android:defaultValue="false"
-            settings:controller="com.android.settings.inputmethod.KeyboardAccessibilityMouseKeysController" />
+            android:fragment="com.android.settings.inputmethod.MouseKeysMainPageFragment"
+            settings:controller="com.android.settings.inputmethod.KeyboardAccessibilityMouseKeysController"/>
 
     </PreferenceCategory>
 
diff --git a/src/com/android/settings/accessibility/InvisibleToggleAccessibilityServicePreferenceFragment.java b/src/com/android/settings/accessibility/InvisibleToggleAccessibilityServicePreferenceFragment.java
index 9c8560b..8b37c8f 100644
--- a/src/com/android/settings/accessibility/InvisibleToggleAccessibilityServicePreferenceFragment.java
+++ b/src/com/android/settings/accessibility/InvisibleToggleAccessibilityServicePreferenceFragment.java
@@ -18,8 +18,6 @@
 
 import android.accessibilityservice.AccessibilityServiceInfo;
 
-import com.android.settingslib.accessibility.AccessibilityUtils;
-
 /**
  * Fragment that does not have toggle bar to turn on service to use.
  *
@@ -37,29 +35,4 @@
         super.onInstallSwitchPreferenceToggleSwitch();
         mToggleServiceSwitchPreference.setVisible(false);
     }
-
-    /**
-     * {@inheritDoc}
-     *
-     * Enables accessibility service only when user had allowed permission. Disables
-     * accessibility service when shortcutPreference is unchecked.
-     */
-    @Override
-    public void onToggleClicked(ShortcutPreference preference) {
-        super.onToggleClicked(preference);
-        boolean enabled = getArguments().getBoolean(AccessibilitySettings.EXTRA_CHECKED)
-                && preference.isChecked();
-        AccessibilityUtils.setAccessibilityServiceState(getContext(), mComponentName, enabled);
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * Enables accessibility service when user clicks permission allow button.
-     */
-    @Override
-    void onAllowButtonFromShortcutToggleClicked() {
-        super.onAllowButtonFromShortcutToggleClicked();
-        AccessibilityUtils.setAccessibilityServiceState(getContext(), mComponentName, true);
-    }
 }
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceAdapter.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceAdapter.java
index 0b6b8c9..7ff7844 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceAdapter.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceAdapter.java
@@ -85,6 +85,10 @@
                 mButtonView.setText(btnText);
                 mButtonView.setOnClickListener(
                         v -> mOnClickListener.onClick(mDevices.get(position)));
+                if (position == 0) {
+                    mButtonView.setBackgroundResource(
+                            com.android.settingslib.R.drawable.audio_sharing_rounded_bg_ripple_top);
+                }
             } else {
                 Log.w(TAG, "bind view skipped due to button view is null");
             }
diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageDataLoader.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageDataLoader.java
index 0836912..df84aba 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageDataLoader.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageDataLoader.java
@@ -20,8 +20,6 @@
 import android.content.Context;
 import android.os.AsyncTask;
 import android.os.BatteryUsageStats;
-import android.os.Handler;
-import android.os.Looper;
 import android.util.Log;
 
 import androidx.annotation.VisibleForTesting;
@@ -117,11 +115,9 @@
     private static void preprocessBatteryUsageSlots(
             final Context context, final UserIdsSeries userIdsSeries) {
         final long start = System.currentTimeMillis();
-        final Handler handler = new Handler(Looper.getMainLooper());
         final BatteryLevelData batteryLevelData =
                 DataProcessManager.getBatteryLevelData(
                         context,
-                        handler,
                         userIdsSeries,
                         /* isFromPeriodJob= */ true,
                         batteryDiffDataMap -> {
diff --git a/src/com/android/settings/fuelgauge/batteryusage/DataProcessManager.java b/src/com/android/settings/fuelgauge/batteryusage/DataProcessManager.java
index 0a1a547..fd548ab 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/DataProcessManager.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/DataProcessManager.java
@@ -19,8 +19,6 @@
 import android.app.usage.UsageEvents;
 import android.content.Context;
 import android.os.AsyncTask;
-import android.os.Handler;
-import android.os.Looper;
 import android.util.ArrayMap;
 import android.util.Log;
 
@@ -82,7 +80,6 @@
     private final long mLastFullChargeTimestamp;
     private final boolean mIsFromPeriodJob;
     private final Context mContext;
-    private final Handler mHandler;
     private final UserIdsSeries mUserIdsSeries;
     private final OnBatteryDiffDataMapLoadedListener mCallbackFunction;
     private final List<AppUsageEvent> mAppUsageEventList = new ArrayList<>();
@@ -123,7 +120,6 @@
     /** Constructor when there exists battery level data. */
     DataProcessManager(
             Context context,
-            Handler handler,
             final UserIdsSeries userIdsSeries,
             final boolean isFromPeriodJob,
             final long rawStartTimestamp,
@@ -132,7 +128,6 @@
             @NonNull final List<BatteryLevelData.PeriodBatteryLevelData> hourlyBatteryLevelsPerDay,
             @NonNull final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap) {
         mContext = context.getApplicationContext();
-        mHandler = handler;
         mUserIdsSeries = userIdsSeries;
         mIsFromPeriodJob = isFromPeriodJob;
         mRawStartTimestamp = rawStartTimestamp;
@@ -145,11 +140,9 @@
     /** Constructor when there is no battery level data. */
     DataProcessManager(
             Context context,
-            Handler handler,
             final UserIdsSeries userIdsSeries,
             @NonNull final OnBatteryDiffDataMapLoadedListener callbackFunction) {
         mContext = context.getApplicationContext();
-        mHandler = handler;
         mUserIdsSeries = userIdsSeries;
         mCallbackFunction = callbackFunction;
         mIsFromPeriodJob = false;
@@ -444,12 +437,8 @@
 
             @Override
             protected void onPostExecute(final Map<Long, BatteryDiffData> batteryDiffDataMap) {
-                // Post results back to main thread to refresh UI.
-                if (mHandler != null && mCallbackFunction != null) {
-                    mHandler.post(
-                            () -> {
-                                mCallbackFunction.onBatteryDiffDataMapLoaded(batteryDiffDataMap);
-                            });
+                if (mCallbackFunction != null) {
+                    mCallbackFunction.onBatteryDiffDataMapLoaded(batteryDiffDataMap);
                 }
             }
         }.execute();
@@ -534,12 +523,8 @@
 
             @Override
             protected void onPostExecute(final Map<Long, BatteryDiffData> batteryDiffDataMap) {
-                // Post results back to main thread to refresh UI.
-                if (mHandler != null && mCallbackFunction != null) {
-                    mHandler.post(
-                            () -> {
-                                mCallbackFunction.onBatteryDiffDataMapLoaded(batteryDiffDataMap);
-                            });
+                if (mCallbackFunction != null) {
+                    mCallbackFunction.onBatteryDiffDataMapLoaded(batteryDiffDataMap);
                 }
             }
         }.execute();
@@ -581,7 +566,6 @@
     @Nullable
     public static BatteryLevelData getBatteryLevelData(
             Context context,
-            @Nullable Handler handler,
             final UserIdsSeries userIdsSeries,
             final boolean isFromPeriodJob,
             final OnBatteryDiffDataMapLoadedListener onBatteryUsageMapLoadedListener) {
@@ -601,7 +585,6 @@
         final BatteryLevelData batteryLevelData =
                 getPeriodBatteryLevelData(
                         context,
-                        handler,
                         userIdsSeries,
                         startTimestamp,
                         lastFullChargeTime,
@@ -621,7 +604,6 @@
 
     private static BatteryLevelData getPeriodBatteryLevelData(
             Context context,
-            @Nullable Handler handler,
             final UserIdsSeries userIdsSeries,
             final long startTimestamp,
             final long lastFullChargeTime,
@@ -639,7 +621,6 @@
             return null;
         }
 
-        handler = handler != null ? handler : new Handler(Looper.getMainLooper());
         final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap =
                 sFakeBatteryHistoryMap != null
                         ? sFakeBatteryHistoryMap
@@ -650,8 +631,7 @@
                                 lastFullChargeTime);
         if (batteryHistoryMap == null || batteryHistoryMap.isEmpty()) {
             Log.d(TAG, "batteryHistoryMap is null in getPeriodBatteryLevelData()");
-            new DataProcessManager(
-                            context, handler, userIdsSeries, onBatteryDiffDataMapLoadedListener)
+            new DataProcessManager(context, userIdsSeries, onBatteryDiffDataMapLoadedListener)
                     .start();
             return null;
         }
@@ -680,8 +660,7 @@
                 DataProcessor.getLevelDataThroughProcessedHistoryMap(
                         context, processedBatteryHistoryMap);
         if (batteryLevelData == null) {
-            new DataProcessManager(
-                            context, handler, userIdsSeries, onBatteryDiffDataMapLoadedListener)
+            new DataProcessManager(context, userIdsSeries, onBatteryDiffDataMapLoadedListener)
                     .start();
             Log.d(TAG, "getBatteryLevelData() returns null");
             return null;
@@ -690,7 +669,6 @@
         // Start the async task to compute diff usage data and load labels and icons.
         new DataProcessManager(
                         context,
-                        handler,
                         userIdsSeries,
                         isFromPeriodJob,
                         startTimestamp,
diff --git a/src/com/android/settings/fuelgauge/batteryusage/PowerUsageAdvanced.java b/src/com/android/settings/fuelgauge/batteryusage/PowerUsageAdvanced.java
index a9c2332..1ed6a74 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/PowerUsageAdvanced.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/PowerUsageAdvanced.java
@@ -214,20 +214,22 @@
         if (!isResumed() || mBatteryLevelData == null) {
             return;
         }
-        mBatteryUsageMap =
-                DataProcessor.generateBatteryUsageMap(
-                        getContext(), batteryDiffDataMap, mBatteryLevelData.orElse(null));
-        Log.d(TAG, "onBatteryDiffDataMapUpdate: " + mBatteryUsageMap);
-        DataProcessor.loadLabelAndIcon(mBatteryUsageMap);
-        onSelectedSlotDataUpdated();
-        detectAnomaly();
-        logScreenUsageTime();
-        if (mBatteryChartPreferenceController != null
-                && mBatteryLevelData.isEmpty()
-                && isBatteryUsageMapNullOrEmpty()) {
-            // No available battery usage and battery level data.
-            mBatteryChartPreferenceController.showEmptyChart();
-        }
+        mHandler.post(() -> {
+            mBatteryUsageMap =
+                    DataProcessor.generateBatteryUsageMap(
+                            getContext(), batteryDiffDataMap, mBatteryLevelData.orElse(null));
+            Log.d(TAG, "onBatteryDiffDataMapUpdate: " + mBatteryUsageMap);
+            DataProcessor.loadLabelAndIcon(mBatteryUsageMap);
+            onSelectedSlotDataUpdated();
+            detectAnomaly();
+            logScreenUsageTime();
+            if (mBatteryChartPreferenceController != null
+                    && mBatteryLevelData.isEmpty()
+                    && isBatteryUsageMapNullOrEmpty()) {
+                // No available battery usage and battery level data.
+                mBatteryChartPreferenceController.showEmptyChart();
+            }
+        });
     }
 
     private void onSelectedSlotDataUpdated() {
@@ -503,7 +505,6 @@
                 public BatteryLevelData loadInBackground() {
                     return DataProcessManager.getBatteryLevelData(
                             getContext(),
-                            mHandler,
                             new UserIdsSeries(getContext(), /* isNonUIRequest= */ false),
                             /* isFromPeriodJob= */ false,
                             PowerUsageAdvanced.this::onBatteryDiffDataMapUpdate);
diff --git a/src/com/android/settings/inputmethod/KeyboardAccessibilityMouseKeysController.java b/src/com/android/settings/inputmethod/KeyboardAccessibilityMouseKeysController.java
index 57ae88a..34f53c4 100644
--- a/src/com/android/settings/inputmethod/KeyboardAccessibilityMouseKeysController.java
+++ b/src/com/android/settings/inputmethod/KeyboardAccessibilityMouseKeysController.java
@@ -22,15 +22,23 @@
 import android.provider.Settings;
 
 import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
 import androidx.lifecycle.LifecycleObserver;
 import androidx.preference.PreferenceScreen;
-import androidx.preference.TwoStatePreference;
+
+import com.android.settingslib.PrimarySwitchPreference;
+import com.android.settingslib.widget.MainSwitchPreference;
 
 public class KeyboardAccessibilityMouseKeysController extends
         InputSettingPreferenceController implements
         LifecycleObserver {
+    private static final String KEY_MOUSE_KEY = "accessibility_mouse_keys";
+    private static final String KEY_MOUSE_KEY_MAIN_PAGE = "mouse_keys_main_switch";
 
-    private TwoStatePreference mTwoStatePreference;
+    @Nullable
+    private PrimarySwitchPreference mPrimaryPreference;
+    @Nullable
+    private MainSwitchPreference mMainSwitchPreference;
 
     public KeyboardAccessibilityMouseKeysController(@NonNull Context context, @NonNull String key) {
         super(context, key);
@@ -39,7 +47,11 @@
     @Override
     public void displayPreference(@NonNull PreferenceScreen screen) {
         super.displayPreference(screen);
-        mTwoStatePreference = screen.findPreference(getPreferenceKey());
+        if (KEY_MOUSE_KEY.equals(getPreferenceKey())) {
+            mPrimaryPreference = screen.findPreference(getPreferenceKey());
+        } else if (KEY_MOUSE_KEY_MAIN_PAGE.equals(getPreferenceKey())) {
+            mMainSwitchPreference = screen.findPreference(getPreferenceKey());
+        }
     }
 
     @Override
@@ -63,8 +75,11 @@
 
     @Override
     protected void onInputSettingUpdated() {
-        if (mTwoStatePreference != null) {
-            mTwoStatePreference.setChecked(
+        if (mPrimaryPreference != null) {
+            mPrimaryPreference.setChecked(
+                    InputSettings.isAccessibilityMouseKeysEnabled(mContext));
+        } else if (mMainSwitchPreference != null) {
+            mMainSwitchPreference.setChecked(
                     InputSettings.isAccessibilityMouseKeysEnabled(mContext));
         }
     }
diff --git a/src/com/android/settings/inputmethod/MouseKeysImageListAdapter.java b/src/com/android/settings/inputmethod/MouseKeysImageListAdapter.java
new file mode 100644
index 0000000..65024b1
--- /dev/null
+++ b/src/com/android/settings/inputmethod/MouseKeysImageListAdapter.java
@@ -0,0 +1,138 @@
+/*
+ * Copyright 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.inputmethod;
+
+import android.content.Context;
+import android.view.InputDevice;
+import android.view.KeyEvent;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.settings.R;
+
+import com.google.common.collect.ImmutableList;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+
+public class MouseKeysImageListAdapter extends
+        RecyclerView.Adapter<MouseKeysImageListAdapter.MouseKeyImageViewHolder> {
+    private static final ImmutableList<Integer> DRAWABLE_LIST = ImmutableList.of(
+            R.drawable.mouse_keys_directional, R.drawable.mouse_keys_click,
+            R.drawable.mouse_keys_press_hold, R.drawable.mouse_keys_release,
+            R.drawable.mouse_keys_toggle_scroll, R.drawable.mouse_keys_release2);
+    private static final ImmutableList<Integer> DIRECTIONAL_CHAR_KEYCODE_LIST = ImmutableList.of(
+            KeyEvent.KEYCODE_7, KeyEvent.KEYCODE_8, KeyEvent.KEYCODE_9, KeyEvent.KEYCODE_U,
+            KeyEvent.KEYCODE_O, KeyEvent.KEYCODE_J, KeyEvent.KEYCODE_K, KeyEvent.KEYCODE_L
+    );
+    private static final int LEFT_CLICK_CHAR_KEYCODE =
+            KeyEvent.KEYCODE_I;
+    private static final int PRESS_HOLD_CHAR_KEYCODE =
+            KeyEvent.KEYCODE_M;
+    private static final int RELEASE_CHAR_KEYCODE =
+            KeyEvent.KEYCODE_COMMA;
+    private static final ImmutableList<Integer> TOGGLE_SCROLL_CHAR_KEYCODE_LIST = ImmutableList.of(
+            KeyEvent.KEYCODE_PERIOD, KeyEvent.KEYCODE_8, KeyEvent.KEYCODE_K, KeyEvent.KEYCODE_O,
+            KeyEvent.KEYCODE_U
+    );
+    private static final int RIGHT_CLICK_CHAR_KEYCODE =
+            KeyEvent.KEYCODE_SLASH;
+    private final List<String> mComposedSummaryList = new ArrayList<>();
+
+    public MouseKeysImageListAdapter(@NonNull Context context,
+            @Nullable InputDevice currentInputDevice) {
+        composeSummaryForImages(context, currentInputDevice);
+    }
+
+    @NonNull
+    @Override
+    public MouseKeyImageViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+        View view = LayoutInflater.from(parent.getContext())
+                .inflate(R.layout.mouse_keys_image_item, parent, false);
+        return new MouseKeyImageViewHolder(view, parent.getContext());
+    }
+
+    @Override
+    public void onBindViewHolder(@NonNull MouseKeyImageViewHolder holder, int position) {
+        ((MouseKeyImageViewHolder) holder).bindView(DRAWABLE_LIST.get(position),
+                mComposedSummaryList.get(position));
+    }
+
+    @Override
+    public int getItemCount() {
+        return DRAWABLE_LIST.size();
+    }
+
+    private void composeSummaryForImages(Context context,
+            @Nullable InputDevice currentInputDevice) {
+        if (currentInputDevice == null) {
+            return;
+        }
+        mComposedSummaryList.clear();
+        List<String> directionalLabelList = DIRECTIONAL_CHAR_KEYCODE_LIST.stream().map(
+                (key) -> getDisplayLabel(currentInputDevice, key)).toList();
+        mComposedSummaryList.add(context.getString(R.string.mouse_keys_directional_summary,
+                String.join(",", directionalLabelList)));
+        String leftClickLabel = getDisplayLabel(currentInputDevice, LEFT_CLICK_CHAR_KEYCODE);
+        mComposedSummaryList.add(
+                context.getString(R.string.mouse_keys_click_summary, leftClickLabel));
+        String pressHoldLabel = getDisplayLabel(currentInputDevice, PRESS_HOLD_CHAR_KEYCODE);
+        mComposedSummaryList.add(
+                context.getString(R.string.mouse_keys_press_hold_summary, pressHoldLabel));
+        String releaseLabel = getDisplayLabel(currentInputDevice, RELEASE_CHAR_KEYCODE);
+        mComposedSummaryList.add(
+                context.getString(R.string.mouse_keys_release_summary, releaseLabel));
+        List<String> toggleScrollLabelList = TOGGLE_SCROLL_CHAR_KEYCODE_LIST.stream().map(
+                (key) -> getDisplayLabel(currentInputDevice, key)).toList();
+        mComposedSummaryList.add(context.getString(R.string.mouse_keys_toggle_scroll_summary,
+                toggleScrollLabelList.getFirst(),
+                String.join(",", toggleScrollLabelList.subList(1, toggleScrollLabelList.size()))
+        ));
+        String rightClickLabel = getDisplayLabel(currentInputDevice, RIGHT_CLICK_CHAR_KEYCODE);
+        mComposedSummaryList.add(
+                context.getString(R.string.mouse_keys_release2_summary, rightClickLabel));
+    }
+
+    private String getDisplayLabel(InputDevice currentInputDevice, int keycode) {
+        return String.valueOf(currentInputDevice.getKeyCharacterMap().getDisplayLabel(
+                currentInputDevice.getKeyCodeForKeyLocation(keycode))).toLowerCase(Locale.ROOT);
+    }
+
+    public static class MouseKeyImageViewHolder extends RecyclerView.ViewHolder {
+        private final TextView mTextView;
+        private final Context mContext;
+
+        public MouseKeyImageViewHolder(View itemView, Context context) {
+            super(itemView);
+            mTextView = (TextView) itemView;
+            mContext = context;
+        }
+
+        void bindView(int drawableRes, String summary) {
+            mTextView.setText(summary);
+            mTextView.setCompoundDrawablesWithIntrinsicBounds(null,
+                    mContext.getDrawable(drawableRes), null, null);
+        }
+    }
+}
diff --git a/src/com/android/settings/inputmethod/MouseKeysMainPageFragment.java b/src/com/android/settings/inputmethod/MouseKeysMainPageFragment.java
new file mode 100644
index 0000000..dd9c1dd
--- /dev/null
+++ b/src/com/android/settings/inputmethod/MouseKeysMainPageFragment.java
@@ -0,0 +1,163 @@
+/*
+ * Copyright 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.inputmethod;
+
+import static com.android.settings.inputmethod.PhysicalKeyboardFragment.getHardKeyboards;
+
+import android.app.settings.SettingsEnums;
+import android.content.Context;
+import android.hardware.input.InputManager;
+import android.os.Bundle;
+import android.view.InputDevice;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.preference.PreferenceScreen;
+import androidx.recyclerview.widget.GridLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.internal.util.Preconditions;
+import com.android.settings.R;
+import com.android.settings.dashboard.DashboardFragment;
+import com.android.settings.keyboard.Flags;
+import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settingslib.search.SearchIndexable;
+import com.android.settingslib.utils.ThreadUtils;
+import com.android.settingslib.widget.LayoutPreference;
+
+import java.util.List;
+
+@SearchIndexable
+public class MouseKeysMainPageFragment extends DashboardFragment
+        implements InputManager.InputDeviceListener {
+
+    private static final String TAG = "MouseKeysMainPageFragment";
+    private static final String KEY_MOUSE_KEY_LIST = "mouse_keys_list";
+
+    private InputManager mInputManager;
+    private LayoutPreference mMouseKeyImagesPreference;
+    @Nullable
+    private InputDevice mCurrentInputDevice;
+
+    @Override
+    public void onCreate(@NonNull Bundle bundle) {
+        super.onCreate(bundle);
+        mCurrentInputDevice = getInputDevice();
+        final PreferenceScreen screen = getPreferenceScreen();
+        mMouseKeyImagesPreference = screen.findPreference(KEY_MOUSE_KEY_LIST);
+        mInputManager = Preconditions.checkNotNull(getActivity()
+                .getSystemService(InputManager.class));
+        String title = mCurrentInputDevice == null ? getActivity().getString(R.string.mouse_keys)
+                : getActivity().getString(R.string.mouse_key_main_page_title,
+                        mCurrentInputDevice.getName());
+        getActivity().setTitle(title);
+        configureImagesPreference();
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        finishEarlyIfNeeded();
+        mInputManager.registerInputDeviceListener(this, null);
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+        mInputManager.unregisterInputDeviceListener(this);
+    }
+
+    @Override
+    public int getMetricsCategory() {
+        return SettingsEnums.PHYSICAL_KEYBOARD_A11Y;
+    }
+
+    @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.mouse_keys_main_page;
+    }
+
+    @Override
+    protected String getLogTag() {
+        return TAG;
+    }
+
+    @Override
+    public void onInputDeviceAdded(int deviceId) {
+        finishEarlyIfNeeded();
+    }
+
+    @Override
+    public void onInputDeviceRemoved(int deviceId) {
+        finishEarlyIfNeeded();
+    }
+
+    @Override
+    public void onInputDeviceChanged(int deviceId) {
+        finishEarlyIfNeeded();
+    }
+
+    private void finishEarlyIfNeeded() {
+        final Context context = getContext();
+        ThreadUtils.postOnBackgroundThread(() -> {
+            final List<PhysicalKeyboardFragment.HardKeyboardDeviceInfo> newHardKeyboards =
+                    getHardKeyboards(context);
+            if (newHardKeyboards.isEmpty()) {
+                getActivity().finish();
+            }
+        });
+    }
+
+    private void configureImagesPreference() {
+        final RecyclerView recyclerView = mMouseKeyImagesPreference.findViewById(
+                R.id.mouse_keys_image_recycler_list);
+        recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 2));
+        recyclerView.setAdapter(new MouseKeysImageListAdapter(getActivity(), mCurrentInputDevice));
+    }
+
+    /**
+     * Priority of picking input device:
+     * 1. internal keyboard(built-in keyboard)
+     * 2. first keyboard in the list
+     */
+    @Nullable
+    private InputDevice getInputDevice() {
+        InputDevice inputDevice = null;
+        for (int deviceId : InputDevice.getDeviceIds()) {
+            final InputDevice device = InputDevice.getDevice(deviceId);
+            if (device == null || device.isVirtual() || !device.isFullKeyboard()) {
+                continue;
+            }
+            if (inputDevice == null) {
+                inputDevice = device;
+            } else if (!device.isExternal()) {
+                inputDevice = device;
+                break;
+            }
+        }
+        return inputDevice;
+    }
+
+    public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+            new BaseSearchIndexProvider(R.xml.mouse_keys_main_page) {
+                @Override
+                protected boolean isPageSearchEnabled(Context context) {
+                    return Flags.keyboardAndTouchpadA11yNewPageEnabled()
+                            && !getHardKeyboards(context).isEmpty();
+                }
+            };
+}
diff --git a/src/com/android/settings/network/NetworkProviderScreen.kt b/src/com/android/settings/network/NetworkProviderScreen.kt
new file mode 100644
index 0000000..fa3ed78
--- /dev/null
+++ b/src/com/android/settings/network/NetworkProviderScreen.kt
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.settings.network
+
+import android.content.Context
+import com.android.settings.R
+import com.android.settings.flags.Flags
+import com.android.settingslib.metadata.PreferenceAvailabilityProvider
+import com.android.settingslib.metadata.ProvidePreferenceScreen
+import com.android.settingslib.metadata.preferenceHierarchy
+import com.android.settingslib.preference.PreferenceScreenCreator
+
+@ProvidePreferenceScreen
+class NetworkProviderScreen : PreferenceScreenCreator, PreferenceAvailabilityProvider {
+    override val key: String
+        get() = KEY
+
+    override val title: Int
+        get() = R.string.provider_internet_settings
+
+    override val icon: Int
+        get() = R.drawable.ic_settings_wireless
+
+    override val keywords: Int
+        get() = R.string.keywords_internet
+
+    override fun isAvailable(context: Context) =
+        context.resources.getBoolean(R.bool.config_show_internet_settings)
+
+    override fun isFlagEnabled(context: Context) = Flags.catalystInternetSettings()
+
+    override fun hasCompleteHierarchy() = false
+
+    override fun fragmentClass() = NetworkProviderSettings::class.java
+
+    override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {}
+
+    companion object {
+        const val KEY = "internet_settings"
+    }
+}
diff --git a/src/com/android/settings/network/NetworkProviderSettings.java b/src/com/android/settings/network/NetworkProviderSettings.java
index b268461..455201a 100644
--- a/src/com/android/settings/network/NetworkProviderSettings.java
+++ b/src/com/android/settings/network/NetworkProviderSettings.java
@@ -1508,4 +1508,9 @@
             return android.R.attr.colorControlNormal;
         }
     }
+
+    @Override
+    public @Nullable String getPreferenceScreenBindingKey(@NonNull Context context) {
+        return NetworkProviderScreen.KEY;
+    }
 }
diff --git a/src/com/android/settings/network/telephony/CarrierConfigRepository.kt b/src/com/android/settings/network/telephony/CarrierConfigRepository.kt
index 99683a8..77f4e1c 100644
--- a/src/com/android/settings/network/telephony/CarrierConfigRepository.kt
+++ b/src/com/android/settings/network/telephony/CarrierConfigRepository.kt
@@ -224,7 +224,10 @@
         }
 
         private val BooleanKeysWhichNotFollowingsNamingConventions =
-            listOf(CarrierConfigManager.KEY_IGNORE_DATA_ENABLED_CHANGED_FOR_VIDEO_CALLS)
+            listOf(
+                CarrierConfigManager.KEY_IGNORE_DATA_ENABLED_CHANGED_FOR_VIDEO_CALLS,
+                CarrierConfigManager.KEY_MMS_MMS_ENABLED_BOOL,
+            )
 
         private fun checkBooleanKey(key: String) {
             check(key.endsWith("_bool") || key in BooleanKeysWhichNotFollowingsNamingConventions) {
diff --git a/src/com/android/settings/network/telephony/MmsMessagePreferenceController.kt b/src/com/android/settings/network/telephony/MmsMessagePreferenceController.kt
index 220218c..a37a12b 100644
--- a/src/com/android/settings/network/telephony/MmsMessagePreferenceController.kt
+++ b/src/com/android/settings/network/telephony/MmsMessagePreferenceController.kt
@@ -17,6 +17,7 @@
 package com.android.settings.network.telephony
 
 import android.content.Context
+import android.telephony.CarrierConfigManager
 import android.telephony.SubscriptionManager
 import android.telephony.TelephonyManager
 import android.telephony.data.ApnSetting
@@ -45,7 +46,7 @@
     private var subId = SubscriptionManager.INVALID_SUBSCRIPTION_ID
     private var telephonyManager: TelephonyManager =
         context.getSystemService(TelephonyManager::class.java)!!
-
+    private val carrierConfigRepository = CarrierConfigRepository(context)
     private var preferenceScreen: PreferenceScreen? = null
 
     fun init(subId: Int) {
@@ -54,7 +55,13 @@
     }
 
     override fun getAvailabilityStatus() =
-        if (getAvailabilityStatus(telephonyManager, subId, getDefaultDataSubId)) AVAILABLE
+        if (getAvailabilityStatus(
+                telephonyManager,
+                subId,
+                getDefaultDataSubId,
+                carrierConfigRepository
+            )
+        ) AVAILABLE
         else CONDITIONALLY_UNAVAILABLE
 
     override fun displayPreference(screen: PreferenceScreen) {
@@ -92,11 +99,14 @@
             telephonyManager: TelephonyManager,
             subId: Int,
             getDefaultDataSubId: () -> Int,
+            carrierConfigRepository: CarrierConfigRepository,
         ): Boolean {
             return SubscriptionManager.isValidSubscriptionId(subId) &&
                 !telephonyManager.isDataEnabled &&
                 telephonyManager.isApnMetered(ApnSetting.TYPE_MMS) &&
-                !isFallbackDataEnabled(telephonyManager, subId, getDefaultDataSubId())
+                !isFallbackDataEnabled(telephonyManager, subId, getDefaultDataSubId()) &&
+                carrierConfigRepository.getBoolean(
+                    subId, CarrierConfigManager.KEY_MMS_MMS_ENABLED_BOOL)
         }
 
         private fun isFallbackDataEnabled(
@@ -118,11 +128,16 @@
         ) : MobileNetworkSettingsSearchItem {
             private var telephonyManager: TelephonyManager =
                 context.getSystemService(TelephonyManager::class.java)!!
+            private val carrierConfigRepository = CarrierConfigRepository(context)
 
             @VisibleForTesting
             fun isAvailable(subId: Int): Boolean =
                 getAvailabilityStatus(
-                    telephonyManager.createForSubscriptionId(subId), subId, getDefaultDataSubId)
+                    telephonyManager.createForSubscriptionId(subId),
+                    subId,
+                    getDefaultDataSubId,
+                    carrierConfigRepository
+                )
 
             override fun getSearchResult(subId: Int): MobileNetworkSettingsSearchResult? {
                 if (!isAvailable(subId)) return null
diff --git a/src/com/android/settings/security/LockScreenPreferenceScreen.kt b/src/com/android/settings/security/LockScreenPreferenceScreen.kt
new file mode 100644
index 0000000..0c7877f
--- /dev/null
+++ b/src/com/android/settings/security/LockScreenPreferenceScreen.kt
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.settings.security
+
+import android.content.Context
+import com.android.settings.R
+import com.android.settings.flags.Flags
+import com.android.settingslib.metadata.ProvidePreferenceScreen
+import com.android.settingslib.metadata.preferenceHierarchy
+import com.android.settingslib.preference.PreferenceScreenCreator
+
+@ProvidePreferenceScreen
+open class LockScreenPreferenceScreen : PreferenceScreenCreator {
+    override val key: String
+        get() = KEY
+
+    override val title: Int
+        get() = R.string.lockscreen_settings_title
+
+    override val keywords: Int
+        get() = R.string.keywords_ambient_display_screen
+
+    override fun isFlagEnabled(context: Context) = Flags.catalystLockscreenFromDisplaySettings()
+
+    override fun hasCompleteHierarchy() = false
+
+    override fun fragmentClass() = LockscreenDashboardFragment::class.java
+
+    override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {
+        // add hierarchy here
+    }
+
+    companion object {
+        const val KEY = "lockscreen_from_display_settings"
+    }
+}
\ No newline at end of file
diff --git a/src/com/android/settings/security/LockscreenDashboardFragment.java b/src/com/android/settings/security/LockscreenDashboardFragment.java
index 2e4a1f2..1e299a3 100644
--- a/src/com/android/settings/security/LockscreenDashboardFragment.java
+++ b/src/com/android/settings/security/LockscreenDashboardFragment.java
@@ -29,6 +29,8 @@
 import android.os.Looper;
 import android.provider.Settings;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
 import androidx.annotation.VisibleForTesting;
 
 import com.android.settings.R;
@@ -160,6 +162,11 @@
         }
     }
 
+    @Override
+    public @Nullable String getPreferenceScreenBindingKey(@NonNull Context context) {
+        return LockScreenPreferenceScreen.KEY;
+    }
+
     private AmbientDisplayConfiguration getConfig(Context context) {
         if (mConfig == null) {
             mConfig = new AmbientDisplayConfiguration(context);
diff --git a/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java b/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java
index e5581d3..dddbd63 100644
--- a/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java
+++ b/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java
@@ -54,9 +54,9 @@
 import com.android.internal.telephony.flags.Flags;
 import com.android.settings.R;
 import com.android.settings.SettingsActivity;
-import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.Utils;
 import com.android.settings.core.SubSettingLauncher;
+import com.android.settings.dashboard.DashboardFragment;
 import com.android.settings.network.ims.WifiCallingQueryImsState;
 import com.android.settings.network.telephony.wificalling.IWifiCallingRepository;
 import com.android.settings.network.telephony.wificalling.WifiCallingRepository;
@@ -70,7 +70,7 @@
  * This is the inner class of {@link WifiCallingSettings} fragment.
  * The preference screen lets you enable/disable Wi-Fi Calling and change Wi-Fi Calling mode.
  */
-public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
+public class WifiCallingSettingsForSub extends DashboardFragment
         implements OnCheckedChangeListener,
         Preference.OnPreferenceChangeListener {
     private static final String TAG = "WifiCallingForSub";
@@ -266,8 +266,6 @@
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
-        addPreferencesFromResource(R.xml.wifi_calling_settings);
-
         // SubId should always be specified when creating this fragment. Either through
         // fragment.setArguments() or through savedInstanceState.
         if (getArguments() != null && getArguments().containsKey(FRAGMENT_BUNDLE_SUBID)) {
@@ -447,6 +445,11 @@
     }
 
     @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.wifi_calling_settings;
+    }
+
+    @Override
     public void onPause() {
         super.onPause();
         Context context = getActivity();
@@ -571,6 +574,11 @@
         }
     }
 
+    @Override
+    protected String getLogTag() {
+        return TAG;
+    }
+
     private void updateButtonWfcMode(boolean wfcEnabled,
             int wfcMode, int wfcRoamingMode) {
         mButtonWfcMode.setSummary(getWfcModeSummary(wfcMode));
diff --git a/tests/Enable16KbTests/Android.bp b/tests/Enable16KbTests/Android.bp
index 7e1d32c..72826bb 100644
--- a/tests/Enable16KbTests/Android.bp
+++ b/tests/Enable16KbTests/Android.bp
@@ -53,7 +53,7 @@
         "compatibility-host-util",
         "compatibility-tradefed",
     ],
-    data: [
+    device_common_data: [
         ":test_16kb_app",
     ],
     test_suites: ["general-tests"],
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/DataProcessManagerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/DataProcessManagerTest.java
index 2f20b42..1fed13f 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/DataProcessManagerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/DataProcessManagerTest.java
@@ -110,7 +110,6 @@
         mDataProcessManager =
                 new DataProcessManager(
                         mContext,
-                        /* handler= */ null,
                         mUserIdsSeries,
                         /* isFromPeriodJob= */ false,
                         /* rawStartTimestamp= */ 0L,
@@ -131,7 +130,6 @@
         final DataProcessManager dataProcessManager =
                 new DataProcessManager(
                         mContext,
-                        /* handler= */ null,
                         mUserIdsSeries,
                         /* callbackFunction= */ null);
         assertThat(dataProcessManager.getShowScreenOnTime()).isFalse();
@@ -257,7 +255,6 @@
         final DataProcessManager dataProcessManager =
                 new DataProcessManager(
                         mContext,
-                        /* handler= */ null,
                         mUserIdsSeries,
                         /* isFromPeriodJob= */ false,
                         /* rawStartTimestamp= */ 2L,
@@ -349,7 +346,6 @@
         assertThat(
                         DataProcessManager.getBatteryLevelData(
                                 mContext,
-                                /* handler= */ null,
                                 mUserIdsSeries,
                                 /* isFromPeriodJob= */ false,
                                 /* asyncResponseDelegate= */ null))
@@ -357,7 +353,6 @@
         assertThat(
                         DataProcessManager.getBatteryLevelData(
                                 mContext,
-                                /* handler= */ null,
                                 mUserIdsSeries,
                                 /* isFromPeriodJob= */ true,
                                 /* asyncResponseDelegate= */ null))
@@ -379,7 +374,6 @@
         final BatteryLevelData resultData =
                 DataProcessManager.getBatteryLevelData(
                         mContext,
-                        /* handler= */ null,
                         mUserIdsSeries,
                         /* isFromPeriodJob= */ false,
                         /* asyncResponseDelegate= */ null);
@@ -408,7 +402,6 @@
         final BatteryLevelData resultData =
                 DataProcessManager.getBatteryLevelData(
                         mContext,
-                        /* handler= */ null,
                         mUserIdsSeries,
                         /* isFromPeriodJob= */ false,
                         /* asyncResponseDelegate= */ null);
diff --git a/tests/robotests/src/com/android/settings/network/NetworkProviderScreenTest.kt b/tests/robotests/src/com/android/settings/network/NetworkProviderScreenTest.kt
new file mode 100644
index 0000000..d8888c5
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/network/NetworkProviderScreenTest.kt
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.settings.network
+
+import android.content.ContextWrapper
+import android.content.res.Resources
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.android.settings.flags.Flags
+import com.android.settingslib.preference.CatalystScreenTestCase
+import com.google.common.truth.Truth.assertThat
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.ArgumentMatchers.anyInt
+import org.mockito.kotlin.doReturn
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.stub
+
+@RunWith(AndroidJUnit4::class)
+class NetworkProviderScreenTest : CatalystScreenTestCase() {
+    override val preferenceScreenCreator = NetworkProviderScreen()
+
+    override val flagName: String
+        get() = Flags.FLAG_CATALYST_INTERNET_SETTINGS
+
+    private val mockResources = mock<Resources>()
+
+    private val context =
+        object : ContextWrapper(appContext) {
+            override fun getResources(): Resources = mockResources
+        }
+
+    @Test
+    fun key() {
+        assertThat(preferenceScreenCreator.key).isEqualTo(NetworkProviderScreen.KEY)
+    }
+
+    @Test
+    fun isAvailable_showInternetSettings_shouldReturnTrue() {
+        mockResources.stub { on { getBoolean(anyInt()) } doReturn true }
+
+        assertThat(preferenceScreenCreator.isAvailable(context)).isTrue()
+    }
+
+    @Test
+    fun isAvailable_notShowInternetSettings_shouldReturnFalse() {
+        mockResources.stub { on { getBoolean(anyInt()) } doReturn false }
+
+        assertThat(preferenceScreenCreator.isAvailable(context)).isFalse()
+    }
+
+    override fun migration() {}
+}
diff --git a/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java
index 4440bc9..f34042d 100644
--- a/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java
@@ -90,6 +90,7 @@
     private static final String PREFERENCE_NO_OPTIONS_DESC = "no_options_description";
     private static final String TEST_EMERGENCY_ADDRESS_CARRIER_APP =
             "com.android.settings/.wifi.calling.TestEmergencyAddressCarrierApp";
+    private static final String PREFERENCE_EMERGENCY_ADDRESS = "emergency_address_key";
 
     private TestFragment mFragment;
     private Context mContext;
@@ -138,6 +139,7 @@
         doReturn(mContext.getResources()).when(mFragment).getResources();
         doReturn(mPreferenceScreen).when(mFragment).getPreferenceScreen();
         doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId(anyInt());
+        doReturn(mock(LifecycleOwner.class)).when(mFragment).getViewLifecycleOwner();
         final Bundle bundle = new Bundle();
         when(mFragment.getArguments()).thenReturn(bundle);
         doNothing().when(mFragment).addPreferencesFromResource(anyInt());
@@ -380,19 +382,22 @@
 
         @Override
         public <T extends Preference> T findPreference(CharSequence key) {
-            if (SWITCH_BAR.equals(key)) {
+            if (SWITCH_BAR.contentEquals(key)) {
                 return (T) mSwitchPref;
             }
-            if (BUTTON_WFC_MODE.equals(key)) {
+            if (BUTTON_WFC_MODE.contentEquals(key)) {
                 return (T) mButtonWfcMode;
             }
-            if (BUTTON_WFC_ROAMING_MODE.equals(key)) {
+            if (BUTTON_WFC_ROAMING_MODE.contentEquals(key)) {
                 return (T) mButtonWfcRoamingMode;
             }
-            if (PREFERENCE_NO_OPTIONS_DESC.equals(key)) {
+            if (PREFERENCE_NO_OPTIONS_DESC.contentEquals(key)) {
                 return (T) mDescriptionView;
             }
-            return (T) mock(ListWithEntrySummaryPreference.class);
+            if (PREFERENCE_EMERGENCY_ADDRESS.contentEquals(key)) {
+                return (T) mUpdateAddress;
+            }
+            return null;
         }
 
         @Override
diff --git a/tests/spa_unit/src/com/android/settings/network/telephony/MmsMessagePreferenceControllerTest.kt b/tests/spa_unit/src/com/android/settings/network/telephony/MmsMessagePreferenceControllerTest.kt
index 4d53260..75c1913 100644
--- a/tests/spa_unit/src/com/android/settings/network/telephony/MmsMessagePreferenceControllerTest.kt
+++ b/tests/spa_unit/src/com/android/settings/network/telephony/MmsMessagePreferenceControllerTest.kt
@@ -17,6 +17,7 @@
 package com.android.settings.network.telephony
 
 import android.content.Context
+import android.telephony.CarrierConfigManager
 import android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID
 import android.telephony.TelephonyManager
 import android.telephony.data.ApnSetting
@@ -26,6 +27,7 @@
 import com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE
 import com.android.settings.network.telephony.MmsMessagePreferenceController.Companion.MmsMessageSearchItem
 import com.google.common.truth.Truth.assertThat
+import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.mockito.kotlin.doReturn
@@ -63,6 +65,21 @@
         getDefaultDataSubId = { defaultDataSubId },
     )
 
+    @Before
+    fun setUp() {
+        CarrierConfigRepository.resetForTest()
+        CarrierConfigRepository.setBooleanForTest(
+            subId = SUB_1_ID,
+            key = CarrierConfigManager.KEY_MMS_MMS_ENABLED_BOOL,
+            value = true,
+        )
+        CarrierConfigRepository.setBooleanForTest(
+            subId = SUB_2_ID,
+            key = CarrierConfigManager.KEY_MMS_MMS_ENABLED_BOOL,
+            value = true,
+        )
+    }
+
     @Test
     fun getAvailabilityStatus_invalidSubscription_unavailable() {
         controller.init(INVALID_SUBSCRIPTION_ID)
@@ -165,6 +182,27 @@
     }
 
     @Test
+    fun getAvailabilityStatus_carrierConfigEnabledMmsFalse_unavailable() {
+        defaultDataSubId = SUB_2_ID
+        mockTelephonyManager2.stub {
+            on { isDataEnabled } doReturn false
+            on {
+                isMobileDataPolicyEnabled(TelephonyManager.MOBILE_DATA_POLICY_AUTO_DATA_SWITCH)
+            } doReturn true
+        }
+        CarrierConfigRepository.setBooleanForTest(
+            subId = SUB_2_ID,
+            key = CarrierConfigManager.KEY_MMS_MMS_ENABLED_BOOL,
+            value = false,
+        )
+        controller.init(SUB_2_ID)
+
+        val availabilityStatus = controller.getAvailabilityStatus()
+
+        assertThat(availabilityStatus).isEqualTo(CONDITIONALLY_UNAVAILABLE)
+    }
+
+    @Test
     fun searchIsAvailable_notDefaultDataAndDataOnAndAutoDataSwitchOn_unavailable() {
         mockTelephonyManager1.stub {
             on { isDataEnabled } doReturn true
@@ -201,6 +239,27 @@
     }
 
     @Test
+    fun searchIsAvailable_carrierConfigEnabledMmsFalse_unavailable() {
+        defaultDataSubId = SUB_2_ID
+        mockTelephonyManager2.stub {
+            on { isDataEnabled } doReturn false
+            on {
+                isMobileDataPolicyEnabled(TelephonyManager.MOBILE_DATA_POLICY_AUTO_DATA_SWITCH)
+            } doReturn true
+        }
+        CarrierConfigRepository.setBooleanForTest(
+            subId = SUB_2_ID,
+            key = CarrierConfigManager.KEY_MMS_MMS_ENABLED_BOOL,
+            value = false,
+        )
+        controller.init(SUB_2_ID)
+
+        val availabilityStatus = controller.getAvailabilityStatus()
+
+        assertThat(availabilityStatus).isEqualTo(CONDITIONALLY_UNAVAILABLE)
+    }
+
+    @Test
     fun isChecked_whenMmsNotAlwaysAllowed_returnFalse() {
         mockTelephonyManager2.stub {
             on {
diff --git a/tests/unit/src/com/android/settings/security/SecurityDashboardActivityTest.java b/tests/unit/src/com/android/settings/security/SecurityDashboardActivityTest.java
index 0e51733..a3f82b5 100644
--- a/tests/unit/src/com/android/settings/security/SecurityDashboardActivityTest.java
+++ b/tests/unit/src/com/android/settings/security/SecurityDashboardActivityTest.java
@@ -31,6 +31,7 @@
 import android.content.Intent;
 import android.content.pm.PackageManager;
 
+import androidx.test.annotation.UiThreadTest;
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.platform.app.InstrumentationRegistry;
 
@@ -90,6 +91,7 @@
     }
 
     @Test
+    @UiThreadTest
     public void noAvailableAlternativeFragmentAvailable_defaultFragmentSet() {
         when(mSecuritySettingsFeatureProvider.hasAlternativeSecuritySettingsFragment())
                 .thenReturn(false);
@@ -99,6 +101,7 @@
     }
 
     @Test
+    @UiThreadTest
     public void alternativeFragmentAvailable_alternativeFragmentSet() {
         when(mSecuritySettingsFeatureProvider.hasAlternativeSecuritySettingsFragment())
                 .thenReturn(true);
@@ -110,6 +113,7 @@
     }
 
     @Test
+    @UiThreadTest
     public void noAvailableAlternativeFragmentAvailable_alternativeFragmentNotValid() {
         when(mSecuritySettingsFeatureProvider.hasAlternativeSecuritySettingsFragment())
                 .thenReturn(false);
@@ -118,6 +122,7 @@
     }
 
     @Test
+    @UiThreadTest
     public void alternativeFragmentAvailable_alternativeFragmentIsValid() {
         when(mSecuritySettingsFeatureProvider.hasAlternativeSecuritySettingsFragment())
                 .thenReturn(true);
@@ -128,6 +133,7 @@
     }
 
     @Test
+    @UiThreadTest
     public void onCreate_whenSafetyCenterEnabled_redirectsToSafetyCenter() {
         when(mSafetyCenterManagerWrapper.isEnabled(any(Context.class))).thenReturn(true);
         final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
@@ -139,6 +145,7 @@
     }
 
     @Test
+    @UiThreadTest
     public void onCreate_whenSafetyCenterDisabled_doesntRedirectToSafetyCenter() {
         when(mSafetyCenterManagerWrapper.isEnabled(any(Context.class))).thenReturn(false);