mirror of
https://github.com/labwc/labwc.git
synced 2025-11-02 09:01:47 -05:00
input: use button mapping from configuration
Co-authored-by: Consolatis <35009135+Consolatis@users.noreply.github.com>
This commit is contained in:
parent
567b81ea10
commit
5a93aa3a78
1 changed files with 22 additions and 13 deletions
|
|
@ -11,8 +11,6 @@
|
||||||
#include "input/cursor.h"
|
#include "input/cursor.h"
|
||||||
#include "input/drawing_tablet.h"
|
#include "input/drawing_tablet.h"
|
||||||
|
|
||||||
#include "config/rcxml.h"
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
handle_axis(struct wl_listener *listener, void *data)
|
handle_axis(struct wl_listener *listener, void *data)
|
||||||
{
|
{
|
||||||
|
|
@ -33,14 +31,33 @@ handle_axis(struct wl_listener *listener, void *data)
|
||||||
// Ignore other events
|
// 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
|
static void
|
||||||
handle_tip(struct wl_listener *listener, void *data)
|
handle_tip(struct wl_listener *listener, void *data)
|
||||||
{
|
{
|
||||||
struct wlr_tablet_tool_tip_event *ev = data;
|
struct wlr_tablet_tool_tip_event *ev = data;
|
||||||
struct drawing_tablet *tablet = ev->tablet->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,
|
cursor_emulate_button(tablet->seat,
|
||||||
BTN_LEFT,
|
button,
|
||||||
ev->state == WLR_TABLET_TOOL_TIP_DOWN
|
ev->state == WLR_TABLET_TOOL_TIP_DOWN
|
||||||
? WLR_BUTTON_PRESSED
|
? WLR_BUTTON_PRESSED
|
||||||
: WLR_BUTTON_RELEASED,
|
: WLR_BUTTON_RELEASED,
|
||||||
|
|
@ -53,16 +70,8 @@ handle_button(struct wl_listener *listener, void *data)
|
||||||
struct wlr_tablet_tool_button_event *ev = data;
|
struct wlr_tablet_tool_button_event *ev = data;
|
||||||
struct drawing_tablet *tablet = ev->tablet->data;
|
struct drawing_tablet *tablet = ev->tablet->data;
|
||||||
|
|
||||||
uint32_t button;
|
uint32_t button = get_mapped_button(ev->button);
|
||||||
switch (ev->button) {
|
if (!button) {
|
||||||
case BTN_STYLUS:
|
|
||||||
button = BTN_RIGHT;
|
|
||||||
break;
|
|
||||||
case BTN_STYLUS2:
|
|
||||||
button = BTN_MIDDLE;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
wlr_log(WLR_DEBUG, "no button map target");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue