@@ 15,6 15,7 @@
*/
#include QMK_KEYBOARD_H
+#include "mousekey.h"
enum plaid_layers {
@@ 25,9 26,13 @@ enum plaid_layers {
};
enum plaid_keycodes {
- QWERTY = SAFE_RANGE
+ AUTOCLICK = SAFE_RANGE
};
+static bool autoclick = false;
+static bool autoclick_state = false;
+static uint16_t autoclick_timer = 0;
+
#define XMONAD LM(_XMONAD, MOD_LGUI)
#define SPC_LWR LT(_LOWER, KC_SPACE)
#define ENT_RSE LT(_RAISE, KC_ENT)
@@ 89,7 94,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
_______, _______, MU_MOD, AU_ON, AU_OFF, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, RESET,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF,_______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, AUTOCLICK
)
};
@@ 167,6 172,16 @@ void matrix_scan_user(void) {
break;
}
}
+ if (autoclick && timer_elapsed(autoclick_timer) > (autoclick_state ? 20 : 100)) {
+ if (!autoclick_state) {
+ mousekey_on(KC_MS_BTN1);
+ } else {
+ mousekey_off(KC_MS_BTN1);
+ }
+ mousekey_send();
+ autoclick_state = !autoclick_state;
+ autoclick_timer = timer_read();
+ }
}
layer_state_t layer_state_set_user(layer_state_t state) {
@@ 186,3 201,15 @@ layer_state_t layer_state_set_user(layer_state_t state) {
}
return state;
}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case AUTOCLICK:
+ if (record->event.pressed) {
+ autoclick = !autoclick;
+ autoclick_timer = timer_read();
+ }
+ break;
+ }
+ return true;
+};