diff options
| -rw-r--r-- | command.c | 5 | ||||
| -rw-r--r-- | hhkb/Makefile | 10 | ||||
| -rw-r--r-- | hhkb/config.h | 13 | ||||
| -rw-r--r-- | hhkb/keymap.c | 8 | ||||
| -rw-r--r-- | hhkb/matrix.c | 2 | ||||
| -rw-r--r-- | host.h | 3 | ||||
| -rw-r--r-- | pjrc/host.c | 18 | ||||
| -rw-r--r-- | tmk.c | 97 | 
8 files changed, 33 insertions, 123 deletions
@@ -32,7 +32,7 @@ uint8_t command_proc(void)      uint8_t processed = 1;      bool last_print_enable = print_enable;      print_enable = true; -    switch (keyboard_report->keys[0]) { +    switch (host_get_first_key()) {          case KB_H:              help();              break; @@ -89,7 +89,7 @@ uint8_t command_proc(void)              print("timer: "); phex16(timer_count); print("\n");              break;          case KB_P: // print toggle -            if (print_enable) { +            if (last_print_enable) {                  print("print disabled.\n");                  last_print_enable = false;              } else { @@ -107,6 +107,7 @@ uint8_t command_proc(void)              break;  #ifdef USB_NKRO_ENABLE          case KB_N: +            // send empty report before change              host_clear_keyboard_report();              host_send_keyboard_report();              keyboard_nkro = !keyboard_nkro; diff --git a/hhkb/Makefile b/hhkb/Makefile index 7c7ed0ee23..2c8cd5afcf 100644 --- a/hhkb/Makefile +++ b/hhkb/Makefile @@ -8,11 +8,13 @@ COMMON_DIR = ..  TARGET_DIR = .  # keyboard dependent files -TARGET_SRC =	tmk.c \ +TARGET_SRC =	main_pjrc.c \  		keymap.c \    	        matrix.c \  		led.c +CONFIG_H = config.h +  # MCU name, you MUST set this to match the board you are using  # type "make clean" after changing this, so all files will be rebuilt @@ -38,5 +40,11 @@ USB_EXTRA_ENABLE = yes	# Enhanced feature for Windows(Audio control and System c  USB_NKRO_ENABLE = yes	# USB Nkey Rollover + +#---------------- Programming Options -------------------------- +PROGRAM_CMD = teensy_loader_cli.exe -mmcu=$(MCU) -w -v $(TARGET).hex + + +  include $(COMMON_DIR)/Makefile.pjrc  include $(COMMON_DIR)/Makefile.common diff --git a/hhkb/config.h b/hhkb/config.h index b8392aa8eb..886eef928a 100644 --- a/hhkb/config.h +++ b/hhkb/config.h @@ -10,26 +10,27 @@  #define PRODUCT         HHKB mod  #define DESCRIPTION     t.m.k. keyboard firmware for HHKB mod +  /* matrix size */  #define MATRIX_ROWS 8  #define MATRIX_COLS 8 -  /* define if matrix has ghost */  //#define MATRIX_HAS_GHOST -/* key combination for command */ -#define IS_COMMAND() (keyboard_report->mods == (BIT_LSHIFT | BIT_RSHIFT)) +/* key combination for command */ +#define IS_COMMAND() ( \ +    keyboard_report->mods == (BIT_LSHIFT | BIT_RSHIFT) || \ +    keyboard_report->mods == (BIT_LCTRL | BIT_RSHIFT) \ +) -/* USB NKey Rollover */ -#ifdef USB_NKRO_ENABLE -#endif  /* mouse keys */  #ifdef MOUSEKEY_ENABLE  #   define MOUSEKEY_DELAY_TIME 192  #endif +  /* PS/2 mouse */  #ifdef PS2_MOUSE_ENABLE  /* diff --git a/hhkb/keymap.c b/hhkb/keymap.c index d6acf4595a..78f1a7f759 100644 --- a/hhkb/keymap.c +++ b/hhkb/keymap.c @@ -9,7 +9,7 @@  #include "print.h"  #include "debug.h"  #include "util.h" -#include "keymap_skel.h" +#include "keymap.h"  // Convert physical keyboard layout to matrix array. @@ -193,9 +193,3 @@ uint8_t keymap_fn_keycode(uint8_t fn_bits)  {      return pgm_read_byte(&fn_keycode[(biton(fn_bits))]);  } - -// define a condition to enter special function mode -bool keymap_is_special_mode(uint8_t fn_bits) -{ -    return host_get_mods() == (BIT_LSHIFT | BIT_RSHIFT) || host_get_mods() == (BIT_LCTRL | BIT_RSHIFT); -} diff --git a/hhkb/matrix.c b/hhkb/matrix.c index 15633d53da..fefd247873 100644 --- a/hhkb/matrix.c +++ b/hhkb/matrix.c @@ -7,7 +7,7 @@  #include <util/delay.h>  #include "print.h"  #include "util.h" -#include "matrix_skel.h" +#include "matrix.h"  #if (MATRIX_COLS > 16) @@ -70,8 +70,7 @@ void host_add_code(uint8_t code);  void host_swap_keyboard_report(void);  void host_clear_keyboard_report(void);  uint8_t host_has_anykey(void); -uint8_t *host_get_keys(void); -uint8_t host_get_mods(void); +uint8_t host_get_first_key(void);  void host_send_keyboard_report(void); diff --git a/pjrc/host.c b/pjrc/host.c index 7247288bd7..8da88517b5 100644 --- a/pjrc/host.c +++ b/pjrc/host.c @@ -4,6 +4,7 @@  #include "usb_mouse.h"  #include "debug.h"  #include "host.h" +#include "util.h"  #ifdef USB_NKRO_ENABLE @@ -80,14 +81,17 @@ uint8_t host_has_anykey(void)      return cnt;  } -uint8_t *host_get_keys(void) +uint8_t host_get_first_key(void)  { -    return keyboard_report->keys; -} - -uint8_t host_get_mods(void) -{ -    return keyboard_report->mods; +#ifdef USB_NKRO_ENABLE +    if (keyboard_nkro) { +        uint8_t i = 0; +        for (; i < REPORT_KEYS && !keyboard_report->keys[i]; i++) +            ; +        return i<<3 | biton(keyboard_report->keys[i]); +    } +#endif +    return keyboard_report->keys[0];  } diff --git a/tmk.c b/tmk.c deleted file mode 100644 index 18a05ffdff..0000000000 --- a/tmk.c +++ /dev/null @@ -1,97 +0,0 @@ -/* 2010/08/23 noname - * keyboard firmware based on PJRC USB keyboard example - */ -/* Keyboard example with debug channel, for Teensy USB Development Board - * http://www.pjrc.com/teensy/usb_keyboard.html - * Copyright (c) 2008 PJRC.COM, LLC - *  - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - *  - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - *  - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#include <stdbool.h> -#include <avr/io.h> -#include <avr/interrupt.h> -#include <util/delay.h> -#include "keyboard.h" -#include "usb.h" -#include "matrix.h" -#include "print.h" -#include "debug.h" -#include "util.h" -#include "jump_bootloader.h" -#ifdef PS2_MOUSE_ENABLE -#   include "ps2_mouse.h" -#endif - - -#define CPU_PRESCALE(n)    (CLKPR = 0x80, CLKPR = (n)) - - -bool debug_enable = false; -bool debug_matrix = false; -bool debug_keyboard = false; -bool debug_mouse = false; - - -int main(void) -{ -    DEBUG_LED_CONFIG; -    DEBUG_LED_OFF; - -    // set for 16 MHz clock -    CPU_PRESCALE(0); - -    // Initialize the USB, and then wait for the host to set configuration. -    // If the Teensy is powered without a PC connected to the USB port, -    // this will wait forever. -    usb_init(); -    while (!usb_configured()) /* wait */ ; - -    keyboard_init(); -    matrix_scan(); -    if (matrix_key_count() >= 3) { -#ifdef DEBUG_LED -        for (int i = 0; i < 6; i++) { -            DEBUG_LED_CONFIG; -            DEBUG_LED_ON; -            _delay_ms(500); -            DEBUG_LED_OFF; -            _delay_ms(500); -        } -#else -        _delay_ms(5000); -#endif -        print_enable = true; -        debug_enable = true; -        debug_matrix = true; -        debug_keyboard = true; -        debug_mouse = true; -        print("debug enabled.\n"); -    } -    if (matrix_key_count() >= 4) { -        print("jump to bootloader...\n"); -        _delay_ms(1000); -        jump_bootloader(); // not return -    } - - -    while (1) { -       keyboard_proc();  -    } -}  | 
