~ruther/qmk_firmware

738baccb8fdcb4fd7e4a2ae08fe92a63710be433 — tmk 12 years ago 8b9bd51 + 92b92dd
Merge branch 'locking_caps'
4 files changed, 38 insertions(+), 18 deletions(-)

M common/action.c
M common/keyboard.c
M common/keycode.h
M keyboard/gh60/config.h
M common/action.c => common/action.c +29 -1
@@ 23,6 23,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#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<<USB_LED_CAPS_LOCK)) return;
#endif
        host_add_key(KC_CAPSLOCK);
        host_send_keyboard_report();
        host_del_key(KC_CAPSLOCK);
        host_send_keyboard_report();
    }
#endif
    else if IS_KEY(code) {
        // TODO: should push command_proc out of this block?
        if (command_proc(code)) return;


@@ 914,7 927,22 @@ void register_code(uint8_t code)

void unregister_code(uint8_t code)
{
    if IS_KEY(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 off
        if (!(host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK))) return;
#endif
        host_add_key(KC_CAPSLOCK);
        host_send_keyboard_report();
        host_del_key(KC_CAPSLOCK);
        host_send_keyboard_report();
    }
#endif
    else if IS_KEY(code) {
        host_del_key(code);
        host_send_keyboard_report();
    }

M common/keyboard.c => common/keyboard.c +1 -0
@@ 134,5 134,6 @@ MATRIX_LOOP_END:

void keyboard_set_leds(uint8_t leds)
{
    if (debug_keyboard) { debug("keyboard_set_led: "); debug_hex8(leds); debug("\n"); }
    led_set(leds);
}

M common/keycode.h => common/keycode.h +1 -0
@@ 81,6 81,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#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 */

M keyboard/gh60/config.h => keyboard/gh60/config.h +7 -17
@@ 27,16 27,21 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#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 <http://www.gnu.org/licenses/>.
 */
#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