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);
|
||||
|
16
pjrc/host.c
16
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;
|
||||
#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]);
|
||||
}
|
||||
|
||||
uint8_t host_get_mods(void)
|
||||
{
|
||||
return keyboard_report->mods;
|
||||
#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();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user