Add protocol/lufa. LUFA supported now.
17 files changed, 164 insertions(+), 682 deletions(-) M common.mk M keyboard/hhkb/keymap.c D keyboard/lufa/config.h D keyboard/lufa/keymap.c D keyboard/lufa/led.c D keyboard/lufa/matrix.c R keyboard/{lufa/Makefile => macway/Makefile.lufa} R keyboard/macway/{Makefile => Makefile.pjrc} M keyboard/macway/config.h M keyboard/macway/keymap.c A protocol/lufa.mk R {keyboard => protocol}/lufa/descriptor.c R {keyboard => protocol}/lufa/descriptor.h R {keyboard => protocol}/lufa/lufa.c R {keyboard => protocol}/lufa/lufa.h M protocol/pjrc.mk M rules.mk
M common.mk => common.mk +12 -11
@@ 1,22 1,23 @@ SRC += host.c \ keyboard.c \ command.c \ layer.c \ timer.c \ print.c \ bootloader.c \ util.c COMMON_DIR = common SRC += $(COMMON_DIR)/host.c \ $(COMMON_DIR)/keyboard.c \ $(COMMON_DIR)/command.c \ $(COMMON_DIR)/layer.c \ $(COMMON_DIR)/timer.c \ $(COMMON_DIR)/print.c \ $(COMMON_DIR)/bootloader.c \ $(COMMON_DIR)/util.c # Option modules ifdef MOUSEKEY_ENABLE SRC += mousekey.c SRC += $(COMMON_DIR)/mousekey.c OPT_DEFS += -DMOUSEKEY_ENABLE endif ifdef PS2_MOUSE_ENABLE SRC += ps2.c \ ps2_mouse.c SRC += $(COMMON_DIR)/ps2.c \ $(COMMON_DIR)/ps2_mouse.c OPT_DEFS += -DPS2_MOUSE_ENABLE endif
M keyboard/hhkb/keymap.c => keyboard/hhkb/keymap.c +1 -1
@@ 110,7 110,7 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Gui |Alt |Space |Alt |xxx| * `--------------------------------------------' */ KEYMAP(ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \ KEYMAP(PWR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \ CAPS,NO, NO, NO, NO, NO, NO, NO, PSCR,SLCK,BRK, UP, NO, BSPC, \ LCTL,VOLD,VOLU,MUTE,NO, NO, PAST,PSLS,HOME,PGUP,LEFT,RGHT,ENT, \ LSFT,NO, NO, NO, NO, NO, PPLS,PMNS,END, PGDN,DOWN,RSFT,FN1, \
D keyboard/lufa/config.h => keyboard/lufa/config.h +0 -76
@@ 1,76 0,0 @@ /* Copyright 2011 Jun Wako <wakojun@gmail.com> This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ #ifndef CONFIG_H #define CONFIG_H /* controller configuration */ #include "controller_teensy.h" /* USB Device descriptor */ #define VENDOR_ID 0xFEED #define PRODUCT_ID 0xBEE6 #define DEVICE_VER 0x0202 #define MANUFACTURER t.m.k. #define PRODUCT Macway mod(LUFA) /* message strings */ #define DESCRIPTION t.m.k. keyboard firmware for Macway mod(LUFA) /* matrix size */ #define MATRIX_ROWS 9 #define MATRIX_COLS 8 /* define if matrix has ghost */ #define MATRIX_HAS_GHOST /* Set 0 if need no debouncing */ #define DEBOUNCE 5 /* key combination for command */ #define IS_COMMAND() ( \ keyboard_report->mods == (MOD_BIT(KB_LSHIFT) | MOD_BIT(KB_LCTRL) | MOD_BIT(KB_LALT) | MOD_BIT(KB_LGUI)) || \ keyboard_report->mods == (MOD_BIT(KB_LSHIFT) | MOD_BIT(KB_RSHIFT)) \ ) /* layer switching */ #define LAYER_SWITCH_DELAY 100 #define LAYER_SEND_FN_TERM 300 /* mouse keys */ #ifdef MOUSEKEY_ENABLE # define MOUSEKEY_DELAY_TIME 192 #endif /* PS/2 mouse */ #ifdef PS2_MOUSE_ENABLE # define PS2_CLOCK_PORT PORTF # define PS2_CLOCK_PIN PINF # define PS2_CLOCK_DDR DDRF # define PS2_CLOCK_BIT 0 # define PS2_DATA_PORT PORTF # define PS2_DATA_PIN PINF # define PS2_DATA_DDR DDRF # define PS2_DATA_BIT 1 #endif #endif
D keyboard/lufa/keymap.c => keyboard/lufa/keymap.c +0 -195
@@ 1,195 0,0 @@ /* Copyright 2011 Jun Wako <wakojun@gmail.com> This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ /* * Keymap for Macway mod */ #include <stdint.h> #include <stdbool.h> #include <avr/pgmspace.h> #include "usb_keycodes.h" #include "print.h" #include "debug.h" #include "util.h" #include "keymap.h" // Convert physical keyboard layout to matrix array. // This is a macro to define keymap easily in keyboard layout form. #define KEYMAP( \ K11, K10, K20, K30, K40, K41, K51, K50, K60, K70, K80, K81, K61, K02, \ K12, K13, K23, K33, K43, K42, K52, K53, K63, K73, K83, K82, K62, K01, \ K15, K14, K24, K34, K44, K45, K55, K54, K64, K74, K84, K85, K06, \ K67, K16, K26, K36, K46, K47, K57, K56, K66, K76, K87, K32, K35, \ K75, K22, K00, K07, K21, K04, K37, K27, K17 \ ) { \ { KB_##K00, KB_##K01, KB_##K02, KB_NO, KB_##K04, KB_NO, KB_##K06, KB_##K07 }, \ { KB_##K10, KB_##K11, KB_##K12, KB_##K13, KB_##K14, KB_##K15, KB_##K16, KB_##K17 }, \ { KB_##K20, KB_##K21, KB_##K22, KB_##K23, KB_##K24, KB_NO, KB_##K26, KB_##K27 }, \ { KB_##K30, KB_NO, KB_##K32, KB_##K33, KB_##K34, KB_##K35, KB_##K36, KB_##K37 }, \ { KB_##K40, KB_##K41, KB_##K42, KB_##K43, KB_##K44, KB_##K45, KB_##K46, KB_##K47 }, \ { KB_##K50, KB_##K51, KB_##K52, KB_##K53, KB_##K54, KB_##K55, KB_##K56, KB_##K57 }, \ { KB_##K60, KB_##K61, KB_##K62, KB_##K63, KB_##K64, KB_NO, KB_##K66, KB_##K67 }, \ { KB_##K70, KB_NO, KB_NO, KB_##K73, KB_##K74, KB_##K75, KB_##K76, KB_NO }, \ { KB_##K80, KB_##K81, KB_##K82, KB_##K83, KB_##K84, KB_##K85, KB_NO, KB_##K87 } \ } #define KEYCODE(layer, row, col) (pgm_read_byte(&keymaps[(layer)][(row)][(col)])) // Assign Fn key(0-7) to a layer to which switch with the Fn key pressed. static const uint8_t PROGMEM fn_layer[] = { 0, // Fn0 1, // Fn1 2, // Fn2 3, // Fn3 4, // Fn4 0, // Fn5 3, // Fn6 3 // Fn7 }; // Assign Fn key(0-7) to a keycode sent when release Fn key without use of the layer. // See layer.c for details. static const uint8_t PROGMEM fn_keycode[] = { KB_NO, // Fn0 KB_NO, // Fn1 KB_SLSH, // Fn2 KB_SCLN, // Fn3 KB_SPC, // Fn4 KB_NO, // Fn5 KB_NO, // Fn6 KB_NO // Fn7 }; static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Layer 0: Default Layer * ,-----------------------------------------------------------. * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | * |-----------------------------------------------------------| * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| | * |-----------------------------------------------------' | * |Contro| A| S| D| F| G| H| J| K| L|Fn3| '|Return | * |-----------------------------------------------------------| * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn1| * |-----------------------------------------------------------| * |Fn7|Gui |Alt |Fn4 |Alt |Gui|Fn6|Fn6|Ctr| * `-----------------------------------------------------------' */ KEYMAP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \ TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \ LCTL,A, S, D, F, G, H, J, K, L, FN3, QUOT,ENT, \ LSFT,Z, X, C, V, B, N, M, COMM,DOT, FN2, RSFT,FN1, \ FN7, LGUI,LALT,FN4, RALT,BSLS,FN6, FN6, RCTL), /* Layer 1: HHKB mode (HHKB Fn) * ,-----------------------------------------------------------. * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete | * |-----------------------------------------------------------| * |Caps | | | | | | | |Psc|Slk|Pus|Up | | | * |-----------------------------------------------------' | * |Contro|VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig|Enter | * |-----------------------------------------------------------| * |Shift | | | | | | +| -|End|PgD|Dow|Shift |xxx| * |-----------------------------------------------------------| * | |Gui |Alt | |Alt |Gui| | |Ctr| * `-----------------------------------------------------------' */ KEYMAP(PWR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, DEL, \ CAPS,NO, NO, NO, NO, NO, NO, NO, PSCR,SLCK,BRK, UP, NO, NO, \ LCTL,VOLD,VOLU,MUTE,NO, NO, PAST,PSLS,HOME,PGUP,LEFT,RGHT,ENT, \ LSFT,NO, NO, NO, NO, NO, PPLS,PMNS,END, PGDN,DOWN,RSFT,FN1, \ NO, LGUI,LALT,SPC, RALT,NO, NO, NO, RCTL), /* Layer 2: Vi mode (Quote/Rmeta) * ,-----------------------------------------------------------. * | `| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| ` | * |-----------------------------------------------------------| * | \ |Hom|PgD|Up |PgU|End|Hom|PgD|PgU|End| | | | | * |-----------------------------------------------------' | * |Contro| |Lef|Dow|Rig| |Lef|Dow|Up |Rig| | | \ | * |-----------------------------------------------------------| * |Shift | | | | | |Hom|PgD|PgU|End|xxx|Shift | | * |-----------------------------------------------------------| * | |Gui |Alt |Space |Alt |Gui|Fn6|Fn6|Ctr| * `-----------------------------------------------------------' */ KEYMAP(GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, GRV, \ BSLS,HOME,PGDN,UP, PGUP,END, HOME,PGDN,PGUP,END, NO, NO, NO, NO, \ LCTL,NO, LEFT,DOWN,RGHT,NO, LEFT,DOWN,UP, RGHT,NO, NO, BSLS, \ LSFT,NO, NO, NO, NO, NO, HOME,PGDN,PGUP,END, FN2, RSFT,NO, \ NO, LGUI,LALT,SPC, RALT,RGUI,FN6, FN6, RCTL), /* Layer 3: Mouse mode (Semicolon) * ,-----------------------------------------------------------. * | `| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| ` | * |-----------------------------------------------------------| * | \ |MwL|MwD|McU|MwU|MwR|MwL|MwD|MwU|MwR| | | | | * |-----------------------------------------------------' | * |Contro| |McL|McD|McR| |McL|McD|McU|McR|xxx| | \ | * |-----------------------------------------------------------| * |Shift | | |Mb1|Mb2|Mb3|Mb2|Mb1| | | |Shift | | * |-----------------------------------------------------------| * |xxx|Gui |Alt |Mb1 |Alt | | | | | * `-----------------------------------------------------------' * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel */ KEYMAP(GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, GRV, \ BSLS,WH_L,WH_D,MS_U,WH_U,WH_R,WH_L,WH_D,WH_U,WH_R,NO, NO, NO, NO, \ LCTL,NO, MS_L,MS_D,MS_R,NO, MS_L,MS_D,MS_U,MS_R,FN3, NO, BSLS, \ LSFT,NO, NO, BTN1,BTN2,BTN3,BTN2,BTN1,NO, NO, NO, RSFT,NO, \ FN7, LGUI,LALT,BTN1,RALT,NO, FN6, FN6, NO), /* Layer 4: Matias half keyboard style (Space) * ,-----------------------------------------------------------. * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete | * |-----------------------------------------------------------| * |Backs| P| O| I| U| Y| T| R| E| W| Q|Tab|Tab| | * |-----------------------------------------------------' | * |Contro| ;| L| K| J| H| G| F| D| S| A|Con|Control | * |-----------------------------------------------------------| * |Shift | /| .| ,| M| N| B| V| C| X| Z|Shift | | * |-----------------------------------------------------------| * | |Gui |Alt |xxxxxxxxxxxxxxxxxxxxxx|Alt |Gui| | |Ctr| * `-----------------------------------------------------------' */ KEYMAP(MINS,0, 9, 8, 7, 6, 5, 4, 3, 2, 1, NO, NO, ESC, \ BSPC,P, O, I, U, Y, T, R, E, W, Q, TAB, TAB, TAB, \ LCTL,SCLN,L, K, J, H, G, F, D, S, A, RCTL,RCTL, \ LSFT,SLSH,DOT, COMM,M, N, B, V, C, X, Z, RSFT,NO, \ NO, LGUI,LALT,FN4, RALT,RGUI,NO, NO, RCTL), }; uint8_t keymap_get_keycode(uint8_t layer, uint8_t row, uint8_t col) { return KEYCODE(layer, row, col); } uint8_t keymap_fn_layer(uint8_t fn_bits) { return pgm_read_byte(&fn_layer[biton(fn_bits)]); } uint8_t keymap_fn_keycode(uint8_t fn_bits) { return pgm_read_byte(&fn_keycode[(biton(fn_bits))]); }
D keyboard/lufa/led.c => keyboard/lufa/led.c +0 -24
@@ 1,24 0,0 @@ /* Copyright 2011 Jun Wako <wakojun@gmail.com> This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ #include "stdint.h" #include "led.h" void led_set(uint8_t usb_led) { }
D keyboard/lufa/matrix.c => keyboard/lufa/matrix.c +0 -271
@@ 1,271 0,0 @@ /* Copyright 2011 Jun Wako <wakojun@gmail.com> This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ /* * scan matrix */ #include <stdint.h> #include <stdbool.h> #include <avr/io.h> #include <util/delay.h> #include "print.h" #include "debug.h" #include "util.h" #include "matrix.h" #if (MATRIX_COLS > 16) # error "MATRIX_COLS must not exceed 16" #endif #if (MATRIX_ROWS > 255) # error "MATRIX_ROWS must not exceed 255" #endif #ifndef DEBOUNCE # define DEBOUNCE 0 #endif static uint8_t debouncing = DEBOUNCE; // matrix state buffer(1:on, 0:off) #if (MATRIX_COLS <= 8) static uint8_t *matrix; static uint8_t *matrix_prev; static uint8_t _matrix0[MATRIX_ROWS]; static uint8_t _matrix1[MATRIX_ROWS]; #else static uint16_t *matrix; static uint16_t *matrix_prev; static uint16_t _matrix0[MATRIX_ROWS]; static uint16_t _matrix1[MATRIX_ROWS]; #endif #ifdef MATRIX_HAS_GHOST static bool matrix_has_ghost_in_row(uint8_t row); #endif static uint8_t read_col(void); static void unselect_rows(void); static void select_row(uint8_t row); inline uint8_t matrix_rows(void) { return MATRIX_ROWS; } inline uint8_t matrix_cols(void) { return MATRIX_COLS; } void matrix_init(void) { // initialize row and col unselect_rows(); // Input with pull-up(DDR:0, PORT:1) DDRB = 0x00; PORTB = 0xFF; // initialize matrix state: all keys off for (uint8_t i=0; i < MATRIX_ROWS; i++) _matrix0[i] = 0x00; for (uint8_t i=0; i < MATRIX_ROWS; i++) _matrix1[i] = 0x00; matrix = _matrix0; matrix_prev = _matrix1; } uint8_t matrix_scan(void) { if (!debouncing) { uint8_t *tmp = matrix_prev; matrix_prev = matrix; matrix = tmp; } for (uint8_t i = 0; i < MATRIX_ROWS; i++) { unselect_rows(); select_row(i); _delay_us(30); // without this wait read unstable value. if (matrix[i] != (uint8_t)~read_col()) { matrix[i] = (uint8_t)~read_col(); if (debouncing) { debug("bounce!: "); debug_hex(debouncing); print("\n"); } debouncing = DEBOUNCE; } } unselect_rows(); if (debouncing) { debouncing--; } return 1; } bool matrix_is_modified(void) { if (debouncing) return false; for (uint8_t i = 0; i < MATRIX_ROWS; i++) { if (matrix[i] != matrix_prev[i]) { return true; } } return false; } inline bool matrix_has_ghost(void) { #ifdef MATRIX_HAS_GHOST for (uint8_t i = 0; i < MATRIX_ROWS; i++) { if (matrix_has_ghost_in_row(i)) return true; } #endif return false; } inline bool matrix_is_on(uint8_t row, uint8_t col) { return (matrix[row] & (1<<col)); } inline #if (MATRIX_COLS <= 8) uint8_t matrix_get_row(uint8_t row) #else uint16_t matrix_get_row(uint8_t row) #endif { return matrix[row]; } void matrix_print(void) { print("\nr/c 01234567\n"); for (uint8_t row = 0; row < matrix_rows(); row++) { phex(row); print(": "); #if (MATRIX_COLS <= 8) pbin_reverse(matrix_get_row(row)); #else pbin_reverse16(matrix_get_row(row)); #endif #ifdef MATRIX_HAS_GHOST if (matrix_has_ghost_in_row(row)) { print(" <ghost"); } #endif print("\n"); } } uint8_t matrix_key_count(void) { uint8_t count = 0; for (uint8_t i = 0; i < MATRIX_ROWS; i++) { #if (MATRIX_COLS <= 8) count += bitpop(matrix[i]); #else count += bitpop16(matrix[i]); #endif } return count; } #ifdef MATRIX_HAS_GHOST inline static bool matrix_has_ghost_in_row(uint8_t row) { // no ghost exists in case less than 2 keys on if (((matrix[row] - 1) & matrix[row]) == 0) return false; // ghost exists in case same state as other row for (uint8_t i=0; i < MATRIX_ROWS; i++) { if (i != row && (matrix[i] & matrix[row]) == matrix[row]) return true; } return false; } #endif inline static uint8_t read_col(void) { return PINB; } inline static void unselect_rows(void) { // Hi-Z(DDR:0, PORT:0) to unselect DDRC &= ~0b01000000; // PC: 6 PORTC &= ~0b11000000; DDRD &= ~0b11100111; // PD: 7,6,5,2,1,0 PORTD &= ~0b11000111; DDRF &= ~0b11000000; // PF: 7,6 PORTF &= ~0b11000000; } inline static void select_row(uint8_t row) { // Output low(DDR:1, PORT:0) to select // row: 0 1 2 3 4 5 6 7 8 // pin: PD0, PD5, PD7, PF6, PD6, PD1, PD2, PC6, PF7 switch (row) { case 0: DDRD |= (1<<0); PORTD &= ~(1<<0); break; case 1: DDRD |= (1<<5); PORTD &= ~(1<<5); break; case 2: DDRD |= (1<<7); PORTD &= ~(1<<7); break; case 3: DDRF |= (1<<6); PORTF &= ~(1<<6); break; case 4: DDRD |= (1<<6); PORTD &= ~(1<<6); break; case 5: DDRD |= (1<<1); PORTD &= ~(1<<1); break; case 6: DDRD |= (1<<2); PORTD &= ~(1<<2); break; case 7: DDRC |= (1<<6); PORTC &= ~(1<<6); break; case 8: DDRF |= (1<<7); PORTF &= ~(1<<7); break; } }
R keyboard/lufa/Makefile => keyboard/macway/Makefile.lufa +26 -81
@@ 1,23 1,3 @@ # Hey Emacs, this is a -*- makefile -*- #---------------------------------------------------------------------------- # WinAVR Makefile Template written by Eric B. Weddington, J�rg Wunsch, et al. # >> Modified for use with the LUFA project. << # # Released to the Public Domain # # Additional material for this makefile was written by: # Peter Fleury # Tim Henigan # Colin O'Flynn # Reiner Patommel # Markus Pfaff # Sander Pool # Frederik Rouleau # Carlos Lamas # Dean Camera # Opendous Inc. # Denver Gingerich # #---------------------------------------------------------------------------- # On command line: @@ # 29,8 9,11 @@ # # make extcoff = Convert ELF to AVR Extended COFF. # # make program = Download the hex file to the device, using avrdude. # Please customize the avrdude settings below first! # make program = Download the hex file to the device. # Please customize your programmer settings(PROGRAM_CMD) # # make teensy = Download the hex file to the device, using teensy_loader_cli. # (must have teensy_loader_cli installed). # # make dfu = Download the hex file to the device, using dfu-programmer (must @@ # have dfu-programmer installed). 44,10 27,7 @@ # make flip-ee = Download the eeprom file to the device, using Atmel FLIP # (must have Atmel FLIP installed). # # make doxygen = Generate DoxyGen documentation for the project (must have # DoxyGen installed) # # make debug = Start either simulavr or avarice as specified for debugging, # make debug = Start either simulavr or avarice as specified for debugging, # with avr-gdb or avr-insight as the front end for debugging. # @@ # make filename.s = Just compile filename.c into the assembler code only. 58,26 38,28 @@ # To rebuild project do "make clean" then "make all". #---------------------------------------------------------------------------- # Target file name (without extension). TARGET = macway_lufa # Directory common source filess exist TOP_DIR = ../.. # Directory keyboard dependent files exist TARGET_DIR = . # MCU name #MCU = at90usb1287 MCU = atmega32u4 # List C source files here. (C dependencies are automatically generated.) SRC += keymap.c \ matrix.c \ led.c \ protocol/pjrc/bootloader_teensy.c # Target architecture (see library "Board Types" documentation). ARCH = AVR8 CONFIG_H = config.h # Target board (see library "Board Types" documentation, NONE for projects not requiring # LUFA board drivers). If USER is selected, put custom board drivers in a directory called # "Board" inside the application directory. BOARD = USBKEY # MCU name #MCU = at90usb1287 MCU = atmega32u4 # Processor frequency. @@ # This will define a symbol, F_CPU, in all source code files equal to the 93,6 75,12 @@ BOARD = USBKEY F_CPU = 16000000 # # LUFA specific # # Target architecture (see library "Board Types" documentation). ARCH = AVR8 # Input clock frequency. # This will define a symbol, F_USB, in all source code files equal to the @@ # input clock frequency (before any prescaling is performed) in Hz. This value may 107,31 95,6 @@ F_CPU = 16000000 F_USB = $(F_CPU) # Target file name (without extension). TARGET = lufa # Path to the LUFA library LUFA_PATH = ../../protocol # Create the LUFA source path variables by including the LUFA root makefile include $(LUFA_PATH)/LUFA/makefile # List C source files here. (C dependencies are automatically generated.) LUFA_SRC = $(TARGET).c \ descriptor.c \ $(LUFA_SRC_USB) \ $(LUFA_SRC_USBCLASS) SRC = $(subst $(LUFA_PATH)/LUFA/,,$(LUFA_SRC)) SRC += keymap.c \ matrix.c \ led.c \ pjrc/bootloader_teensy.c CONFIG_H = config.h # Build Options @@ # comment out to disable the options. 142,28 105,10 @@ EXTRAKEY_ENABLE = yes # Audio control and System control #NKRO_ENABLE = yes # USB Nkey Rollover # LUFA library compile-time options and predefined tokens LUFA_OPTS = -D USB_DEVICE_ONLY LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8 LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1 LUFA_OPTS += -D USE_FLASH_DESCRIPTORS LUFA_OPTS += -D USE_STATIC_OPTIONS="(USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)" OPT_DEFS = -DF_CPU=$(F_CPU)UL OPT_DEFS += -DF_USB=$(F_USB)UL OPT_DEFS += -DBOARD=BOARD_$(BOARD) -DARCH=ARCH_$(ARCH) OPT_DEFS += $(LUFA_OPTS) # Search Path VPATH += $(TARGET_DIR) VPATH += $(LUFA_PATH)/LUFA VPATH += $(TOP_DIR) include $(TOP_DIR)/protocol.mk include $(TOP_DIR)/protocol/lufa.mk include $(TOP_DIR)/common.mk include $(TOP_DIR)/rules.mk test: echo $(SRC)
R keyboard/macway/Makefile => keyboard/macway/Makefile.pjrc +46 -3
@@ 1,5 1,45 @@ #---------------------------------------------------------------------------- # On command line: # # make all = Make software. # # make clean = Clean out built project files. # # make coff = Convert ELF to AVR COFF. # # make extcoff = Convert ELF to AVR Extended COFF. # # make program = Download the hex file to the device. # Please customize your programmer settings(PROGRAM_CMD) # # make teensy = Download the hex file to the device, using teensy_loader_cli. # (must have teensy_loader_cli installed). # # make dfu = Download the hex file to the device, using dfu-programmer (must # have dfu-programmer installed). # # make flip = Download the hex file to the device, using Atmel FLIP (must # have Atmel FLIP installed). # # make dfu-ee = Download the eeprom file to the device, using dfu-programmer # (must have dfu-programmer installed). # # make flip-ee = Download the eeprom file to the device, using Atmel FLIP # (must have Atmel FLIP installed). # # make debug = Start either simulavr or avarice as specified for debugging, # with avr-gdb or avr-insight as the front end for debugging. # # make filename.s = Just compile filename.c into the assembler code only. # # make filename.i = Create a preprocessed source file for use in submitting # bug reports to the GCC project. # # To rebuild project do "make clean" then "make all". #---------------------------------------------------------------------------- # Target file name (without extension). TARGET = macway TARGET = macway_pjrc # Directory common source filess exist @@ TOP_DIR = ../.. 8,7 48,7 @@ TOP_DIR = ../.. TARGET_DIR = . # keyboard dependent files SRC = main.c \ SRC = protocol/pjrc/main.c \ keymap.c \ matrix.c \ @@ led.c 47,7 87,10 @@ PROGRAM_CMD = teensy_loader_cli -mmcu=$(MCU) -w -v $(TARGET).hex # Search Path VPATH += $(TARGET_DIR) VPATH += $(TOP_DIR) include $(TOP_DIR)/protocol/pjrc.mk include $(TOP_DIR)/protocol.mk include $(TOP_DIR)/common.mk include $(TOP_DIR)/rules.mk
M keyboard/macway/config.h => keyboard/macway/config.h +6 -0
@@ 21,10 21,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. /* controller configuration */ #include "controller_teensy.h" /* USB Device descriptor parameter */ #define VENDOR_ID 0xFEED #define PRODUCT_ID 0xBEE0 #define DEVICE_VER 0x0202 #define MANUFACTURER t.m.k. #define PRODUCT Macway mod /* message strings */ #define DESCRIPTION t.m.k. keyboard firmware for Macway mod
M keyboard/macway/keymap.c => keyboard/macway/keymap.c +4 -4
@@ 59,7 59,7 @@ static const uint8_t PROGMEM fn_layer[] = { 3, // Fn3 4, // Fn4 0, // Fn5 2, // Fn6 3, // Fn6 3 // Fn7 }; @@ 94,7 94,7 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \ LCTL,A, S, D, F, G, H, J, K, L, FN3, QUOT,ENT, \ LSFT,Z, X, C, V, B, N, M, COMM,DOT, FN2, RSFT,FN1, \ FN7, LGUI,LALT,FN4, RALT,BSLS,GRV, FN6, RCTL), FN7, LGUI,LALT,FN4, RALT,GRV, FN6, FN6, RCTL), @@ /* Layer 1: HHKB mode (HHKB Fn) 110,7 110,7 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | |Gui |Alt | |Alt |Gui| | |Ctr| * `-----------------------------------------------------------' */ KEYMAP(ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, DEL, \ KEYMAP(PWR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, DEL, \ CAPS,NO, NO, NO, NO, NO, NO, NO, PSCR,SLCK,BRK, UP, NO, NO, \ LCTL,VOLD,VOLU,MUTE,NO, NO, PAST,PSLS,HOME,PGUP,LEFT,RGHT,ENT, \ @@ LSFT,NO, NO, NO, NO, NO, PPLS,PMNS,END, PGDN,DOWN,RSFT,FN1, \ 155,7 155,7 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { BSLS,WH_L,WH_D,MS_U,WH_U,WH_R,WH_L,WH_D,WH_U,WH_R,NO, NO, NO, NO, \ LCTL,NO, MS_L,MS_D,MS_R,NO, MS_L,MS_D,MS_U,MS_R,FN3, NO, BSLS, \ LSFT,NO, NO, BTN1,BTN2,BTN3,BTN2,BTN1,NO, NO, NO, RSFT,NO, \ FN7, LGUI,LALT,BTN1,RALT,NO, NO, NO, NO), FN7, LGUI,LALT,BTN1,RALT,NO, FN6, FN6, NO), /* Layer 4: Matias half keyboard style (Space)
A protocol/lufa.mk => protocol/lufa.mk +34 -0
@@ 0,0 1,34 @@ LUFA_DIR = protocol/lufa # Path to the LUFA library LUFA_PATH = $(TOP_DIR)/protocol/lufa/LUFA-120219 # Create the LUFA source path variables by including the LUFA root makefile include $(LUFA_PATH)/LUFA/makefile LUFA_SRC = $(LUFA_DIR)/lufa.c \ $(LUFA_DIR)/descriptor.c \ $(LUFA_SRC_USB) SRC += $(subst $(LUFA_PATH)/,,$(LUFA_SRC)) # Search Path VPATH += $(LUFA_PATH) # Option modules #ifdef $(or MOUSEKEY_ENABLE, PS2_MOUSE_ENABLE) #endif #ifdef EXTRAKEY_ENABLE #endif # LUFA library compile-time options and predefined tokens LUFA_OPTS = -D USB_DEVICE_ONLY LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8 LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1 LUFA_OPTS += -D USE_FLASH_DESCRIPTORS LUFA_OPTS += -D USE_STATIC_OPTIONS="(USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)" OPT_DEFS += -DF_USB=$(F_USB)UL OPT_DEFS += -DARCH=ARCH_$(ARCH) OPT_DEFS += $(LUFA_OPTS) OPT_DEFS += -DHOST_LUFA
R keyboard/lufa/descriptor.c => protocol/lufa/descriptor.c +0 -0
R keyboard/lufa/descriptor.h => protocol/lufa/descriptor.h +0 -0
R keyboard/lufa/lufa.c => protocol/lufa/lufa.c +0 -0
R keyboard/lufa/lufa.h => protocol/lufa/lufa.h +0 -0
M protocol/pjrc.mk => protocol/pjrc.mk +12 -12
@@ 1,21 1,21 @@ OPT_DEFS += -DHOST_PJRC SRC += pjrc.c \ usb_keyboard.c \ usb_debug.c \ usb.c \ bootloader_teensy.c PJRC_DIR = protocol/pjrc OPT_DEFS += -DHOST_PJRC # Search Path VPATH += $(TOP_DIR)/protocol/pjrc SRC += $(PJRC_DIR)/pjrc.c \ $(PJRC_DIR)/usb_keyboard.c \ $(PJRC_DIR)/usb_debug.c \ $(PJRC_DIR)/usb.c \ $(PJRC_DIR)/bootloader_teensy.c # Option modules ifdef $(or MOUSEKEY_ENABLE, PS2_MOUSE_ENABLE) SRC += usb_mouse.c SRC += $(PJRC_DIR)/usb_mouse.c endif ifdef EXTRAKEY_ENABLE SRC += usb_extra.c SRC += $(PJRC_DIR)/usb_extra.c endif # Search Path VPATH += $(TOP_DIR)/$(PJRC_DIR)
M rules.mk => rules.mk +23 -4
@@ 25,8 25,23 @@ # # make extcoff = Convert ELF to AVR Extended COFF. # # make program = Download the hex file to the device, using avrdude. # Please customize the avrdude settings below first! # make program = Download the hex file to the device. # Please customize your programmer settings(PROGRAM_CMD) # # make teensy = Download the hex file to the device, using teensy_loader_cli. # (must have teensy_loader_cli installed). # # make dfu = Download the hex file to the device, using dfu-programmer (must # have dfu-programmer installed). # # make flip = Download the hex file to the device, using Atmel FLIP (must # have Atmel FLIP installed). # # make dfu-ee = Download the eeprom file to the device, using dfu-programmer # (must have dfu-programmer installed). # # make flip-ee = Download the eeprom file to the device, using Atmel FLIP # (must have Atmel FLIP installed). # # make debug = Start either simulavr or avarice as specified for debugging, @@ # with avr-gdb or avr-insight as the front end for debugging. 567,6 582,10 @@ clean_list : $(REMOVE) -r .dep $(REMOVE) -r $(OBJDIR) show_path: @echo VPATH=$(VPATH) @echo SRC=$(SRC) # Create object files directory @@ $(shell mkdir $(OBJDIR) 2>/dev/null) 579,5 598,5 @@ $(shell mkdir $(OBJDIR) 2>/dev/null) # Listing of phony targets. .PHONY : all begin finish end sizebefore sizeafter gccversion \ build elf hex eep lss sym coff extcoff \ clean clean_list program debug gdb-config clean clean_list debug gdb-config show_path \ program teensy dfu flip dfu-ee flip-ee