From 92b92dd78f5488981244d353f2d500ad9d82fc49 Mon Sep 17 00:00:00 2001 From: tmk Date: Tue, 12 Mar 2013 01:07:06 +0900 Subject: [PATCH] Add mechanical locking switch support for CapsLock --- common/action.c | 30 +++++++++++++++++++++++++++++- common/keyboard.c | 1 + common/keycode.h | 1 + keyboard/gh60/config.h | 24 +++++++----------------- 4 files changed, 38 insertions(+), 18 deletions(-) diff --git a/common/action.c b/common/action.c index 15e125a3..4fafbfa7 100644 --- a/common/action.c +++ b/common/action.c @@ -23,6 +23,7 @@ along with this program. If not, see . #include "command.h" #include "util.h" #include "debug.h" +#include "led.h" #include "layer_switch.h" #include "action_macro.h" #include "action.h" @@ -889,6 +890,18 @@ void register_code(uint8_t code) if (code == KC_NO) { return; } +#ifdef CAPSLOCK_LOCKING_ENABLE + else if (KC_LOCKING_CAPS == code) { +#ifdef CAPSLOCK_LOCKING_RESYNC_ENABLE + // Resync: ignore if caps lock already is on + if (host_keyboard_leds() & (1<. #define KC_APP KC_APPLICATION #define KC_NUHS KC_NONUS_HASH #define KC_NUBS KC_NONUS_BSLASH +#define KC_LCAP KC_LOCKING_CAPS #define KC_ERAS KC_ALT_ERASE, #define KC_CLR KC_CLEAR /* Japanese specific */ diff --git a/keyboard/gh60/config.h b/keyboard/gh60/config.h index cd98395e..bd0a19c3 100644 --- a/keyboard/gh60/config.h +++ b/keyboard/gh60/config.h @@ -27,16 +27,21 @@ along with this program. If not, see . #define PRODUCT GH60 #define DESCRIPTION t.m.k. keyboard firmware for GH60 -/* matrix size */ +/* key matrix size */ #define MATRIX_ROWS 5 #define MATRIX_COLS 14 /* define if matrix has ghost */ //#define MATRIX_HAS_GHOST -/* Set 0 if need no debouncing */ +/* Set 0 if debouncing isn't needed */ #define DEBOUNCE 5 +/* Mechanical locking CapsLock support. Use KC_LCAP instead of KC_CAPS in keymap */ +#define CAPSLOCK_LOCKING_ENABLE +/* Locking CapsLock resynchronize hack, which won't work on Linux */ +#define CAPSLOCK_LOCKING_RESYNC_ENABLE + /* key combination for command */ #define IS_COMMAND() ( \ keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ @@ -51,20 +56,5 @@ along with this program. If not, see . */ #define BOOTLOADER_SIZE 4096 -/* - * Boot magic keys - * call some function by pressing key when pluging cable or powering on. - */ -/* key position on matrix(ROW:COL) */ -#define KEY_FN 0x4A -#define KEY_D 0x23 -#define KEY_ESC 0x00 -#define KEY_IS_ON(key) matrix_is_on((key)>>4, (key)&0xF) -/* kick up bootloader */ -#define IS_BOOTMAGIC_BOOTLOADER() KEY_IS_ON(KEY_FN) -/* debug on */ -#define IS_BOOTMAGIC_DEBUG() KEY_IS_ON(KEY_D) -/* eeprom clear */ -#define IS_BOOTMAGIC_EEPROM_CLEAR() KEY_IS_ON(KEY_ESC) #endif -- 2.46.2