From d9f287586635a401b8d6a80614bee6dbebe2f18c Mon Sep 17 00:00:00 2001 From: tmk Date: Fri, 15 Feb 2013 18:48:36 +0900 Subject: Replace layer_stack with layer_switch --- common/layer_switch.h | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 common/layer_switch.h (limited to 'common/layer_switch.h') diff --git a/common/layer_switch.h b/common/layer_switch.h new file mode 100644 index 0000000000..9f0695260c --- /dev/null +++ b/common/layer_switch.h @@ -0,0 +1,36 @@ +/* +Copyright 2013 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#ifndef LAYER_SWITCH_H +#define LAYER_SWITCH_H + +#include +#include "keyboard.h" +#include "action.h" + +uint16_t layer_switch_stat; + +uint16_t layer_switch_stat_get(void); +void layer_switch_stat_set(uint16_t stat); +void layer_switch_clear(void); +void layer_switch_on(uint8_t layer); +void layer_switch_off(uint8_t layer); +/* invert state */ +void layer_switch_inv(uint8_t layer); +void layer_switch_debug(void); +action_t layer_switch_get_action(key_t key); + +#endif -- cgit v1.2.3 From e324fa29187dff7868d9d7fd378e0e46d77107a5 Mon Sep 17 00:00:00 2001 From: tmk Date: Sat, 16 Feb 2013 04:05:58 +0900 Subject: Rewrite layer action with layer_switch --- common/layer_switch.h | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) (limited to 'common/layer_switch.h') diff --git a/common/layer_switch.h b/common/layer_switch.h index 9f0695260c..25c81a5dc2 100644 --- a/common/layer_switch.h +++ b/common/layer_switch.h @@ -21,16 +21,39 @@ along with this program. If not, see . #include "keyboard.h" #include "action.h" -uint16_t layer_switch_stat; -uint16_t layer_switch_stat_get(void); -void layer_switch_stat_set(uint16_t stat); +/* base layer to fall back */ +extern uint8_t default_layer; + +/* layer status */ +extern uint16_t layer_switch_stat; + +/* return layer status */ +uint16_t layer_switch_get_stat(void); +/* return current active layer */ +uint8_t layer_switch_get_layer(void); + +/* switch off all layers */ void layer_switch_clear(void); +/* set layer status */ +void layer_switch_set(uint16_t stat); +/* move to layer */ +void layer_switch_move(uint8_t layer); +/* switch on layer */ void layer_switch_on(uint8_t layer); +/* switch off layer */ void layer_switch_off(uint8_t layer); -/* invert state */ -void layer_switch_inv(uint8_t layer); +/* switch state of layer */ +void layer_switch_invert(uint8_t layer); + +/* bitwise operation against layer status */ +void layer_switch_or(uint16_t stat); +void layer_switch_and(uint16_t stat); +void layer_switch_xor(uint16_t stat); + void layer_switch_debug(void); + +/* return action depending on current layer status */ action_t layer_switch_get_action(key_t key); #endif -- cgit v1.2.3 From e0f960a576e090808e5cc25c5368441c11f36ea6 Mon Sep 17 00:00:00 2001 From: tmk Date: Wed, 20 Feb 2013 11:16:13 +0900 Subject: Add overlay framework --- common/layer_switch.h | 71 +++++++++++++++++++++++++++++++++------------------ 1 file changed, 46 insertions(+), 25 deletions(-) (limited to 'common/layer_switch.h') diff --git a/common/layer_switch.h b/common/layer_switch.h index 25c81a5dc2..a566ab12b7 100644 --- a/common/layer_switch.h +++ b/common/layer_switch.h @@ -22,36 +22,57 @@ along with this program. If not, see . #include "action.h" +/* overlays are asigned at layer 16-31 */ +#define OVERLAY_BIT 0x10 +#define OVERLAY_MASK 0x0F + + +/* + * Default Layer + */ /* base layer to fall back */ extern uint8_t default_layer; +void default_layer_set(uint8_t layer); + + +/* + * Keymap Layer + */ +extern uint16_t keymap_stat; +/* return current active layer */ +uint8_t keymap_get_layer(void); +void keymap_clear(void); +void keymap_set(uint16_t stat); +void keymap_move(uint8_t layer); +void keymap_on(uint8_t layer); +void keymap_off(uint8_t layer); +void keymap_invert(uint8_t layer); +/* bitwise operation */ +void keymap_or(uint16_t stat); +void keymap_and(uint16_t stat); +void keymap_xor(uint16_t stat); +void keymap_debug(void); -/* layer status */ -extern uint16_t layer_switch_stat; -/* return layer status */ -uint16_t layer_switch_get_stat(void); +/* + * Overlay Layer + */ +extern uint16_t overlay_stat; /* return current active layer */ -uint8_t layer_switch_get_layer(void); - -/* switch off all layers */ -void layer_switch_clear(void); -/* set layer status */ -void layer_switch_set(uint16_t stat); -/* move to layer */ -void layer_switch_move(uint8_t layer); -/* switch on layer */ -void layer_switch_on(uint8_t layer); -/* switch off layer */ -void layer_switch_off(uint8_t layer); -/* switch state of layer */ -void layer_switch_invert(uint8_t layer); - -/* bitwise operation against layer status */ -void layer_switch_or(uint16_t stat); -void layer_switch_and(uint16_t stat); -void layer_switch_xor(uint16_t stat); - -void layer_switch_debug(void); +uint8_t overlay_get_layer(void); +void overlay_clear(void); +void overlay_set(uint16_t stat); +void overlay_move(uint8_t layer); +void overlay_on(uint8_t layer); +void overlay_off(uint8_t layer); +void overlay_invert(uint8_t layer); +/* bitwise operation */ +void overlay_or(uint16_t stat); +void overlay_and(uint16_t stat); +void overlay_xor(uint16_t stat); +void overlay_debug(void); + + /* return action depending on current layer status */ action_t layer_switch_get_action(key_t key); -- cgit v1.2.3