]> git.mdlowis.com Git - proto/labwc.git/commitdiff
keyboard: do not set numlock by default
authorJohan Malm <jgm323@gmail.com>
Tue, 31 Dec 2024 15:25:31 +0000 (15:25 +0000)
committerJohan Malm <johanmalm@users.noreply.github.com>
Tue, 31 Dec 2024 16:23:47 +0000 (16:23 +0000)
Only force on|off if users specifically requests it in the config file.

Related-to: #2463
docs/labwc-config.5.scd
docs/rc.xml.all
include/config/rcxml.h
src/config/rcxml.c
src/input/keyboard.c

index 9bbf1082afa69078e7b80008dd9fd4ec0b90718e..95564083cf919d32ca14ea92aab46949a8ffcad4 100644 (file)
@@ -565,7 +565,7 @@ extending outward from the snapped edge.
 
 *<keyboard><numlock>* [on|off]
        When recognizing a new keyboard enable or disable Num Lock.
-       Default is off.
+       Default is unset.
 
 *<keyboard layoutScope="">* [global|window]
        Stores the keyboard layout either globally or per window and restores
index 216e93c5e2c4622e8894bad6771be97b9738f352..a4f628bad7112ddda6bec2ffb6b5604ff9b821ce 100644 (file)
     your favourite terminal or application launcher. See rc.xml for an example.
   -->
   <keyboard>
-    <numlock>off</numlock>
+    <!--
+      # Numlock is not set by default
+      <numlock>on|off</numlock>
+    -->
     <layoutScope>global</layoutScope>
     <repeatRate>25</repeatRate>
     <repeatDelay>600</repeatDelay>
index dd237fa4ef827ca7d5861d11566d1d018a59da74..c65d648440c21876869c526adb5f2c9b2352652e 100644 (file)
@@ -9,6 +9,7 @@
 #include "common/border.h"
 #include "common/buf.h"
 #include "common/font.h"
+#include "common/three-state.h"
 #include "config/touch.h"
 #include "config/tablet.h"
 #include "config/tablet-tool.h"
@@ -104,7 +105,7 @@ struct rcxml {
        /* keyboard */
        int repeat_rate;
        int repeat_delay;
-       bool kb_numlock_enable;
+       enum three_state kb_numlock_enable;
        bool kb_layout_per_window;
        struct wl_list keybinds;   /* struct keybind.link */
 
index f7d92e4c856fc2056f6037ee143c2d4f727c4fd0..cbb9eab692117cbaaa0a93236df631b9cb9eae41 100644 (file)
@@ -24,6 +24,7 @@
 #include "common/parse-bool.h"
 #include "common/parse-double.h"
 #include "common/string-helpers.h"
+#include "common/three-state.h"
 #include "config/default-bindings.h"
 #include "config/keybind.h"
 #include "config/libinput.h"
@@ -1150,7 +1151,10 @@ entry(xmlNode *node, char *nodename, char *content)
        } else if (!strcasecmp(nodename, "repeatDelay.keyboard")) {
                rc.repeat_delay = atoi(content);
        } else if (!strcasecmp(nodename, "numlock.keyboard")) {
-               set_bool(content, &rc.kb_numlock_enable);
+               bool value;
+               set_bool(content, &value);
+               rc.kb_numlock_enable = value ? LAB_STATE_ENABLED
+                       : LAB_STATE_DISABLED;
        } else if (!strcasecmp(nodename, "layoutScope.keyboard")) {
                /*
                 * This can be changed to an enum later on
@@ -1497,7 +1501,7 @@ rcxml_init(void)
 
        rc.repeat_rate = 25;
        rc.repeat_delay = 600;
-       rc.kb_numlock_enable = false;
+       rc.kb_numlock_enable = LAB_STATE_UNSPECIFIED;
        rc.kb_layout_per_window = false;
        rc.screen_edge_strength = 20;
        rc.window_edge_strength = 20;
index 5931fb37dd10eb1fcda5616fea8f70dfe132b6d6..4926723340274af3dcd7efac37bfc530691af080 100644 (file)
@@ -6,6 +6,7 @@
 #include <wlr/backend/session.h>
 #include <wlr/interfaces/wlr_keyboard.h>
 #include "action.h"
+#include "common/three-state.h"
 #include "idle.h"
 #include "input/ime.h"
 #include "input/keyboard.h"
@@ -672,6 +673,10 @@ keyboard_key_notify(struct wl_listener *listener, void *data)
 void
 keyboard_set_numlock(struct wlr_keyboard *keyboard)
 {
+       if (rc.kb_numlock_enable == LAB_STATE_UNSPECIFIED) {
+               return;
+       }
+
        xkb_mod_index_t num_idx =
                xkb_map_mod_get_index(keyboard->keymap, XKB_MOD_NAME_NUM);
        if (num_idx == XKB_MOD_INVALID) {
@@ -680,9 +685,9 @@ keyboard_set_numlock(struct wlr_keyboard *keyboard)
        }
 
        xkb_mod_mask_t locked = keyboard->modifiers.locked;
-       if (rc.kb_numlock_enable) {
+       if (rc.kb_numlock_enable == LAB_STATE_ENABLED) {
                locked |= (xkb_mod_mask_t)1 << num_idx;
-       } else {
+       } else if (rc.kb_numlock_enable == LAB_STATE_DISABLED) {
                locked &= ~((xkb_mod_mask_t)1 << num_idx);
        }