summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xbuild.sh85
-rw-r--r--package.nix22
-rw-r--r--src/config.h46
-rw-r--r--src/keymap.c477
-rw-r--r--src/rules.mk2
5 files changed, 348 insertions, 284 deletions
diff --git a/build.sh b/build.sh
deleted file mode 100755
index 51ecb7a..0000000
--- a/build.sh
+++ /dev/null
@@ -1,85 +0,0 @@
-#!/usr/bin/env sh
-
-set -e
-
-# Moonlander Layout
-#
-# Copyright (C) 2024 Benedikt Peetz <benedikt.peetz@b-peetz.de>
-# SPDX-License-Identifier: AGPL-3.0-or-later
-#
-# This file is part of Moonlander Layout.
-#
-# You should have received a copy of the License along with this program.
-# If not, see <https://www.gnu.org/licenses/agpl.txt>.
-
-LAYOUT_ID="KWBYA"
-LAYOUT_GEOMETRY="moonlander"
-
-# # Download layout source
-# data="$(mktemp)"
-# echo
-# cat <<EOF >"$data"
-# { "query": "query getLayout(\$hashId: String!, \$revisionId: String!, \$geometry: String) {layout(hashId: \$hashId, geometry: \$geometry, revisionId: \$revisionId) { revision { hashId, qmkVersion, title }}}","variables":{"hashId":"$LAYOUT_ID","geometry":"$LAYOUT_GEOMETRY","revisionId":"latest"}}
-# EOF
-#
-# response="$(curl --location 'https://oryx.zsa.io/graphql' --header 'Content-Type: application/json' --data "$(cat "$data")" | jq '.data.layout.revision | [.hashId, .qmkVersion, .title]')"
-#
-# hash_id="$(echo "${response}" | jq -r '.[0]')"
-# firmware_version=$(printf "%.0f" "$(echo "${response}" | jq -r '.[1]')")
-# change_description=$(echo "${response}" | jq -r '.[2]')
-# if [ -z "${change_description}" ]; then
-# change_description="latest layout modification made with Oryx"
-# fi
-#
-# curl -L "https://oryx.zsa.io/source/${hash_id}" -o source.zip
-#
-# # Unzip the source file
-# unzip -oj source.zip '*_source/*' -d "$LAYOUT_ID"
-# rm source.zip
-#
-# # Commit and Push changes
-# git config --local user.name "github-actions"
-# git config --local user.email "github-actions@github.com"
-# git add .
-# git commit -m "✨(oryx): $change_description" || echo "No layout change"
-# git push
-#
-# # Merge Oryx with custom QMK
-# git fetch origin main
-# git checkout -B main origin/main
-# git merge -Xignore-all-space oryx
-# git push
-#
-# # Checkout the right firmware branch
-# cd qmk_firmware
-# git submodule update --init --remote
-# git fetch origin "firmware$firmware_version"
-# git checkout -B "firmware$firmware_version" "origin/firmware$firmware_version"
-# git submodule update --init --recursive
-#
-# # Build qmk docker image
-# docker build -t qmk .
-
-# # Build the layout
-# ## Set keyboard directory and make prefix based on firmware version
-# if [ "$firmware_version" -ge 24 ]; then
-# keyboard_directory="qmk_firmware/keyboards/zsa"
-# make_prefix="zsa/"
-# else
-# keyboard_directory="qmk_firmware/keyboards"
-# make_prefix=""
-# fi
-#
-# ## Copy layout files to the qmk folder
-# rm -rf ${keyboard_directory}/$LAYOUT_GEOMETRY/keymaps/$LAYOUT_ID
-# mkdir -p ${keyboard_directory}/$LAYOUT_GEOMETRY/keymaps && cp -r $LAYOUT_ID ${keyboard_directory}/$LAYOUT_GEOMETRY/keymaps
-
-## Build the layout
-docker run -v ./qmk_firmware:/root --rm qmk /bin/sh -c "
- qmk setup zsa/qmk_firmware -b 'firmware$firmware_version' -y
- make ${make_prefix}$LAYOUT_GEOMETRY:$LAYOUT_ID
-"
-
-## Find and export built layout
-normalized_layout_geometry="$(echo "$LAYOUT_GEOMETRY" | sed 's/\//_/g')"
-built_layout_file="$(find ./qmk_firmware -maxdepth 1 -type f -regex ".*${normalized_layout_geometry}.*\.\(bin\|hex\)$")"
diff --git a/package.nix b/package.nix
index 807a57c..8cde8bf 100644
--- a/package.nix
+++ b/package.nix
@@ -4,10 +4,11 @@
# deps
qmk,
gnumake,
+ git,
}: let
layout_id = "KWBYA";
layout_geometry = "moonlander";
- FIRMWARE_VERSION = "24";
+ firmware_version = "24";
in
stdenv.mkDerivation
{
@@ -15,16 +16,20 @@ in
version = "25";
src = fetchgit {
- url = "https://github.com/zsa/qmk_firmware";
- rev = "4ae6ea9679fbd4277caa1036d326ddfce278b4d2"; # 2024-12-09T17:43:04 CET
- hash = "sha256-c+fojw64dHIYoO20cO9Nd1pnQwBDPPbrh6Erf9QTyGw=";
+ url = "https://github.com/qmk/qmk_firmware/";
+ rev = "refs/tags/0.27.1";
+ hash = "sha256-Chq4R8rICY1eyt5r2dkPm34zDOm6TqPKAXQWPp0nByA=";
fetchSubmodules = true;
+
+ # This allows for a compiled in version
+ leaveDotGit = true;
};
nativeBuildInputs = [
gnumake
qmk
+ git
];
buildPhase =
@@ -35,7 +40,7 @@ in
runHook preBuild
## Set keyboard directory and make prefix based on firmware version
- if [ "${FIRMWARE_VERSION}" -ge 24 ]; then
+ if [ "${firmware_version}" -ge 24 ]; then
keyboard_directory="keyboards/zsa"
keyboard_folder="zsa/${layout_geometry}"
else
@@ -51,7 +56,6 @@ in
cp --recursive "${./src}" "$key_dir"
## Build the layout
- # qmk setup "zsa/qmk_firmware" -b 'firmware${FIRMWARE_VERSION}' -y
make "$keyboard_folder:${layout_id}"
runHook postBuild
@@ -60,7 +64,11 @@ in
runHook preInstall
mkdir --parents "$out/binary_output"
- cp "./.build/zsa_moonlander_${layout_id}.bin" "$out/binary_output/"
+
+ cp --recursive "./.build" "$out/build"
+ rm --recursive "$out/build/obj_zsa_moonlander_${layout_id}"
+
+ ln --symbolic --relative "$out/build/zsa_moonlander_${layout_id}.bin" "$out/binary_output/"
runHook postInstall
'';
diff --git a/src/config.h b/src/config.h
index 7b3ae17..240867c 100644
--- a/src/config.h
+++ b/src/config.h
@@ -1,3 +1,4 @@
+// LTeX: language=off
/*
* Moonlander Layout
*
@@ -12,7 +13,8 @@
/*
Set any config.h overrides for your specific keymap here.
- See config.h options at https://docs.qmk.fm/#/config_options?id=the-configh-file
+ See config.h options at
+ https://docs.qmk.fm/#/config_options?id=the-configh-file
*/
#undef DEBOUNCE
@@ -24,3 +26,45 @@
#define RGB_MATRIX_STARTUP_SPD 60
#define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX
+
+// Mouse Key section {{{
+/* Delay between pressing a movement key and cursor movement */
+#undef MOUSEKEY_DELAY
+#define MOUSEKEY_DELAY 0 // default: 10
+
+/* Time between cursor movements in milliseconds */
+#undef MOUSEKEY_INTERVAL
+#define MOUSEKEY_INTERVAL 20 // default: 20
+
+/* Step size */
+// #undef MOUSEKEY_MOVE_DELTA
+// #define MOUSEKEY_MOVE_DELTA 18 // default: 8
+
+/* Maximum cursor speed at which acceleration stops */
+#undef MOUSEKEY_MAX_SPEED
+#define MOUSEKEY_MAX_SPEED 14 // default: 10
+
+/* Time until maximum cursor speed is reached */
+#undef MOUSEKEY_TIME_TO_MAX
+#define MOUSEKEY_TIME_TO_MAX 60 // default: 30
+
+/* Delay between pressing a wheel key and wheel movement */
+#undef MOUSEKEY_WHEEL_DELAY
+#define MOUSEKEY_WHEEL_DELAY 0 // default: 10
+
+/* Time between wheel movements */
+#undef MOUSEKEY_WHEEL_INTERVAL
+#define MOUSEKEY_WHEEL_INTERVAL 80 // default: 80
+
+/* Wheel movement step size */
+#undef MOUSEKEY_WHEEL_DELTA
+#define MOUSEKEY_WHEEL_DELTA 3 // default: 1
+
+/* Maximum number of scroll steps per scroll action */
+#undef MOUSEKEY_WHEEL_MAX_SPEED
+#define MOUSEKEY_WHEEL_MAX_SPEED 8 // default: 8
+
+/* Time until maximum scroll speed is reached */
+#undef MOUSEKEY_WHEEL_TIME_TO_MAX
+#define MOUSEKEY_WHEEL_TIME_TO_MAX 60 // default: 40
+// }}}
diff --git a/src/keymap.c b/src/keymap.c
index ff6eaed..35b6d5d 100644
--- a/src/keymap.c
+++ b/src/keymap.c
@@ -27,8 +27,6 @@ enum custom_keycodes {
ST_MACRO_7,
};
-
-
enum tap_dance_codes {
DANCE_0,
DANCE_1,
@@ -37,6 +35,7 @@ enum tap_dance_codes {
DANCE_4,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_moonlander(
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, QK_BOOT, QK_BOOT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
@@ -79,12 +78,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT
),
[5] = LAYOUT_moonlander(
- KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, QK_BOOT,
- KC_TRANSPARENT, KC_TRANSPARENT, KC_MS_BTN2, KC_MS_BTN3, KC_MS_BTN1, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_MS_BTN1, KC_MS_BTN3, KC_MS_BTN2, KC_TRANSPARENT, KC_TRANSPARENT,
- KC_TRANSPARENT, KC_MS_WH_UP, KC_MS_WH_UP, KC_MS_WH_DOWN, KC_MS_WH_LEFT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_MS_LEFT, KC_MS_DOWN, KC_MS_UP, KC_MS_RIGHT, KC_TRANSPARENT,
- KC_TRANSPARENT, LCTL(LSFT(KC_TAB)),LALT(LCTL(KC_R)),LCTL(KC_T), LCTL(KC_TAB), KC_TRANSPARENT, KC_TRANSPARENT, KC_WWW_BACK, KC_TRANSPARENT, KC_WWW_HOME, KC_WWW_FORWARD, KC_TRANSPARENT,
- KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
- KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT
+ KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, QK_BOOT,
+ KC_TRANSPARENT, KC_TRANSPARENT, KC_MS_BTN2, KC_MS_BTN3, KC_MS_BTN1, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_MS_BTN1, KC_MS_BTN3, KC_MS_BTN2, KC_TRANSPARENT, KC_TRANSPARENT,
+ KC_TRANSPARENT, KC_MS_WH_UP, QK_MOUSE_WHEEL_UP, QK_MOUSE_WHEEL_DOWN, KC_MS_WH_LEFT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_MS_LEFT, KC_MS_DOWN, KC_MS_UP, KC_MS_RIGHT, KC_TRANSPARENT,
+ KC_TRANSPARENT, LCTL(LSFT(KC_TAB)), LALT(LCTL(KC_R)), LCTL(KC_T), LCTL(KC_TAB), KC_TRANSPARENT, KC_TRANSPARENT, KC_WWW_BACK, KC_TRANSPARENT, KC_WWW_HOME, KC_WWW_FORWARD, KC_TRANSPARENT,
+ KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
+ KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT
),
[6] = LAYOUT_moonlander(
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
@@ -119,14 +118,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT
),
};
+// clang-format on
extern rgb_config_t rgb_matrix_config;
-void keyboard_post_init_user(void) {
- rgb_matrix_enable();
-}
-
+void keyboard_post_init_user(void) { rgb_matrix_enable(); }
+// clang-format off
const uint8_t PROGMEM ledmap[][RGB_MATRIX_LED_COUNT][3] = {
[0] = { {0,255,255}, {86,255,128}, {86,255,128}, {172,255,255}, {215,255,128}, {0,255,255}, {27,255,255}, {86,255,128}, {172,255,255}, {215,255,128}, {0,255,255}, {27,255,255}, {86,255,128}, {172,255,255}, {215,255,128}, {0,255,255}, {27,255,255}, {86,255,128}, {172,255,255}, {215,255,128}, {0,255,255}, {27,255,255}, {43,255,255}, {172,255,255}, {215,255,128}, {0,255,255}, {27,255,255}, {86,255,128}, {172,255,255}, {0,255,255}, {27,255,255}, {27,255,255}, {0,245,245}, {0,245,245}, {0,245,245}, {0,0,0}, {0,255,255}, {86,255,128}, {86,255,128}, {172,255,255}, {215,255,128}, {0,255,255}, {27,255,255}, {86,255,128}, {172,255,255}, {215,255,128}, {0,255,255}, {27,255,255}, {86,255,128}, {172,255,255}, {215,255,128}, {0,255,255}, {27,255,255}, {86,255,128}, {172,255,255}, {215,255,128}, {0,255,255}, {27,255,255}, {43,255,255}, {172,255,255}, {215,255,128}, {0,255,255}, {27,255,255}, {86,255,128}, {172,255,255}, {0,255,255}, {27,255,255}, {27,255,255}, {0,245,245}, {0,245,245}, {0,245,245}, {0,0,0} },
@@ -147,60 +145,62 @@ const uint8_t PROGMEM ledmap[][RGB_MATRIX_LED_COUNT][3] = {
[8] = { {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {215,255,128}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {131,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {215,255,128}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {131,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0} },
[9] = { {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {131,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {131,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0} },
-
};
+// clang-format on
void set_layer_color(int layer) {
for (int i = 0; i < RGB_MATRIX_LED_COUNT; i++) {
HSV hsv = {
- .h = pgm_read_byte(&ledmap[layer][i][0]),
- .s = pgm_read_byte(&ledmap[layer][i][1]),
- .v = pgm_read_byte(&ledmap[layer][i][2]),
+ .h = pgm_read_byte(&ledmap[layer][i][0]),
+ .s = pgm_read_byte(&ledmap[layer][i][1]),
+ .v = pgm_read_byte(&ledmap[layer][i][2]),
};
if (!hsv.h && !hsv.s && !hsv.v) {
- rgb_matrix_set_color( i, 0, 0, 0 );
+ rgb_matrix_set_color(i, 0, 0, 0);
} else {
- RGB rgb = hsv_to_rgb( hsv );
- float f = (float)rgb_matrix_config.hsv.v / UINT8_MAX;
- rgb_matrix_set_color( i, f * rgb.r, f * rgb.g, f * rgb.b );
+ RGB rgb = hsv_to_rgb(hsv);
+ float f = (float)rgb_matrix_config.hsv.v / UINT8_MAX;
+ rgb_matrix_set_color(i, f * rgb.r, f * rgb.g, f * rgb.b);
}
}
}
bool rgb_matrix_indicators_user(void) {
- if (keyboard_config.disable_layer_led) { return false; }
+ if (keyboard_config.disable_layer_led) {
+ return false;
+ }
switch (biton32(layer_state)) {
- case 0:
- set_layer_color(0);
- break;
- case 1:
- set_layer_color(1);
- break;
- case 2:
- set_layer_color(2);
- break;
- case 3:
- set_layer_color(3);
- break;
- case 4:
- set_layer_color(4);
- break;
- case 5:
- set_layer_color(5);
- break;
- case 6:
- set_layer_color(6);
- break;
- case 7:
- set_layer_color(7);
- break;
- case 8:
- set_layer_color(8);
- break;
- case 9:
- set_layer_color(9);
- break;
- default:
+ case 0:
+ set_layer_color(0);
+ break;
+ case 1:
+ set_layer_color(1);
+ break;
+ case 2:
+ set_layer_color(2);
+ break;
+ case 3:
+ set_layer_color(3);
+ break;
+ case 4:
+ set_layer_color(4);
+ break;
+ case 5:
+ set_layer_color(5);
+ break;
+ case 6:
+ set_layer_color(6);
+ break;
+ case 7:
+ set_layer_color(7);
+ break;
+ case 8:
+ set_layer_color(8);
+ break;
+ case 9:
+ set_layer_color(9);
+ break;
+ default:
if (rgb_matrix_get_flags() == LED_FLAG_NONE)
rgb_matrix_set_color_all(0, 0, 0);
break;
@@ -208,6 +208,7 @@ bool rgb_matrix_indicators_user(void) {
return true;
}
+// clang-format off
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case ST_MACRO_0:
@@ -259,20 +260,20 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
return true;
}
-
+// clang-format on
typedef struct {
- bool is_press_action;
- uint8_t step;
+ bool is_press_action;
+ uint8_t step;
} tap;
enum {
- SINGLE_TAP = 1,
- SINGLE_HOLD,
- DOUBLE_TAP,
- DOUBLE_HOLD,
- DOUBLE_SINGLE_TAP,
- MORE_TAPS
+ SINGLE_TAP = 1,
+ SINGLE_HOLD,
+ DOUBLE_TAP,
+ DOUBLE_HOLD,
+ DOUBLE_SINGLE_TAP,
+ MORE_TAPS
};
static tap dance_state[5];
@@ -280,198 +281,292 @@ static tap dance_state[5];
uint8_t dance_step(tap_dance_state_t *state);
uint8_t dance_step(tap_dance_state_t *state) {
- if (state->count == 1) {
- if (state->interrupted || !state->pressed) return SINGLE_TAP;
- else return SINGLE_HOLD;
- } else if (state->count == 2) {
- if (state->interrupted) return DOUBLE_SINGLE_TAP;
- else if (state->pressed) return DOUBLE_HOLD;
- else return DOUBLE_TAP;
- }
- return MORE_TAPS;
+ if (state->count == 1) {
+ if (state->interrupted || !state->pressed)
+ return SINGLE_TAP;
+ else
+ return SINGLE_HOLD;
+ } else if (state->count == 2) {
+ if (state->interrupted)
+ return DOUBLE_SINGLE_TAP;
+ else if (state->pressed)
+ return DOUBLE_HOLD;
+ else
+ return DOUBLE_TAP;
+ }
+ return MORE_TAPS;
}
-
void on_dance_0(tap_dance_state_t *state, void *user_data);
void dance_0_finished(tap_dance_state_t *state, void *user_data);
void dance_0_reset(tap_dance_state_t *state, void *user_data);
void on_dance_0(tap_dance_state_t *state, void *user_data) {
- if(state->count == 3) {
- tap_code16(KC_SCLN);
- tap_code16(KC_SCLN);
- tap_code16(KC_SCLN);
- }
- if(state->count > 3) {
- tap_code16(KC_SCLN);
- }
+ if (state->count == 3) {
+ tap_code16(KC_SCLN);
+ tap_code16(KC_SCLN);
+ tap_code16(KC_SCLN);
+ }
+ if (state->count > 3) {
+ tap_code16(KC_SCLN);
+ }
}
void dance_0_finished(tap_dance_state_t *state, void *user_data) {
- dance_state[0].step = dance_step(state);
- switch (dance_state[0].step) {
- case SINGLE_TAP: register_code16(KC_SCLN); break;
- case SINGLE_HOLD: register_code16(KC_COLN); break;
- case DOUBLE_TAP: register_code16(KC_SCLN); register_code16(KC_SCLN); break;
- case DOUBLE_SINGLE_TAP: tap_code16(KC_SCLN); register_code16(KC_SCLN);
- }
+ dance_state[0].step = dance_step(state);
+ switch (dance_state[0].step) {
+ case SINGLE_TAP:
+ register_code16(KC_SCLN);
+ break;
+ case SINGLE_HOLD:
+ register_code16(KC_COLN);
+ break;
+ case DOUBLE_TAP:
+ register_code16(KC_SCLN);
+ register_code16(KC_SCLN);
+ break;
+ case DOUBLE_SINGLE_TAP:
+ tap_code16(KC_SCLN);
+ register_code16(KC_SCLN);
+ }
}
void dance_0_reset(tap_dance_state_t *state, void *user_data) {
- wait_ms(10);
- switch (dance_state[0].step) {
- case SINGLE_TAP: unregister_code16(KC_SCLN); break;
- case SINGLE_HOLD: unregister_code16(KC_COLN); break;
- case DOUBLE_TAP: unregister_code16(KC_SCLN); break;
- case DOUBLE_SINGLE_TAP: unregister_code16(KC_SCLN); break;
- }
- dance_state[0].step = 0;
+ wait_ms(10);
+ switch (dance_state[0].step) {
+ case SINGLE_TAP:
+ unregister_code16(KC_SCLN);
+ break;
+ case SINGLE_HOLD:
+ unregister_code16(KC_COLN);
+ break;
+ case DOUBLE_TAP:
+ unregister_code16(KC_SCLN);
+ break;
+ case DOUBLE_SINGLE_TAP:
+ unregister_code16(KC_SCLN);
+ break;
+ }
+ dance_state[0].step = 0;
}
void on_dance_1(tap_dance_state_t *state, void *user_data);
void dance_1_finished(tap_dance_state_t *state, void *user_data);
void dance_1_reset(tap_dance_state_t *state, void *user_data);
void on_dance_1(tap_dance_state_t *state, void *user_data) {
- if(state->count == 3) {
- tap_code16(KC_SLASH);
- tap_code16(KC_SLASH);
- tap_code16(KC_SLASH);
- }
- if(state->count > 3) {
- tap_code16(KC_SLASH);
- }
+ if (state->count == 3) {
+ tap_code16(KC_SLASH);
+ tap_code16(KC_SLASH);
+ tap_code16(KC_SLASH);
+ }
+ if (state->count > 3) {
+ tap_code16(KC_SLASH);
+ }
}
void dance_1_finished(tap_dance_state_t *state, void *user_data) {
- dance_state[1].step = dance_step(state);
- switch (dance_state[1].step) {
- case SINGLE_TAP: register_code16(KC_SLASH); break;
- case SINGLE_HOLD: register_code16(KC_BSLS); break;
- case DOUBLE_TAP: register_code16(KC_SLASH); register_code16(KC_SLASH); break;
- case DOUBLE_SINGLE_TAP: tap_code16(KC_SLASH); register_code16(KC_SLASH);
- }
+ dance_state[1].step = dance_step(state);
+ switch (dance_state[1].step) {
+ case SINGLE_TAP:
+ register_code16(KC_SLASH);
+ break;
+ case SINGLE_HOLD:
+ register_code16(KC_BSLS);
+ break;
+ case DOUBLE_TAP:
+ register_code16(KC_SLASH);
+ register_code16(KC_SLASH);
+ break;
+ case DOUBLE_SINGLE_TAP:
+ tap_code16(KC_SLASH);
+ register_code16(KC_SLASH);
+ }
}
void dance_1_reset(tap_dance_state_t *state, void *user_data) {
- wait_ms(10);
- switch (dance_state[1].step) {
- case SINGLE_TAP: unregister_code16(KC_SLASH); break;
- case SINGLE_HOLD: unregister_code16(KC_BSLS); break;
- case DOUBLE_TAP: unregister_code16(KC_SLASH); break;
- case DOUBLE_SINGLE_TAP: unregister_code16(KC_SLASH); break;
- }
- dance_state[1].step = 0;
+ wait_ms(10);
+ switch (dance_state[1].step) {
+ case SINGLE_TAP:
+ unregister_code16(KC_SLASH);
+ break;
+ case SINGLE_HOLD:
+ unregister_code16(KC_BSLS);
+ break;
+ case DOUBLE_TAP:
+ unregister_code16(KC_SLASH);
+ break;
+ case DOUBLE_SINGLE_TAP:
+ unregister_code16(KC_SLASH);
+ break;
+ }
+ dance_state[1].step = 0;
}
void on_dance_2(tap_dance_state_t *state, void *user_data);
void dance_2_finished(tap_dance_state_t *state, void *user_data);
void dance_2_reset(tap_dance_state_t *state, void *user_data);
void on_dance_2(tap_dance_state_t *state, void *user_data) {
- if(state->count == 3) {
- tap_code16(KC_MINUS);
- tap_code16(KC_MINUS);
- tap_code16(KC_MINUS);
- }
- if(state->count > 3) {
- tap_code16(KC_MINUS);
- }
+ if (state->count == 3) {
+ tap_code16(KC_MINUS);
+ tap_code16(KC_MINUS);
+ tap_code16(KC_MINUS);
+ }
+ if (state->count > 3) {
+ tap_code16(KC_MINUS);
+ }
}
void dance_2_finished(tap_dance_state_t *state, void *user_data) {
- dance_state[2].step = dance_step(state);
- switch (dance_state[2].step) {
- case SINGLE_TAP: register_code16(KC_MINUS); break;
- case SINGLE_HOLD: register_code16(KC_UNDS); break;
- case DOUBLE_TAP: register_code16(KC_MINUS); register_code16(KC_MINUS); break;
- case DOUBLE_SINGLE_TAP: tap_code16(KC_MINUS); register_code16(KC_MINUS);
- }
+ dance_state[2].step = dance_step(state);
+ switch (dance_state[2].step) {
+ case SINGLE_TAP:
+ register_code16(KC_MINUS);
+ break;
+ case SINGLE_HOLD:
+ register_code16(KC_UNDS);
+ break;
+ case DOUBLE_TAP:
+ register_code16(KC_MINUS);
+ register_code16(KC_MINUS);
+ break;
+ case DOUBLE_SINGLE_TAP:
+ tap_code16(KC_MINUS);
+ register_code16(KC_MINUS);
+ }
}
void dance_2_reset(tap_dance_state_t *state, void *user_data) {
- wait_ms(10);
- switch (dance_state[2].step) {
- case SINGLE_TAP: unregister_code16(KC_MINUS); break;
- case SINGLE_HOLD: unregister_code16(KC_UNDS); break;
- case DOUBLE_TAP: unregister_code16(KC_MINUS); break;
- case DOUBLE_SINGLE_TAP: unregister_code16(KC_MINUS); break;
- }
- dance_state[2].step = 0;
+ wait_ms(10);
+ switch (dance_state[2].step) {
+ case SINGLE_TAP:
+ unregister_code16(KC_MINUS);
+ break;
+ case SINGLE_HOLD:
+ unregister_code16(KC_UNDS);
+ break;
+ case DOUBLE_TAP:
+ unregister_code16(KC_MINUS);
+ break;
+ case DOUBLE_SINGLE_TAP:
+ unregister_code16(KC_MINUS);
+ break;
+ }
+ dance_state[2].step = 0;
}
void on_dance_3(tap_dance_state_t *state, void *user_data);
void dance_3_finished(tap_dance_state_t *state, void *user_data);
void dance_3_reset(tap_dance_state_t *state, void *user_data);
void on_dance_3(tap_dance_state_t *state, void *user_data) {
- if(state->count == 3) {
- tap_code16(KC_QUOTE);
- tap_code16(KC_QUOTE);
- tap_code16(KC_QUOTE);
- }
- if(state->count > 3) {
- tap_code16(KC_QUOTE);
- }
+ if (state->count == 3) {
+ tap_code16(KC_QUOTE);
+ tap_code16(KC_QUOTE);
+ tap_code16(KC_QUOTE);
+ }
+ if (state->count > 3) {
+ tap_code16(KC_QUOTE);
+ }
}
void dance_3_finished(tap_dance_state_t *state, void *user_data) {
- dance_state[3].step = dance_step(state);
- switch (dance_state[3].step) {
- case SINGLE_TAP: register_code16(KC_QUOTE); break;
- case SINGLE_HOLD: register_code16(KC_DQUO); break;
- case DOUBLE_TAP: register_code16(KC_QUOTE); register_code16(KC_QUOTE); break;
- case DOUBLE_SINGLE_TAP: tap_code16(KC_QUOTE); register_code16(KC_QUOTE);
- }
+ dance_state[3].step = dance_step(state);
+ switch (dance_state[3].step) {
+ case SINGLE_TAP:
+ register_code16(KC_QUOTE);
+ break;
+ case SINGLE_HOLD:
+ register_code16(KC_DQUO);
+ break;
+ case DOUBLE_TAP:
+ register_code16(KC_QUOTE);
+ register_code16(KC_QUOTE);
+ break;
+ case DOUBLE_SINGLE_TAP:
+ tap_code16(KC_QUOTE);
+ register_code16(KC_QUOTE);
+ }
}
void dance_3_reset(tap_dance_state_t *state, void *user_data) {
- wait_ms(10);
- switch (dance_state[3].step) {
- case SINGLE_TAP: unregister_code16(KC_QUOTE); break;
- case SINGLE_HOLD: unregister_code16(KC_DQUO); break;
- case DOUBLE_TAP: unregister_code16(KC_QUOTE); break;
- case DOUBLE_SINGLE_TAP: unregister_code16(KC_QUOTE); break;
- }
- dance_state[3].step = 0;
+ wait_ms(10);
+ switch (dance_state[3].step) {
+ case SINGLE_TAP:
+ unregister_code16(KC_QUOTE);
+ break;
+ case SINGLE_HOLD:
+ unregister_code16(KC_DQUO);
+ break;
+ case DOUBLE_TAP:
+ unregister_code16(KC_QUOTE);
+ break;
+ case DOUBLE_SINGLE_TAP:
+ unregister_code16(KC_QUOTE);
+ break;
+ }
+ dance_state[3].step = 0;
}
void on_dance_4(tap_dance_state_t *state, void *user_data);
void dance_4_finished(tap_dance_state_t *state, void *user_data);
void dance_4_reset(tap_dance_state_t *state, void *user_data);
void on_dance_4(tap_dance_state_t *state, void *user_data) {
- if(state->count == 3) {
- tap_code16(KC_EQUAL);
- tap_code16(KC_EQUAL);
- tap_code16(KC_EQUAL);
- }
- if(state->count > 3) {
- tap_code16(KC_EQUAL);
- }
+ if (state->count == 3) {
+ tap_code16(KC_EQUAL);
+ tap_code16(KC_EQUAL);
+ tap_code16(KC_EQUAL);
+ }
+ if (state->count > 3) {
+ tap_code16(KC_EQUAL);
+ }
}
void dance_4_finished(tap_dance_state_t *state, void *user_data) {
- dance_state[4].step = dance_step(state);
- switch (dance_state[4].step) {
- case SINGLE_TAP: register_code16(KC_EQUAL); break;
- case SINGLE_HOLD: register_code16(KC_PLUS); break;
- case DOUBLE_TAP: register_code16(KC_EQUAL); register_code16(KC_EQUAL); break;
- case DOUBLE_SINGLE_TAP: tap_code16(KC_EQUAL); register_code16(KC_EQUAL);
- }
+ dance_state[4].step = dance_step(state);
+ switch (dance_state[4].step) {
+ case SINGLE_TAP:
+ register_code16(KC_EQUAL);
+ break;
+ case SINGLE_HOLD:
+ register_code16(KC_PLUS);
+ break;
+ case DOUBLE_TAP:
+ register_code16(KC_EQUAL);
+ register_code16(KC_EQUAL);
+ break;
+ case DOUBLE_SINGLE_TAP:
+ tap_code16(KC_EQUAL);
+ register_code16(KC_EQUAL);
+ }
}
void dance_4_reset(tap_dance_state_t *state, void *user_data) {
- wait_ms(10);
- switch (dance_state[4].step) {
- case SINGLE_TAP: unregister_code16(KC_EQUAL); break;
- case SINGLE_HOLD: unregister_code16(KC_PLUS); break;
- case DOUBLE_TAP: unregister_code16(KC_EQUAL); break;
- case DOUBLE_SINGLE_TAP: unregister_code16(KC_EQUAL); break;
- }
- dance_state[4].step = 0;
+ wait_ms(10);
+ switch (dance_state[4].step) {
+ case SINGLE_TAP:
+ unregister_code16(KC_EQUAL);
+ break;
+ case SINGLE_HOLD:
+ unregister_code16(KC_PLUS);
+ break;
+ case DOUBLE_TAP:
+ unregister_code16(KC_EQUAL);
+ break;
+ case DOUBLE_SINGLE_TAP:
+ unregister_code16(KC_EQUAL);
+ break;
+ }
+ dance_state[4].step = 0;
}
tap_dance_action_t tap_dance_actions[] = {
- [DANCE_0] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_0, dance_0_finished, dance_0_reset),
- [DANCE_1] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_1, dance_1_finished, dance_1_reset),
- [DANCE_2] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_2, dance_2_finished, dance_2_reset),
- [DANCE_3] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_3, dance_3_finished, dance_3_reset),
- [DANCE_4] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_4, dance_4_finished, dance_4_reset),
+ [DANCE_0] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_0, dance_0_finished,
+ dance_0_reset),
+ [DANCE_1] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_1, dance_1_finished,
+ dance_1_reset),
+ [DANCE_2] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_2, dance_2_finished,
+ dance_2_reset),
+ [DANCE_3] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_3, dance_3_finished,
+ dance_3_reset),
+ [DANCE_4] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_4, dance_4_finished,
+ dance_4_reset),
};
diff --git a/src/rules.mk b/src/rules.mk
index 282e78b..b1c5823 100644
--- a/src/rules.mk
+++ b/src/rules.mk
@@ -16,5 +16,7 @@ TAP_DANCE_ENABLE = yes
SPACE_CADET_ENABLE = no
CAPS_WORD_ENABLE = yes
+MOUSEKEY_ENABLE = yes
+
UNICODE_COMMON = yes
UNICODE_ENABLE = yes