I have a KBDfans KBD66 keyboard, that I need to change the layout on (especially since I made it an ISO-board for danish layout).
I have edited keymap_default.c, and compiled everything with "make clean;make all".
Then flashed the keyboard with "sudo dfu-programmer atmega32u4 erase;sudo dfu-programmer atmega32u4 flash AMJFC660M_lufa.hex;dfu-programmer atmega32u4 start".
And even though I get no errors, and it does seem to flash the keyboard, it ends up with the same layout as it had originally.
And I really don't understand why...?!?
Can anyone help me troubleshoot this?
Here is my terminal output:
$ make all
-------- begin --------
...had to shorten because of character restrictions on posts...
Creating load file for Flash: AMJFC660M_lufa.hex
avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature AMJFC660M_lufa.elf AMJFC660M_lufa.hex
Creating load file for EEPROM: AMJFC660M_lufa.eep
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" \
--change-section-lma .eeprom=0 --no-change-warnings -O ihex AMJFC660M_lufa.elf AMJFC660M_lufa.eep || exit 0
Creating Extended Listing: AMJFC660M_lufa.lss
avr-objdump -h -S -z AMJFC660M_lufa.elf > AMJFC660M_lufa.lss
Creating Symbol Table: AMJFC660M_lufa.sym
avr-nm -n AMJFC660M_lufa.elf > AMJFC660M_lufa.sym
Size after:
text data bss dec hex filename
17324 30 199 17553 4491 AMJFC660M_lufa.elf
-------- end --------
$ sudo dfu-programmer atmega32u4 erase
$ sudo dfu-programmer atmega32u4 flash AMJFC660M_lufa.hex
Validating...
17354 bytes used (60.53%)
$ sudo dfu-programmer atmega32u4 start
$
My keymap_default.c looks like this:
#include "keymap_common.h"
// Default
#ifdef KEYMAP_SECTION_ENABLE
const uint8_t keymaps[KEYMAPS_COUNT][MATRIX_ROWS][MATRIX_COLS] __attribute__ ((section (".keymap.keymaps"))) = {
#else
const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
#endif
/* Keymap 0: Default Layer
* ,----------------------------------------------------------. ,---.
* |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| +|Psc|Bs| |INS|
* |----------------------------------------------------------| |---|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | |DEL|
* |----------------------------------------------------------| `---'
* |Caps | A| S| D| F| G| H| J| K| L| ;| '| Ent |
* |-------------------------------------------------------------.
* |Shift|Iso| Z| X| C| V| B| N| M| ,| .| /|Shift|Fn| UP|
* |-----------------------------------------------------------------.
* |Ctrl|Win |Alt | Space |Alt |Ctrl| Fn |LFT|DWN|RIG|
* `-----------------------------------------------------------------'
*/
KEYMAP(
ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, PSCR, BSPC, INS,\
TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, DEL, \
CAPS, A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT,\
LSFT, NUHS, Z, X, C, V, B, N, M, COMM, DOT, SLSH, RSFT,FN0, UP,\
LCTL,LGUI,LALT,NO, SPC, RALT,RCTL, FN0, LEFT, DOWN, RGHT),
/* Keymap 1: FN Layer
* ,----------------------------------------------------------. ,---.
* | `| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Pau| | |VoU|
* |----------------------------------------------------------| |---|
* | | |Up | | | | | | | | | | | | |VoD|
* |----------------------------------------------------------| `---'
* | |Lef|Dow|Rig| | | | | | | | | Mute |
* |-------------------------------------------------------------.
* | | | | | | | | | | | | | | |PgU|
* |-----------------------------------------------------------------.
* | | | | | | | |Hom|PgD|End|
* `-----------------------------------------------------------------'
*/
KEYMAP(
GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PAUS, TRNS, VOLU,\
TRNS,TRNS,UP, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, VOLD, \
TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, MUTE, \
TRNS,TRNS, TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS, PGUP, \
TRNS,TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,HOME,PGDN,END)
};
/*
* Fn action definition
*/
#ifdef KEYMAP_SECTION_ENABLE
const uint16_t fn_actions[FN_ACTIONS_COUNT] __attribute__ ((section (".keymap.fn_actions"))) = {
#else
const uint16_t fn_actions[] PROGMEM = {
#endif
[0] = ACTION_LAYER_MOMENTARY(1),
[1] = ACTION_BACKLIGHT_TOGGLE(),
[2] = ACTION_BACKLIGHT_STEP(),
};
#ifdef KEYMAP_IN_EEPROM_ENABLE
uint16_t keys_count(void) {
return sizeof(keymaps) / sizeof(keymaps[0]) * MATRIX_ROWS * MATRIX_COLS;
}
uint16_t fn_actions_count(void) {
return sizeof(fn_actions) / sizeof(fn_actions[0]);
}
#endif
/*
* Action macro definition
*/
enum macro_id {
KEYPAD_00 = 0,
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
switch (id) {
case KEYPAD_00:
return (record->event.pressed ?
MACRO( T(P0), T(P0), END ) :
MACRO_NONE );
}
return MACRO_NONE;
}