fixed hhkb to comply new API.
This commit is contained in:
		
							parent
							
								
									60052acc0f
								
							
						
					
					
						commit
						d2b9489a5e
					
				@ -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;
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
 | 
			
		||||
@ -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))
 | 
			
		||||
#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
 | 
			
		||||
/*
 | 
			
		||||
 | 
			
		||||
@ -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);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -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)
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										3
									
								
								host.h
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								host.h
									
									
									
									
									
								
							@ -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);
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										18
									
								
								pjrc/host.c
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								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];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										97
									
								
								tmk.c
									
									
									
									
									
								
							
							
						
						
									
										97
									
								
								tmk.c
									
									
									
									
									
								
							@ -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(); 
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user