fixed hhkb to comply new API.
This commit is contained in:
parent
60052acc0f
commit
d2b9489a5e
8 changed files with 33 additions and 123 deletions
|
@ -32,7 +32,7 @@ uint8_t command_proc(void)
|
||||||
uint8_t processed = 1;
|
uint8_t processed = 1;
|
||||||
bool last_print_enable = print_enable;
|
bool last_print_enable = print_enable;
|
||||||
print_enable = true;
|
print_enable = true;
|
||||||
switch (keyboard_report->keys[0]) {
|
switch (host_get_first_key()) {
|
||||||
case KB_H:
|
case KB_H:
|
||||||
help();
|
help();
|
||||||
break;
|
break;
|
||||||
|
@ -89,7 +89,7 @@ uint8_t command_proc(void)
|
||||||
print("timer: "); phex16(timer_count); print("\n");
|
print("timer: "); phex16(timer_count); print("\n");
|
||||||
break;
|
break;
|
||||||
case KB_P: // print toggle
|
case KB_P: // print toggle
|
||||||
if (print_enable) {
|
if (last_print_enable) {
|
||||||
print("print disabled.\n");
|
print("print disabled.\n");
|
||||||
last_print_enable = false;
|
last_print_enable = false;
|
||||||
} else {
|
} else {
|
||||||
|
@ -107,6 +107,7 @@ uint8_t command_proc(void)
|
||||||
break;
|
break;
|
||||||
#ifdef USB_NKRO_ENABLE
|
#ifdef USB_NKRO_ENABLE
|
||||||
case KB_N:
|
case KB_N:
|
||||||
|
// send empty report before change
|
||||||
host_clear_keyboard_report();
|
host_clear_keyboard_report();
|
||||||
host_send_keyboard_report();
|
host_send_keyboard_report();
|
||||||
keyboard_nkro = !keyboard_nkro;
|
keyboard_nkro = !keyboard_nkro;
|
||||||
|
|
|
@ -8,11 +8,13 @@ COMMON_DIR = ..
|
||||||
TARGET_DIR = .
|
TARGET_DIR = .
|
||||||
|
|
||||||
# keyboard dependent files
|
# keyboard dependent files
|
||||||
TARGET_SRC = tmk.c \
|
TARGET_SRC = main_pjrc.c \
|
||||||
keymap.c \
|
keymap.c \
|
||||||
matrix.c \
|
matrix.c \
|
||||||
led.c
|
led.c
|
||||||
|
|
||||||
|
CONFIG_H = config.h
|
||||||
|
|
||||||
|
|
||||||
# MCU name, you MUST set this to match the board you are using
|
# 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
|
# 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
|
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.pjrc
|
||||||
include $(COMMON_DIR)/Makefile.common
|
include $(COMMON_DIR)/Makefile.common
|
||||||
|
|
|
@ -10,26 +10,27 @@
|
||||||
#define PRODUCT HHKB mod
|
#define PRODUCT HHKB mod
|
||||||
#define DESCRIPTION t.m.k. keyboard firmware for HHKB mod
|
#define DESCRIPTION t.m.k. keyboard firmware for HHKB mod
|
||||||
|
|
||||||
|
|
||||||
/* matrix size */
|
/* matrix size */
|
||||||
#define MATRIX_ROWS 8
|
#define MATRIX_ROWS 8
|
||||||
#define MATRIX_COLS 8
|
#define MATRIX_COLS 8
|
||||||
|
|
||||||
/* define if matrix has ghost */
|
/* define if matrix has ghost */
|
||||||
//#define MATRIX_HAS_GHOST
|
//#define MATRIX_HAS_GHOST
|
||||||
|
|
||||||
|
|
||||||
/* key combination for command */
|
/* 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 */
|
/* mouse keys */
|
||||||
#ifdef MOUSEKEY_ENABLE
|
#ifdef MOUSEKEY_ENABLE
|
||||||
# define MOUSEKEY_DELAY_TIME 192
|
# define MOUSEKEY_DELAY_TIME 192
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* PS/2 mouse */
|
/* PS/2 mouse */
|
||||||
#ifdef PS2_MOUSE_ENABLE
|
#ifdef PS2_MOUSE_ENABLE
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
#include "print.h"
|
#include "print.h"
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "keymap_skel.h"
|
#include "keymap.h"
|
||||||
|
|
||||||
|
|
||||||
// Convert physical keyboard layout to matrix array.
|
// 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))]);
|
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 <util/delay.h>
|
||||||
#include "print.h"
|
#include "print.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "matrix_skel.h"
|
#include "matrix.h"
|
||||||
|
|
||||||
|
|
||||||
#if (MATRIX_COLS > 16)
|
#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_swap_keyboard_report(void);
|
||||||
void host_clear_keyboard_report(void);
|
void host_clear_keyboard_report(void);
|
||||||
uint8_t host_has_anykey(void);
|
uint8_t host_has_anykey(void);
|
||||||
uint8_t *host_get_keys(void);
|
uint8_t host_get_first_key(void);
|
||||||
uint8_t host_get_mods(void);
|
|
||||||
|
|
||||||
|
|
||||||
void host_send_keyboard_report(void);
|
void host_send_keyboard_report(void);
|
||||||
|
|
18
pjrc/host.c
18
pjrc/host.c
|
@ -4,6 +4,7 @@
|
||||||
#include "usb_mouse.h"
|
#include "usb_mouse.h"
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
#include "host.h"
|
#include "host.h"
|
||||||
|
#include "util.h"
|
||||||
|
|
||||||
|
|
||||||
#ifdef USB_NKRO_ENABLE
|
#ifdef USB_NKRO_ENABLE
|
||||||
|
@ -80,14 +81,17 @@ uint8_t host_has_anykey(void)
|
||||||
return cnt;
|
return cnt;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t *host_get_keys(void)
|
uint8_t host_get_first_key(void)
|
||||||
{
|
{
|
||||||
return keyboard_report->keys;
|
#ifdef USB_NKRO_ENABLE
|
||||||
}
|
if (keyboard_nkro) {
|
||||||
|
uint8_t i = 0;
|
||||||
uint8_t host_get_mods(void)
|
for (; i < REPORT_KEYS && !keyboard_report->keys[i]; i++)
|
||||||
{
|
;
|
||||||
return keyboard_report->mods;
|
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…
Reference in a new issue