Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Register
  • Sign in
  • G gnome-settings-daemon
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 319
    • Issues 319
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 43
    • Merge requests 43
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Container Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • GNOMEGNOME
  • gnome-settings-daemon
  • Issues
  • #41
Closed
Open
Issue created May 03, 2018 by Jian-Hong Pan@starnightContributor

Keyboard backlight level toggles to wrong state

Some laptops like ASUS UX550GE has a hotkey (Fn+F7) for keyboard backlight toggle. In this UX550GE, the hotkey not only switches on/off the keyboard backlight, it also increments the level of brightness from 1 to max 3. In this case, it will trigger the keyboard backlight StepUp and Toggle events and execute the handle_method_call_keyboard function of gsd_power_manager.c in GNOME settings daemon when the hotkey is pressed.

The ideal scenario of pressing hotkey should trigger the events like:

... StepUp -> Toggle -> StepUp -> StepUp -> StepUp -> Toggle -> StepUp ...

However, we noticed the actual processes are:

... StepUp -> Toggle -> Toggle -> StepUp -> StepUp -> StepUp -> Toggle ...

It triggers Toggle event two times between StepUp events.

Here are the added debug messages to check the procedure.

--- plugins/power/gsd-power-manager.c	2018-03-01 03:00:25.000000000 +0800
+++ ../gsd-power-manager.c.debug	2018-04-23 13:23:30.227428568 +0800
@@ -1177,6 +1177,8 @@
 
         if (manager->priv->kbd_brightness_old >= 0) {
                 g_debug ("keyboard toggle off");
+                g_warning("%s: keyboard toggle off kbd_brightness_old: %d, kbd_brightness_now: %d\n",
+                          __func__, manager->priv->kbd_brightness_old, manager->priv->kbd_brightness_now);
                 ret = upower_kbd_set_brightness (manager,
                                                  manager->priv->kbd_brightness_old,
                                                  error);
@@ -1187,6 +1189,8 @@
                 }
         } else {
                 g_debug ("keyboard toggle on");
+                g_warning("%s: keyboard toggle on kbd_brightness_old: %d, kbd_brightness_now: %d\n",
+                          __func__, manager->priv->kbd_brightness_old, manager->priv->kbd_brightness_now);
                 /* save the current value to restore later when untoggling */
                 manager->priv->kbd_brightness_old = manager->priv->kbd_brightness_now;
                 ret = upower_kbd_set_brightness (manager, 0, error);
@@ -1387,6 +1391,7 @@
         if (manager->priv->connection == NULL)
                 return;
 
+        g_warning("%s, set properties\n", __func__);
         params = g_variant_new_parsed ("(%s, [{'Brightness', <%i>}], @as [])", interface_name,
                                        value);
         g_dbus_connection_emit_signal (manager->priv->connection,
@@ -1399,6 +1404,7 @@
         if (!source)
                 return;
 
+        g_warning("%s: %s value: %d\n", __func__, GSD_POWER_DBUS_INTERFACE_KEYBOARD, value);
         g_dbus_connection_emit_signal (manager->priv->connection,
                                        NULL,
                                        GSD_POWER_DBUS_PATH,
@@ -2829,21 +2835,29 @@
         guint percentage;
         GError *error = NULL;
 
+        g_warning("%s: method_name: %s, kbd_max_brightness:%d\n",
+                  __func__, method_name, manager->priv->kbd_brightness_max);
         if (g_strcmp0 (method_name, "StepUp") == 0) {
                 g_debug ("keyboard step up");
                 step = BRIGHTNESS_STEP_AMOUNT (manager->priv->kbd_brightness_max);
                 value = MIN (manager->priv->kbd_brightness_now + step,
                              manager->priv->kbd_brightness_max);
+                g_warning("\tkbd_brightness now: %d, new value: %d\n",
+                          manager->priv->kbd_brightness_now, value);
                 ret = upower_kbd_set_brightness (manager, value, &error);
 
         } else if (g_strcmp0 (method_name, "StepDown") == 0) {
                 g_debug ("keyboard step down");
                 step = BRIGHTNESS_STEP_AMOUNT (manager->priv->kbd_brightness_max);
                 value = MAX (manager->priv->kbd_brightness_now - step, 0);
+                g_warning("\tkbd_brightness now: %d, new value: %d\n",
+                          manager->priv->kbd_brightness_now, value);
                 ret = upower_kbd_set_brightness (manager, value, &error);
 
         } else if (g_strcmp0 (method_name, "Toggle") == 0) {
                 value = upower_kbd_toggle (manager, &error);
+                g_warning("\tkbd_brightness now: %d, new value: %d\n",
+                          manager->priv->kbd_brightness_now, value);
                 ret = (value >= 0);
 
         } else {

After rebuild and reboot, press the keyboard back light setting keys and investigate journal.

Apr 23 11:40:02 endless gsd-power[1586]: handle_method_call_keyboard: method_name: StepUp, kbd_max_brightness:3
Apr 23 11:40:02 endless gsd-power[1586]:         kbd_brightness now: 2, new value: 3
Apr 23 11:40:02 endless gsd-power[1586]: backlight_iface_emit_changed, set properties
Apr 23 11:40:02 endless gsd-power[1586]: backlight_iface_emit_changed: org.gnome.SettingsDaemon.Power.Keyboard value: 100
Apr 23 11:40:02 endless gsd-power[1586]: handle_method_call_keyboard: method_name: Toggle, kbd_max_brightness:3
Apr 23 11:40:02 endless gsd-power[1586]: upower_kbd_toggle: keyboard toggle off kbd_brightness_old: 3, kbd_brightness_now: 3
Apr 23 11:40:02 endless gsd-power[1586]:         kbd_brightness now: 3, new value: 0
Apr 23 11:40:02 endless gsd-power[1586]: backlight_iface_emit_changed, set properties
Apr 23 11:40:02 endless gsd-power[1586]: backlight_iface_emit_changed: org.gnome.SettingsDaemon.Power.Keyboard value: 0
Apr 23 11:40:03 endless gsd-power[1586]: handle_method_call_keyboard: method_name: Toggle, kbd_max_brightness:3
Apr 23 11:40:03 endless gsd-power[1586]: upower_kbd_toggle: keyboard toggle on kbd_brightness_old: -1, kbd_brightness_now: 3
Apr 23 11:40:03 endless gsd-power[1586]:         kbd_brightness now: 0, new value: 0
Apr 23 11:40:03 endless gsd-power[1586]: backlight_iface_emit_changed, set properties
Apr 23 11:40:03 endless gsd-power[1586]: backlight_iface_emit_changed: org.gnome.SettingsDaemon.Power.Keyboard value: 0
Apr 23 11:40:04 endless gsd-power[1586]: handle_method_call_keyboard: method_name: StepUp, kbd_max_brightness:3
Apr 23 11:40:04 endless gsd-power[1586]:         kbd_brightness now: 0, new value: 1
Apr 23 11:40:04 endless gsd-power[1586]: backlight_iface_emit_changed, set properties
Apr 23 11:40:04 endless gsd-power[1586]: backlight_iface_emit_changed: org.gnome.SettingsDaemon.Power.Keyboard value: 33
Apr 23 11:40:05 endless gsd-power[1586]: handle_method_call_keyboard: method_name: StepUp, kbd_max_brightness:3
Apr 23 11:40:05 endless gsd-power[1586]:         kbd_brightness now: 1, new value: 2
Apr 23 11:40:05 endless gsd-power[1586]: backlight_iface_emit_changed, set properties
Apr 23 11:40:05 endless gsd-power[1586]: backlight_iface_emit_changed: org.gnome.SettingsDaemon.Power.Keyboard value: 66
Apr 23 11:40:05 endless gsd-power[1586]: handle_method_call_keyboard: method_name: StepUp, kbd_max_brightness:3
Apr 23 11:40:05 endless gsd-power[1586]:         kbd_brightness now: 2, new value: 3
Apr 23 11:40:05 endless gsd-power[1586]: backlight_iface_emit_changed, set properties
Apr 23 11:40:05 endless gsd-power[1586]: backlight_iface_emit_changed: org.gnome.SettingsDaemon.Power.Keyboard value: 100
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking