-
Hi! I'm trying to get achordion to work with https://github.com/vial-kb/vial-qmk and I'm getting these errors: qmk compile -kb handwired/dactyl_manuform/3x5_3 -km vial
Ψ Compiling keymap with gmake --jobs=1 handwired/dactyl_manuform/3x5_3:vial
⚠ handwired/dactyl_manuform/3x5_3: DIODE_DIRECTION in config.h is overwriting diode_direction in info.json
⚠ handwired/dactyl_manuform/3x5_3: SOFT_SERIAL_PIN in config.h is overwriting split.soft_serial_pin in info.json
Making handwired/dactyl_manuform/3x5_3 with keymap vial
⚠ handwired/dactyl_manuform/3x5_3: DIODE_DIRECTION in config.h is overwriting diode_direction in info.json
⚠ handwired/dactyl_manuform/3x5_3: SOFT_SERIAL_PIN in config.h is overwriting split.soft_serial_pin in info.json
avr-gcc (GCC) 5.4.0
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Size before:
text data bss dec hex filename
0 28596 0 28596 6fb4 handwired_dactyl_manuform_3x5_3_vial.hex
Compiling: keyboards/handwired/dactyl_manuform/3x5_3/keymaps/vial/features/achordion.c keyboards/handwired/dactyl_manuform/3x5_3/keymaps/vial/features/achordion.c: In function ‘process_achordion’:
keyboards/handwired/dactyl_manuform/3x5_3/keymaps/vial/features/achordion.c:77:22: error: implicit declaration of function ‘IS_QK_MOD_TAP’ [-Werror=implicit-function-declaration]
const bool is_mt = IS_QK_MOD_TAP(keycode);
^
keyboards/handwired/dactyl_manuform/3x5_3/keymaps/vial/features/achordion.c:78:37: error: implicit declaration of function ‘IS_QK_LAYER_TAP’ [-Werror=implicit-function-declaration]
const bool is_tap_hold = is_mt || IS_QK_LAYER_TAP(keycode);
^
keyboards/handwired/dactyl_manuform/3x5_3/keymaps/vial/features/achordion.c:100:36: error: implicit declaration of function ‘QK_MOD_TAP_GET_MODS’ [-Werror=implicit-function-declaration]
uint8_t mod = mod_config(QK_MOD_TAP_GET_MODS(tap_hold_keycode));
^
cc1: all warnings being treated as errors
[ERRORS]
|
|
|
gmake[1]: *** [builddefs/common_rules.mk:362: .build/obj_handwired_dactyl_manuform_3x5_3_vial/features/achordion.o] Error 1
Make finished with errors
gmake: *** [Makefile:414: handwired/dactyl_manuform/3x5_3:vial] Error 1 My files look like this:
#include "features/achordion.h"
#include QMK_KEYBOARD_H
enum layers {
_COLEMAK,
_LOWER,
_RAISE,
_EXTRAS,
_NUMPAD,
_SPECIAL,
};
#define GUI_R MT(MOD_LGUI, KC_R)
#define CTL_S MT(MOD_LCTL, KC_S)
#define SHT_T MT(MOD_LSFT, KC_T)
#define SHT_N MT(MOD_RSFT, KC_N)
#define CTL_E MT(MOD_RCTL, KC_E)
#define GUI_I MT(MOD_RGUI, KC_I)
#define ALT_TAB MT(MOD_LALT, KC_TAB)
#define ALT_GRV MT(MOD_RALT, KC_GRAVE)
#define TGL_L_BKSP LT(_LOWER, KC_BSPC)
#define TGL_R_SPC LT(_RAISE, KC_SPC)
enum combos {
SPC_SLC
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_COLEMAK] = LAYOUT_split_3x5_3(
KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN,
KC_A, GUI_R, CTL_S, SHT_T, KC_G, KC_M, SHT_N, CTL_E, GUI_I, KC_O,
KC_Z, KC_X, KC_E, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH,
ALT_TAB, TGL_L_BKSP, XXXXXXX, KC_ENT, TGL_R_SPC, ALT_GRV
),
[_LOWER] = LAYOUT_split_3x5_3(
CAPS_WORD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, XXXXXXX, KC_END, KC_GRV,
KC_ESC, KC_TRNS, KC_TRNS, KC_TRNS, XXXXXXX, XXXXXXX, KC_LEFT, KC_UP, KC_RGHT, KC_QUOT,
LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_D), LCTL(KC_V), XXXXXXX, KC_PGDN, KC_DOWN, KC_PGUP, KC_TILD,
MEH(KC_P2), KC_TRNS, KC_TRNS, KC_MINS, KC_TRNS, LCTL(KC_P0)
),
[_RAISE] = LAYOUT_split_3x5_3(
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, XXXXXXX, XXXXXXX, KC_DEL,
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_KB_VOLUME_DOWN, KC_KB_MUTE, KC_KB_VOLUME_UP, KC_ENT,
MEH(KC_P4), KC_TRNS, KC_UNDS, KC_TRNS, KC_TRNS, MEH(KC_P5)
),
[_EXTRAS] = LAYOUT_split_3x5_3(
RGB_TOG, RGB_MOD, XXXXXXX, KC_SCRL, KC_PAUS, KC_BSLS, KC_LT, KC_LPRN, KC_RPRN, KC_MINS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_CAPS, KC_PIPE, KC_SLASH, KC_LCBR, KC_RCBR, KC_PLUS,
XXXXXXX, KC_TRNS, KC_TRNS, KC_TRNS, KC_NUM, KC_ASTR, KC_GT, KC_LBRC, KC_RBRC, KC_EQL,
KC_TRNS, KC_TRNS, KC_TRNS, KC_EXLM, KC_AMPR, KC_TRNS
),
[_NUMPAD] = LAYOUT_split_3x5_3(
KC_1, KC_2, KC_3, KC_4, KC_5, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_MINS,
XXXXXXX, KC_TRNS, KC_TRNS, KC_TRNS, XXXXXXX, KC_PAST, KC_P4, KC_P5, KC_P6, KC_PPLS,
XXXXXXX, KC_TRNS, KC_TRNS, KC_TRNS, XXXXXXX, KC_PCMM, KC_P1, KC_P2, KC_P3, KC_PEQL,
KC_TRNS, KC_TRNS, KC_TRNS, KC_P0, KC_PDOT, KC_TRNS
),
[_SPECIAL] = LAYOUT_split_3x5_3(
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RALT(KC_Y), XXXXXXX, XXXXXXX,
RALT(KC_Q), XXXXXXX, RALT(KC_S), KC_TRNS, XXXXXXX, KC_MYCM, KC_TRNS, XXXXXXX, XXXXXXX, RALT(KC_P),
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX,
KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, XXXXXXX, XXXXXXX
)
};
bool process_record_user(uint16_t keycode, keyrecord_t* record) {
if (!process_achordion(keycode, record)) { return false; }
// Your macros ...
return true;
}
bool achordion_eager_mod(uint8_t mod) {
switch (mod) {
case MOD_LSFT:
case MOD_RSFT:
case MOD_LCTL:
case MOD_RCTL:
return true;
default:
return false;
}
}
void matrix_scan_user(void) {
achordion_task();
}
bool get_tapping_force_hold(uint16_t keycode, keyrecord_t* record) {
// If you quickly hold a tap-hold key after tapping it, the tap action is
// repeated. Key repeating is useful e.g. for Vim navigation keys, but can
// lead to miQMK_SETTINGSssed triggers in fast typing. Here, returning true means we
// instead want to "force hold" and disable key repeating.
switch (keycode) {
case GUI_R:
case CTL_S:
case SHT_T:
case SHT_N:
case CTL_E:
case GUI_I:
case TGL_L_BKSP:
case TGL_R_SPC:
case ALT_TAB:
return false;
default:
return true; // Otherwise, force hold and disable key repeating.
}
return true;
}
bool get_permissive_hold(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case TGL_L_BKSP:
case TGL_R_SPC:
// Immediately select the hold action when another key is tapped.
return true;
default:
// Do not select the hold action when another key is tapped.
return false;
}
}
bool achordion_chord(uint16_t tap_hold_keycode,
keyrecord_t* tap_hold_record,
uint16_t other_keycode,
keyrecord_t* other_record) {
switch (tap_hold_keycode) {
case GUI_R: // A + U.
if (other_keycode == ALT_TAB)
{
return true;
}
break;
case TGL_L_BKSP:
return true;
break;
case TGL_R_SPC:
return true;
break;
}
// Also allow same-hand holds when the other key is in the rows below the
// alphas. I need the `% (MATRIX_ROWS / 2)` because my keyboard is split.
// if (other_record->event.key.row % (MATRIX_ROWS / 2) >= 4) { return true; }
// Otherwise, follow the opposite hands rule.
return achordion_opposite_hands(tap_hold_record, other_record);
}
uint16_t achordion_timeout(uint16_t tap_hold_keycode) {
switch (tap_hold_keycode) {
case TGL_L_BKSP:
case TGL_R_SPC:
return 0; // Bypass Achordion for these keys.
}
return 180; // Otherwise use a timeout of 800 ms.
}
I think there's probably something I need to disable or undef but I'm not sure what... Also, thanks for a great library. Could't live without it! |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment
-
Thanks for checking out Achordion and for the positive review! Much appreciated.
Those unrecognized macros |
Beta Was this translation helpful? Give feedback.
Thanks for checking out Achordion and for the positive review! Much appreciated.