summary refs log tree commit diff
path: root/quantum/mousekey.h
diff options
context:
space:
mode:
authorJoel Challis <git@zvecr.com>2021-02-07 13:56:08 +0000
committerGitHub <noreply@github.com>2021-02-07 13:56:08 +0000
commit02881427692b682287d19fe533c3b84aa7b42a26 (patch)
treeb64dfc778cf652a04b337f8067dac1cd2a1cfe05 /quantum/mousekey.h
parent0c44aa950334a4956dbe1d3f1e4830c13eb38b45 (diff)
Migrate mousekey to quantum (#11804)
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