aboutsummaryrefslogtreecommitdiffstats
path: root/sway
diff options
context:
space:
mode:
authorLibravatar Brian Ashworth <bosrsf04@gmail.com>2019-01-10 12:45:52 -0500
committerLibravatar Brian Ashworth <bosrsf04@gmail.com>2019-01-10 12:45:52 -0500
commit4e6bd53abf900020bbc38ceddb7b7505be4fb96d (patch)
treebe52327cbf9f415527143cfe36597f52fa0f9f63 /sway
parentMerge pull request #3400 from ianyfan/config-brace (diff)
downloadsway-4e6bd53abf900020bbc38ceddb7b7505be4fb96d.tar.gz
sway-4e6bd53abf900020bbc38ceddb7b7505be4fb96d.tar.zst
sway-4e6bd53abf900020bbc38ceddb7b7505be4fb96d.zip
input_cmd_scroll_button: utilize mouse btn helpers
This modifies `input_cmd_scroll_button` to utilize the mouse button helper `get_mouse_button` when parsing the button. x11 axis buttons are not supported with this command and `CMD_INVALID` will be returned, but all other x11 buttons, button event names, and button event codes should be working
Diffstat (limited to 'sway')
-rw-r--r--sway/commands/input/scroll_button.c34
-rw-r--r--sway/input/cursor.c2
-rw-r--r--sway/sway-input.5.scd9
3 files changed, 24 insertions, 21 deletions
diff --git a/sway/commands/input/scroll_button.c b/sway/commands/input/scroll_button.c
index 1958f23c..d82a1fe1 100644
--- a/sway/commands/input/scroll_button.c
+++ b/sway/commands/input/scroll_button.c
@@ -1,9 +1,7 @@
1#include <string.h> 1#include <libevdev/libevdev.h>
2#include <strings.h>
3#include <errno.h>
4#include "sway/config.h" 2#include "sway/config.h"
5#include "sway/commands.h" 3#include "sway/commands.h"
6#include "sway/input/input-manager.h" 4#include "sway/input/cursor.h"
7 5
8struct cmd_results *input_cmd_scroll_button(int argc, char **argv) { 6struct cmd_results *input_cmd_scroll_button(int argc, char **argv) {
9 struct cmd_results *error = NULL; 7 struct cmd_results *error = NULL;
@@ -16,22 +14,26 @@ struct cmd_results *input_cmd_scroll_button(int argc, char **argv) {
16 "No input device defined."); 14 "No input device defined.");
17 } 15 }
18 16
19 errno = 0; 17 if (strcmp(*argv, "disable") == 0) {
20 char *endptr; 18 ic->scroll_button = 0;
21 int scroll_button = strtol(*argv, &endptr, 10); 19 return cmd_results_new(CMD_SUCCESS, NULL, NULL);
22 if (endptr == *argv && scroll_button == 0) {
23 return cmd_results_new(CMD_INVALID, "scroll_button",
24 "Scroll button identifier must be an integer.");
25 } 20 }
26 if (errno == ERANGE) { 21
22 char *message = NULL;
23 uint32_t button = get_mouse_button(*argv, &message);
24 if (message) {
25 error = cmd_results_new(CMD_INVALID, "scroll_button", message);
26 free(message);
27 return error;
28 } else if (button == SWAY_SCROLL_UP || button == SWAY_SCROLL_DOWN
29 || button == SWAY_SCROLL_LEFT || button == SWAY_SCROLL_RIGHT) {
27 return cmd_results_new(CMD_INVALID, "scroll_button", 30 return cmd_results_new(CMD_INVALID, "scroll_button",
28 "Scroll button identifier out of range."); 31 "X11 axis buttons are not supported for scroll_button");
29 } 32 } else if (!button) {
30 if (scroll_button < 0) {
31 return cmd_results_new(CMD_INVALID, "scroll_button", 33 return cmd_results_new(CMD_INVALID, "scroll_button",
32 "Scroll button identifier cannot be negative."); 34 "Unknown button %s", *argv);
33 } 35 }
34 ic->scroll_button = scroll_button; 36 ic->scroll_button = button;
35 37
36 return cmd_results_new(CMD_SUCCESS, NULL, NULL); 38 return cmd_results_new(CMD_SUCCESS, NULL, NULL);
37} 39}
diff --git a/sway/input/cursor.c b/sway/input/cursor.c
index 9af7ef57..a69cccb4 100644
--- a/sway/input/cursor.c
+++ b/sway/input/cursor.c
@@ -1593,7 +1593,7 @@ uint32_t get_mouse_bindcode(const char *name, char **error) {
1593 1593
1594uint32_t get_mouse_button(const char *name, char **error) { 1594uint32_t get_mouse_button(const char *name, char **error) {
1595 uint32_t button = get_mouse_bindsym(name, error); 1595 uint32_t button = get_mouse_bindsym(name, error);
1596 if (!button && !error) { 1596 if (!button && !*error) {
1597 button = get_mouse_bindcode(name, error); 1597 button = get_mouse_bindcode(name, error);
1598 } 1598 }
1599 return button; 1599 return button;
diff --git a/sway/sway-input.5.scd b/sway/sway-input.5.scd
index 820194a9..1b2255b8 100644
--- a/sway/sway-input.5.scd
+++ b/sway/sway-input.5.scd
@@ -105,10 +105,11 @@ The following commands may only be used in the configuration file.
105*input* <identifier> repeat\_rate <characters per second> 105*input* <identifier> repeat\_rate <characters per second>
106 Sets the frequency of key repeats once the repeat\_delay has passed. 106 Sets the frequency of key repeats once the repeat\_delay has passed.
107 107
108*input* <identifier> scroll\_button <button\_identifier> 108*input* <identifier> scroll\_button disable|button[1-3,8,9]|<event-code-or-name>
109 Sets button used for scroll\_method on\_button\_down. The button identifier 109 Sets the button used for scroll\_method on\_button\_down. The button can
110 can be obtained from `libinput debug-events`. 110 be given as an event name or code, which can be obtained from `libinput
111 If set to 0, it disables the scroll\_button on\_button\_down. 111 debug-events`, or as a x11 mouse button (button[1-3,8,9]). If set to
112 _disable_, it disables the scroll\_method on\_button\_down.
112 113
113*input* <identifier> scroll\_factor <floating point value> 114*input* <identifier> scroll\_factor <floating point value>
114 Changes the scroll factor for the specified input device. Scroll speed will 115 Changes the scroll factor for the specified input device. Scroll speed will