summaryrefslogtreecommitdiff
path: root/setup/mouse.c
diff options
context:
space:
mode:
Diffstat (limited to 'setup/mouse.c')
-rw-r--r--setup/mouse.c60
1 files changed, 49 insertions, 11 deletions
diff --git a/setup/mouse.c b/setup/mouse.c
index c2d7e155..bafccc87 100644
--- a/setup/mouse.c
+++ b/setup/mouse.c
@@ -39,9 +39,22 @@ int grabmouse = 1;
int mousebfire = 0;
int mousebforward = 1;
int mousebstrafe = 2;
-
-static int *all_mouse_buttons[] = {&mousebfire, &mousebstrafe,
- &mousebforward};
+int mousebstrafeleft = -1;
+int mousebstraferight = -1;
+int mousebbackward = -1;
+int mousebuse = -1;
+
+int dclick_use = 1;
+
+static int *all_mouse_buttons[] = {
+ &mousebfire,
+ &mousebstrafe,
+ &mousebforward,
+ &mousebstrafeleft,
+ &mousebstraferight,
+ &mousebbackward,
+ &mousebuse,
+};
static void MouseSetCallback(TXT_UNCAST_ARG(widget), TXT_UNCAST_ARG(variable))
{
@@ -73,11 +86,31 @@ static void AddMouseControl(txt_table_t *table, char *label, int *var)
TXT_SignalConnect(mouse_input, "set", MouseSetCallback, var);
}
+static void ConfigExtraButtons(void)
+{
+ txt_window_t *window;
+ txt_table_t *buttons_table;
+
+ window = TXT_NewWindow("Additional mouse buttons");
+
+ TXT_AddWidgets(window,
+ buttons_table = TXT_NewTable(2),
+ NULL);
+
+ TXT_SetColumnWidths(buttons_table, 29, 5);
+
+ AddMouseControl(buttons_table, "Move backward", &mousebbackward);
+ AddMouseControl(buttons_table, "Use", &mousebuse);
+ AddMouseControl(buttons_table, "Strafe left", &mousebstrafeleft);
+ AddMouseControl(buttons_table, "Strafe right", &mousebstraferight);
+}
+
void ConfigMouse(void)
{
txt_window_t *window;
txt_table_t *motion_table;
- txt_table_t *button_table;
+ txt_table_t *buttons_table;
+ txt_button_t *more_buttons;
window = TXT_NewWindow("Mouse configuration");
@@ -86,14 +119,17 @@ void ConfigMouse(void)
TXT_NewInvertedCheckBox("Allow vertical mouse movement",
&novert),
TXT_NewCheckBox("Grab mouse in windowed mode",
- &grabmouse),
+ &grabmouse),
+ TXT_NewCheckBox("Double click acts as \"use\"",
+ &dclick_use),
TXT_NewSeparator("Mouse motion"),
motion_table = TXT_NewTable(2),
- TXT_NewSeparator("Mouse buttons"),
+ TXT_NewSeparator("Buttons"),
+ buttons_table = TXT_NewTable(2),
+ more_buttons = TXT_NewButton("More buttons..."),
- button_table = TXT_NewTable(2),
NULL);
TXT_SetColumnWidths(motion_table, 27, 5);
@@ -107,12 +143,14 @@ void ConfigMouse(void)
TXT_NewSpinControl(&mouse_threshold, 0, 32),
NULL);
- TXT_SetColumnWidths(button_table, 27, 5);
+ TXT_SetColumnWidths(buttons_table, 27, 5);
- AddMouseControl(button_table, "Fire weapon", &mousebfire);
- AddMouseControl(button_table, "Move forward", &mousebforward);
- AddMouseControl(button_table, "Strafe on", &mousebstrafe);
+ AddMouseControl(buttons_table, "Move forward", &mousebforward);
+ AddMouseControl(buttons_table, "Strafe on", &mousebstrafe);
+ AddMouseControl(buttons_table, "Fire weapon", &mousebfire);
TXT_SetWindowAction(window, TXT_HORIZ_CENTER, TestConfigAction());
+
+ TXT_SignalConnect(more_buttons, "pressed", ConfigExtraButtons, NULL);
}