diff --git a/clients/calibrator.c b/clients/calibrator.c
index 04c1cfc..778c23c 100644
--- a/clients/calibrator.c
+++ b/clients/calibrator.c
@@ -24,12 +24,14 @@
 #include "config.h"
 
 #include <stdint.h>
+#include <stdbool.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <cairo.h>
 #include <math.h>
 #include <assert.h>
+#include <getopt.h>
 
 #include <linux/input.h>
 #include <wayland-client.h>
@@ -218,7 +220,7 @@
 }
 
 static struct calibrator *
-calibrator_create(struct display *display)
+calibrator_create(struct display *display, bool enable_button)
 {
 	struct calibrator *calibrator;
 
@@ -233,7 +235,8 @@
 
 	calibrator->current_test = ARRAY_LENGTH(test_ratios) - 1;
 
-	widget_set_button_handler(calibrator->widget, button_handler);
+	if (enable_button)
+		widget_set_button_handler(calibrator->widget, button_handler);
 	widget_set_touch_down_handler(calibrator->widget, touch_handler);
 	widget_set_redraw_handler(calibrator->widget, redraw_handler);
 
@@ -250,13 +253,40 @@
 	free(calibrator);
 }
 
+static void
+help(const char *name)
+{
+	fprintf(stderr, "Usage: %s [args...]\n", name);
+	fprintf(stderr, "  -m, --enable-mouse       Enable mouse for testing the touchscreen\n");
+	fprintf(stderr, "  -h, --help      Display this help message\n");
+}
 
 int
 main(int argc, char *argv[])
 {
 	struct display *display;
 	struct calibrator *calibrator;
+	int c;
+	bool enable_mouse = 0;
+	struct option opts[] = {
+		{ "enable-mouse",     no_argument, NULL, 'm' },
+		{ "help",    no_argument,       NULL, 'h' },
+		{ 0,         0,                 NULL,  0  }
+	};
 
+	while ((c = getopt_long(argc, argv, "mh", opts, NULL)) != -1) {
+		switch (c) {
+		case 'm':
+			enable_mouse = 1;
+			break;
+		case 'h':
+			help(argv[0]);
+			exit(EXIT_FAILURE);
+		default:
+			break;
+		}
+	}
+	
 	display = display_create(&argc, argv);
 
 	if (display == NULL) {
@@ -264,7 +294,7 @@
 		return -1;
 	}
 
-	calibrator = calibrator_create(display);
+	calibrator = calibrator_create(display, enable_mouse);
 
 	if (!calibrator)
 		return -1;
