2013-02-15 04:47:41 +00:00
/*
Copyright 2013 Jun Wako < wakojun @ gmail . com >
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 < http : //www.gnu.org/licenses/>.
*/
2013-02-15 09:48:36 +00:00
# ifndef LAYER_SWITCH_H
# define LAYER_SWITCH_H
2013-02-15 04:47:41 +00:00
# include <stdint.h>
2013-02-15 09:48:36 +00:00
# include "keyboard.h"
2013-02-15 04:47:41 +00:00
# include "action.h"
2013-02-20 02:16:13 +00:00
/* overlays are asigned at layer 16-31 */
# define OVERLAY_BIT 0x10
# define OVERLAY_MASK 0x0F
/*
* Default Layer
*/
2013-02-15 19:05:58 +00:00
/* base layer to fall back */
extern uint8_t default_layer ;
2013-02-20 02:16:13 +00:00
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 ) ;
2013-02-15 19:05:58 +00:00
2013-02-20 02:16:13 +00:00
/*
* Overlay Layer
*/
extern uint16_t overlay_stat ;
2013-02-15 19:05:58 +00:00
/* return current active layer */
2013-02-20 02:16:13 +00:00
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 ) ;
2013-02-15 19:05:58 +00:00
/* return action depending on current layer status */
2013-02-15 09:48:36 +00:00
action_t layer_switch_get_action ( key_t key ) ;
2013-02-15 04:47:41 +00:00
# endif