]> git.mdlowis.com Git - proto/labwc.git/commitdiff
input: use button mapping from configuration
authorJens Peters <jp7677@gmail.com>
Fri, 29 Dec 2023 09:06:59 +0000 (10:06 +0100)
committerJohan Malm <johanmalm@users.noreply.github.com>
Fri, 29 Dec 2023 20:22:46 +0000 (20:22 +0000)
Co-authored-by: Consolatis <35009135+Consolatis@users.noreply.github.com>
src/input/drawing_tablet.c

index 540642bcf0ca1812463a97495f45830f528a9591..37d05f2156119bb8f04d43872e0a6cb73247e50d 100644 (file)
@@ -11,8 +11,6 @@
 #include "input/cursor.h"
 #include "input/drawing_tablet.h"
 
-#include "config/rcxml.h"
-
 static void
 handle_axis(struct wl_listener *listener, void *data)
 {
@@ -33,14 +31,33 @@ handle_axis(struct wl_listener *listener, void *data)
        // Ignore other events
 }
 
+static uint32_t
+get_mapped_button(uint32_t src_button)
+{
+       struct button_map_entry *map_entry;
+       for (size_t i = 0; i < rc.tablet.button_map_count; i++) {
+               map_entry = &rc.tablet.button_map[i];
+               if (map_entry->from == src_button) {
+                       return map_entry->to;
+               }
+       }
+       wlr_log(WLR_DEBUG, "no button map target for 0x%x", src_button);
+       return 0;
+}
+
 static void
 handle_tip(struct wl_listener *listener, void *data)
 {
        struct wlr_tablet_tool_tip_event *ev = data;
        struct drawing_tablet *tablet = ev->tablet->data;
 
+       uint32_t button = get_mapped_button(BTN_TOOL_PEN);
+       if (!button) {
+               return;
+       }
+
        cursor_emulate_button(tablet->seat,
-               BTN_LEFT,
+               button,
                ev->state == WLR_TABLET_TOOL_TIP_DOWN
                        ? WLR_BUTTON_PRESSED
                        : WLR_BUTTON_RELEASED,
@@ -53,16 +70,8 @@ handle_button(struct wl_listener *listener, void *data)
        struct wlr_tablet_tool_button_event *ev = data;
        struct drawing_tablet *tablet = ev->tablet->data;
 
-       uint32_t button;
-       switch (ev->button) {
-       case BTN_STYLUS:
-               button = BTN_RIGHT;
-               break;
-       case BTN_STYLUS2:
-               button = BTN_MIDDLE;
-               break;
-       default:
-               wlr_log(WLR_DEBUG, "no button map target");
+       uint32_t button = get_mapped_button(ev->button);
+       if (!button) {
                return;
        }