Alors j’ai revu légèrement ma copie, je suis passé sur deux couches uniquement avec donc le pavé numérique sur la même couche que les fonctions.
J’ai décalé le pavé numérique pour avoir le 5 sur la touche avec l’ergo comme un externe.
J’ai ajouté un raccourcis pour le gestionnaire des tâches Windows et une bascule pour un BÓPO temporaire en maintenant Ç (à la manière d’un AltGr).
J’ai programmé les LEDs, la 1 pour CapsLock, la 2 pour BÓPO, la 3 ne sers pas pour l’instant, les RGB (LED sous claviers du EZ Shine) en vert quand sur la couche 1 et Vernum activé, et les RGB en Rouge quand sur couche 1 et Vernum désactivé. RGB éteintent sur couche 0.
Il reste à tester le tout, je suis en attente de réception de mon clavier.
#include "ergodox.h"
#include "debug.h"
#include "action_layer.h"
#include "version.h"
#include "keymap_german.h"
#include "keymap_nordic.h"
#define M_COPY M(1)
#define M_EUR M(2)
#define M_AHK M(3)
#define M_USD M(4)
#define M_CCED M(5)
#define AH_ABNT KC_INT1
#define AH_ISO KC_NUBS
#define AH_BOPO KC_KANA
#define AH_ROYA KC_INT4
enum custom_keycodes {
PLACEHOLDER = SAFE_RANGE, // can always be here
EPRM,
VRSN,
RGB_SLD,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = KEYMAP(KC_GRAVE,KC_1,KC_2,KC_3,KC_4,KC_5,KC_MINUS,KC_TAB,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_RALT,KC_HOME,KC_A,KC_S,KC_D,KC_F,KC_G,KC_END,KC_NONUS_BSLASH,KC_Z,KC_X,KC_C,KC_V,KC_LSHIFT,KC_LCTL,KC_LGUI,KC_UP,KC_DOWN,KC_LALT,KC_B,KC_ESCAPE,M_COPY,KC_SPACE,KC_DELETE,TT(1),KC_EQUAL,KC_6,KC_7,KC_8,KC_9,KC_0,KC_RBRACKET,KC_RALT,KC_Y,KC_U,KC_I,KC_O,KC_P,KC_LBRACKET,KC_H,KC_J,KC_K,KC_L,KC_SCOLON,KC_QUOTE,KC_RSHIFT,KC_N,KC_M,KC_COMMA,KC_DOT,KC_SLASH,M_CCED,KC_LEFT,KC_RIGHT,KC_RGUI,KC_RCTRL,AH_ABNT,KC_AUDIO_VOL_UP,KC_AUDIO_MUTE,KC_AUDIO_VOL_DOWN,TT(1),KC_BSPACE,KC_ENTER),
[1] = KEYMAP(KC_SYSTEM_POWER,KC_F1,KC_F2,KC_F3,KC_F4,KC_F5,KC_NO,LCTL(LSFT(KC_ESCAPE)),M_COPY,KC_UP,KC_PASTE,KC_NO,KC_NO,KC_KANA,KC_PGUP,KC_LEFT,KC_DOWN,KC_RIGHT,KC_APPLICATION,KC_NO,KC_PGDOWN,KC_F6,KC_F7,KC_F8,KC_F9,KC_F10,KC_CAPSLOCK,KC_LCTL,KC_PSCREEN,KC_NO,KC_NO,KC_LALT,KC_NO,TO(0),KC_PASTE,KC_INSERT,KC_DELETE,TO(0),KC_F11,KC_KP_EQUAL,KC_KP_PLUS,KC_KP_MINUS,KC_KP_SLASH,KC_NO,KC_NO,KC_F12,KC_KP_7,KC_KP_8,KC_KP_9,KC_KP_ASTERISK,M_EUR,KC_NO,KC_KP_4,KC_KP_5,KC_KP_6,KC_KP_COMMA,M_AHK,KC_NO,KC_NUMLOCK,KC_KP_1,KC_KP_2,KC_KP_3,KC_KP_ENTER,M_USD,KC_NO,KC_KP_0,KC_DOT,KC_KP_ENTER,KC_LCTL,KC_NO,RGB_VAI,KC_NO,RGB_VAD,TO(0),KC_BSPACE,KC_ENTER),
};
const uint16_t PROGMEM fn_actions[] = {
[1] = ACTION_LAYER_TAP_TOGGLE(1)
};
// leaving this in place for compatibilty with old keymaps cloned and re-compiled.
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
switch(id) {
case 0:
if (record->event.pressed) {
SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
}
case 1: {
if (record->event.pressed) {
return MACRO( D(LCTL), T(X), U(LCTL), END );
} else {
return MACRO( D(LCTL), T(C), U(LCTL), END );
}
}
case 2:
SEND_STRING("€");
//unicode_input_start(); register_hex(0x20AC); unicode_input_finish();
return false;
case 3:
SEND_STRING("₢");
//unicode_input_start(); register_hex(0x20A2); unicode_input_finish();
return false;
case 4:
SEND_STRING("$");
//unicode_input_start(); register_hex(0x0024); unicode_input_finish();
return false;
case 5: {
if (record->event.pressed) {
return MACRO( T(INT5), END );
} else {
return MACRO( T(BSLASH), END );
}
}
break;
}
return MACRO_NONE;
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
// dynamically generate these.
case EPRM:
if (record->event.pressed) {
eeconfig_init();
}
return false;
break;
case VRSN:
if (record->event.pressed) {
SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
}
return false;
break;
case RGB_SLD:
if (record->event.pressed) {
rgblight_mode(1);
}
return false;
break;
}
return true;
}
void led_set_user(uint8_t usb_led) {
if (usb_led & (1 << USB_LED_NUM_LOCK)) {
#ifdef RGBLIGHT_ENABLE
rgblight_setrgb(0xff,0x00,0x00);
#endif
} else {
#ifdef RGBLIGHT_ENABLE
rgblight_setrgb(0x00,0x00,0xff);
#endif // RGBLIGHT_ENABLE
}
if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
ergodox_right_led_1_on();
} else {
ergodox_right_led_1_off();
}
if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
} else {
}
if (usb_led & (1 << USB_LED_COMPOSE)) {
} else {
}
if (usb_led & (1 << USB_LED_KANA)) {
ergodox_right_led_2_on();
} else {
ergodox_right_led_2_off();
}
}
void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state);
switch (layer) {
case 0:
ergodox_board_led_off();
//rgblight_off();
break;
case 1:
ergodox_board_led_on();
//rgblight_on();
break;
case 2:
ergodox_board_led_on();
//rgblight_on();
break;
case 3:
ergodox_board_led_on();
//rgblight_on();
break;
default:
break;
}
};