summaryrefslogtreecommitdiffstats
path: root/quantum/mousekey.h
diff options
context:
space:
mode:
Diffstat (limited to 'quantum/mousekey.h')
-rw-r--r--quantum/mousekey.h179
1 files changed, 179 insertions, 0 deletions
diff --git a/quantum/mousekey.h b/quantum/mousekey.h
new file mode 100644
index 0000000000..70dc4bb5c5
--- /dev/null
+++ b/quantum/mousekey.h
@@ -0,0 +1,179 @@
+/*
+Copyright 2011 Jun Wako <wakojun@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include <stdint.h>
+#include "host.h"
+
+#ifndef MK_3_SPEED
+
+/* max value on report descriptor */
+# ifndef MOUSEKEY_MOVE_MAX
+# define MOUSEKEY_MOVE_MAX 127
+# elif MOUSEKEY_MOVE_MAX > 127
+# error MOUSEKEY_MOVE_MAX needs to be smaller than 127
+# endif
+
+# ifndef MOUSEKEY_WHEEL_MAX
+# define MOUSEKEY_WHEEL_MAX 127
+# elif MOUSEKEY_WHEEL_MAX > 127
+# error MOUSEKEY_WHEEL_MAX needs to be smaller than 127
+# endif
+
+# ifndef MOUSEKEY_MOVE_DELTA
+# ifndef MK_KINETIC_SPEED
+# define MOUSEKEY_MOVE_DELTA 5
+# else
+# define MOUSEKEY_MOVE_DELTA 25
+# endif
+# endif
+# ifndef MOUSEKEY_WHEEL_DELTA
+# define MOUSEKEY_WHEEL_DELTA 1
+# endif
+# ifndef MOUSEKEY_DELAY
+# ifndef MK_KINETIC_SPEED
+# define MOUSEKEY_DELAY 300
+# else
+# define MOUSEKEY_DELAY 8
+# endif
+# endif
+# ifndef MOUSEKEY_INTERVAL
+# ifndef MK_KINETIC_SPEED
+# define MOUSEKEY_INTERVAL 50
+# else
+# define MOUSEKEY_INTERVAL 8
+# endif
+# endif
+# ifndef MOUSEKEY_MAX_SPEED
+# define MOUSEKEY_MAX_SPEED 10
+# endif
+# ifndef MOUSEKEY_TIME_TO_MAX
+# define MOUSEKEY_TIME_TO_MAX 20
+# endif
+# ifndef MOUSEKEY_WHEEL_DELAY
+# define MOUSEKEY_WHEEL_DELAY 300
+# endif
+# ifndef MOUSEKEY_WHEEL_INTERVAL
+# define MOUSEKEY_WHEEL_INTERVAL 100
+# endif
+# ifndef MOUSEKEY_WHEEL_MAX_SPEED
+# define MOUSEKEY_WHEEL_MAX_SPEED 8
+# endif
+# ifndef MOUSEKEY_WHEEL_TIME_TO_MAX
+# define MOUSEKEY_WHEEL_TIME_TO_MAX 40
+# endif
+
+# ifndef MOUSEKEY_INITIAL_SPEED
+# define MOUSEKEY_INITIAL_SPEED 100
+# endif
+# ifndef MOUSEKEY_BASE_SPEED
+# define MOUSEKEY_BASE_SPEED 1000
+# endif
+# ifndef MOUSEKEY_DECELERATED_SPEED
+# define MOUSEKEY_DECELERATED_SPEED 400
+# endif
+# ifndef MOUSEKEY_ACCELERATED_SPEED
+# define MOUSEKEY_ACCELERATED_SPEED 3000
+# endif
+# ifndef MOUSEKEY_WHEEL_INITIAL_MOVEMENTS
+# define MOUSEKEY_WHEEL_INITIAL_MOVEMENTS 16
+# endif
+# ifndef MOUSEKEY_WHEEL_BASE_MOVEMENTS
+# define MOUSEKEY_WHEEL_BASE_MOVEMENTS 32
+# endif
+# ifndef MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS
+# define MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS 48
+# endif
+# ifndef MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS
+# define MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS 8
+# endif
+
+#else /* #ifndef MK_3_SPEED */
+
+# ifndef MK_C_OFFSET_UNMOD
+# define MK_C_OFFSET_UNMOD 16
+# endif
+# ifndef MK_C_INTERVAL_UNMOD
+# define MK_C_INTERVAL_UNMOD 16
+# endif
+# ifndef MK_C_OFFSET_0
+# define MK_C_OFFSET_0 1
+# endif
+# ifndef MK_C_INTERVAL_0
+# define MK_C_INTERVAL_0 32
+# endif
+# ifndef MK_C_OFFSET_1
+# define MK_C_OFFSET_1 4
+# endif
+# ifndef MK_C_INTERVAL_1
+# define MK_C_INTERVAL_1 16
+# endif
+# ifndef MK_C_OFFSET_2
+# define MK_C_OFFSET_2 32
+# endif
+# ifndef MK_C_INTERVAL_2
+# define MK_C_INTERVAL_2 16
+# endif
+
+# ifndef MK_W_OFFSET_UNMOD
+# define MK_W_OFFSET_UNMOD 1
+# endif
+# ifndef MK_W_INTERVAL_UNMOD
+# define MK_W_INTERVAL_UNMOD 40
+# endif
+# ifndef MK_W_OFFSET_0
+# define MK_W_OFFSET_0 1
+# endif
+# ifndef MK_W_INTERVAL_0
+# define MK_W_INTERVAL_0 360
+# endif
+# ifndef MK_W_OFFSET_1
+# define MK_W_OFFSET_1 1
+# endif
+# ifndef MK_W_INTERVAL_1
+# define MK_W_INTERVAL_1 120
+# endif
+# ifndef MK_W_OFFSET_2
+# define MK_W_OFFSET_2 1
+# endif
+# ifndef MK_W_INTERVAL_2
+# define MK_W_INTERVAL_2 20
+# endif
+
+#endif /* #ifndef MK_3_SPEED */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern uint8_t mk_delay;
+extern uint8_t mk_interval;
+extern uint8_t mk_max_speed;
+extern uint8_t mk_time_to_max;
+extern uint8_t mk_wheel_max_speed;
+extern uint8_t mk_wheel_time_to_max;
+
+void mousekey_task(void);
+void mousekey_on(uint8_t code);
+void mousekey_off(uint8_t code);
+void mousekey_clear(void);
+void mousekey_send(void);
+
+#ifdef __cplusplus
+}
+#endif