@@ -12,12 +12,16 @@ public class Gala.OSKManager : Object {
1212 private const string OSK_BUS_NAME = " io.elementary.OSK" ;
1313 private const string OSK_OBJECT_PATH = " /io/elementary/OSK" ;
1414
15+ private const string OSK_SETTINGS_KEY = " screen-keyboard-enabled" ;
16+
1517 public Meta . Display display { private get ; construct; }
1618 public InputMethod im { private get ; construct; }
1719
1820 public int monitor { get ; private set ; default = 0 ; }
1921 public bool visible { get ; private set ; default = false ; }
2022
23+ private static Settings settings = new Settings (" org.gnome.desktop.a11y.applications" );
24+
2125 private OSKProxy ? osk;
2226 private OSKReceiver ? receiver;
2327
@@ -28,6 +32,9 @@ public class Gala.OSKManager : Object {
2832 }
2933
3034 construct {
35+ settings. changed[OSK_SETTINGS_KEY ]. connect (sync_enabled);
36+ Clutter . get_default_backend (). get_default_seat (). notify[" touch-mode" ]. connect (sync_enabled);
37+
3138 Bus . watch_name (SESSION , OSK_BUS_NAME , NONE , () = > osk_appeared. begin (), osk_lost);
3239
3340 im. input_panel_state. connect (on_input_panel_state_changed);
@@ -54,7 +61,10 @@ public class Gala.OSKManager : Object {
5461 }
5562
5663 private void sync_enabled () {
57- enabled = true ;
64+ var manually_enabled = settings. get_boolean (OSK_SETTINGS_KEY );
65+ var auto_enabled = Clutter . get_default_backend (). get_default_seat (). touch_mode;
66+
67+ enabled = manually_enabled || auto_enabled;
5868
5969 if (osk != null ) {
6070 osk. set_enabled. begin (enabled);
0 commit comments