summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--keyboards/handwired/2x5keypad/config.h6
-rw-r--r--keyboards/handwired/2x5keypad/keymaps/default/keymap.c123
-rw-r--r--keyboards/handwired/2x5keypad/rules.mk16
3 files changed, 122 insertions, 23 deletions
diff --git a/keyboards/handwired/2x5keypad/config.h b/keyboards/handwired/2x5keypad/config.h
index 6d09b5ed00..35a0fda8d1 100644
--- a/keyboards/handwired/2x5keypad/config.h
+++ b/keyboards/handwired/2x5keypad/config.h
@@ -37,6 +37,9 @@
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
+/* Tap dancing params */
+#define TAPPING_TERM 250
+
/* key combination for command */
/* DISABLED
#define IS_COMMAND() ( \
@@ -44,9 +47,6 @@
)
*/
-/* prevent stuck modifiers */
-
-
#ifdef RGB_DI_PIN
#define RGBLIGHT_ANIMATIONS
#define RGBLED_NUM 0
diff --git a/keyboards/handwired/2x5keypad/keymaps/default/keymap.c b/keyboards/handwired/2x5keypad/keymaps/default/keymap.c
index 808824f3a2..91a0e28f6a 100644
--- a/keyboards/handwired/2x5keypad/keymaps/default/keymap.c
+++ b/keyboards/handwired/2x5keypad/keymaps/default/keymap.c
@@ -7,27 +7,116 @@ enum layers {
NORMAL_LAYER = 0,
MEDIA_LAYER,
TBD_LAYER2,
- TBD_LAYER3
+ FRENCH_LAYER
};
+/* Enum for the tap dancing keys */
+enum tap_codes {
+ A_Q, E_Q, E_U, E_E,
+ A_Y, I_I, O_C, U_U
+};
+
+#define FR_A_GRAVE "00E0"
+#define FR_A_HAT "00E2"
+
+#define FR_C_CIRCUM "00E7"
+
+#define FR_E_AIGU "00E9"
+#define FR_E_GRAVE "00E8"
+#define FR_E_HAT "00EA"
+#define FR_E_UMLAUT "00EB"
+
+#define FR_I_HAT "00EE"
+#define FR_I_UMLAUT "00EF"
+
+#define FR_O_HAT "00F4"
+
+#define FR_U_GRAVE "00F9"
+#define FR_U_HAT "00FB"
+#define FR_U_UMLAUT "00FC"
+
+#define FR_Y_UMLAUT "00FF"
+
+#define FR_L_QUOTE "00AB"
+#define FR_R_QUOTE "00BB"
+
+void send_french_unicode_char(uint8_t count, char *once, char *twice)
+{
+ if (count <= 1)
+ send_unicode_hex_string(once);
+ else
+ send_unicode_hex_string(twice);
+}
+
+void dance_a_q(qk_tap_dance_state_t *state, void *user_data)
+{
+ send_french_unicode_char(state->count, FR_A_GRAVE, FR_L_QUOTE);
+}
+
+void dance_e_q(qk_tap_dance_state_t *state, void *user_data)
+{
+ send_french_unicode_char(state->count, FR_E_AIGU, FR_R_QUOTE);
+}
+
+void dance_e_u(qk_tap_dance_state_t *state, void *user_data)
+{
+ send_french_unicode_char(state->count, FR_E_GRAVE, FR_U_GRAVE);
+}
+
+void dance_e_e(qk_tap_dance_state_t *state, void *user_data)
+{
+ send_french_unicode_char(state->count, FR_E_HAT, FR_E_UMLAUT);
+}
+
+void dance_a_y(qk_tap_dance_state_t *state, void *user_data)
+{
+ send_french_unicode_char(state->count, FR_A_HAT, FR_Y_UMLAUT);
+}
+
+void dance_i_i(qk_tap_dance_state_t *state, void *user_data)
+{
+ send_french_unicode_char(state->count, FR_I_HAT, FR_I_UMLAUT);
+}
+
+void dance_o_c(qk_tap_dance_state_t *state, void *user_data)
+{
+ send_french_unicode_char(state->count, FR_O_HAT, FR_C_CIRCUM);
+}
+
+void dance_u_u(qk_tap_dance_state_t *state, void *user_data)
+{
+ send_french_unicode_char(state->count, FR_U_HAT, FR_U_UMLAUT);
+}
+
+/* Define the tap dance actions for the french characters */
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [A_Q] = ACTION_TAP_DANCE_FN(dance_a_q),
+ [E_Q] = ACTION_TAP_DANCE_FN(dance_e_q),
+ [E_U] = ACTION_TAP_DANCE_FN(dance_e_u),
+ [E_E] = ACTION_TAP_DANCE_FN(dance_e_e),
+
+ [A_Y] = ACTION_TAP_DANCE_FN(dance_a_y),
+ [I_I] = ACTION_TAP_DANCE_FN(dance_i_i),
+ [O_C] = ACTION_TAP_DANCE_FN(dance_o_c),
+ [U_U] = ACTION_TAP_DANCE_FN(dance_u_u)
+};
+
+
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [NORMAL_LAYER]=
- LAYOUT(TO(1), WIN_TAB, KC_HOME, KC_UP, KC_END,
- WIN_LOCK, KC_MUTE, KC_LEFT, KC_DOWN, KC_RGHT),
+ [NORMAL_LAYER] = LAYOUT(TO(1), WIN_TAB, KC_HOME, KC_UP, KC_END,
+ WIN_LOCK, KC_MUTE, KC_LEFT, KC_DOWN, KC_RGHT),
- [MEDIA_LAYER]=
- LAYOUT(TO(2), KC_CALC, KC_MPRV, KC_MNXT, KC_VOLU,
- KC_TRNS, KC_TRNS, KC_MSTP, KC_MPLY, KC_VOLD),
+ [MEDIA_LAYER] = LAYOUT(TO(2), KC_CALC, KC_MPRV, KC_MNXT, KC_VOLU,
+ KC_TRNS, KC_TRNS, KC_MSTP, KC_MPLY, KC_VOLD),
- [TBD_LAYER2]=
- LAYOUT(TO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ [TBD_LAYER2] = LAYOUT(TO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
- [TBD_LAYER3]=
- LAYOUT(TO(0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+ [FRENCH_LAYER] = LAYOUT(TO(0), TD(A_Q), TD(E_Q), TD(E_U), TD(E_E),
+ KC_TRNS, TD(A_Y), TD(I_I), TD(O_C), TD(U_U))
};
@@ -44,6 +133,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
*/
+void matrix_init_user(void)
+{
+ set_unicode_input_mode(UC_WINC); /* See https://jayliu50.github.io/qmk-cheatsheet/ */
+}
+
+
layer_state_t layer_state_set_user(layer_state_t state)
{
turn_off_leds();
@@ -61,7 +156,7 @@ layer_state_t layer_state_set_user(layer_state_t state)
turn_on_led(BLUE_LED);
break;
- case TBD_LAYER3:
+ case FRENCH_LAYER:
turn_on_led(GREEN_LED);
break;
}
diff --git a/keyboards/handwired/2x5keypad/rules.mk b/keyboards/handwired/2x5keypad/rules.mk
index b7027cd9e9..e62a0f24a8 100644
--- a/keyboards/handwired/2x5keypad/rules.mk
+++ b/keyboards/handwired/2x5keypad/rules.mk
@@ -11,13 +11,17 @@ MCU = atmega32u4
# ATmega328P USBasp
BOOTLOADER = caterina
+
+AUDIO_ENABLE = no
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
-MOUSEKEY_ENABLE = yes # Mouse keys
-EXTRAKEY_ENABLE = yes # Audio control and System control
-CONSOLE_ENABLE= no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+CONSOLE_ENABLE= no # Console for debug
+EXTRAKEY_ENABLE = yes # Audio control and System control
+MOUSEKEY_ENABLE = yes # Mouse keys
NKRO_ENABLE = yes # USB Nkey Rollover -
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-AUDIO_ENABLE = no
+
RGBLIGHT_ENABLE = no
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+UNICODE_ENABLE = yes
+TAP_DANCE_ENABLE = yes