/*
Copyright 2011 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/>.
*/
# pragma once
/* FIXME: Add doxygen comments for the behavioral defines in here. */
/* TODO: Refactoring */
typedef enum { ONESHOT , CONSOLE , MOUSEKEY } command_state_t ;
extern command_state_t command_state ;
/* This allows to extend commands. Return false when command is not processed. */
bool command_extra ( uint8_t code ) ;
bool command_console_extra ( uint8_t code ) ;
# ifdef COMMAND_ENABLE
uint8_t numkey2num ( uint8_t code ) ;
bool command_proc ( uint8_t code ) ;
# else
# define command_proc(code) false
# endif
# ifndef IS_COMMAND
# define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT)
# endif
# ifndef MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
# define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
# endif
# ifndef MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
# define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
# endif
# ifndef MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
# define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
# endif
# ifndef MAGIC_KEY_HELP
# define MAGIC_KEY_HELP H
# endif
# ifndef MAGIC_KEY_HELP_ALT
# define MAGIC_KEY_HELP_ALT SLASH
# endif
# ifndef MAGIC_KEY_DEBUG
# define MAGIC_KEY_DEBUG D
# endif
# ifndef MAGIC_KEY_DEBUG_MATRIX
# define MAGIC_KEY_DEBUG_MATRIX X
# endif
# ifndef MAGIC_KEY_DEBUG_KBD
# define MAGIC_KEY_DEBUG_KBD K
# endif
# ifndef MAGIC_KEY_DEBUG_MOUSE
# define MAGIC_KEY_DEBUG_MOUSE M
# endif
# ifndef MAGIC_KEY_VERSION
# define MAGIC_KEY_VERSION V
# endif
# ifndef MAGIC_KEY_STATUS
# define MAGIC_KEY_STATUS S
# endif
# ifndef MAGIC_KEY_CONSOLE
# define MAGIC_KEY_CONSOLE C
# endif
# ifndef MAGIC_KEY_LAYER0
# define MAGIC_KEY_LAYER0 0
# endif
# ifndef MAGIC_KEY_LAYER0_ALT
# define MAGIC_KEY_LAYER0_ALT GRAVE
# endif
# ifndef MAGIC_KEY_LAYER1
# define MAGIC_KEY_LAYER1 1
# endif
# ifndef MAGIC_KEY_LAYER2
# define MAGIC_KEY_LAYER2 2
# endif
# ifndef MAGIC_KEY_LAYER3
# define MAGIC_KEY_LAYER3 3
# endif
# ifndef MAGIC_KEY_LAYER4
# define MAGIC_KEY_LAYER4 4
# endif
# ifndef MAGIC_KEY_LAYER5
# define MAGIC_KEY_LAYER5 5
# endif
# ifndef MAGIC_KEY_LAYER6
# define MAGIC_KEY_LAYER6 6
# endif
# ifndef MAGIC_KEY_LAYER7
# define MAGIC_KEY_LAYER7 7
# endif
# ifndef MAGIC_KEY_LAYER8
# define MAGIC_KEY_LAYER8 8
# endif
# ifndef MAGIC_KEY_LAYER9
# define MAGIC_KEY_LAYER9 9
# endif
# ifndef MAGIC_KEY_BOOTLOADER
# define MAGIC_KEY_BOOTLOADER B
# endif
# ifndef MAGIC_KEY_BOOTLOADER_ALT
# define MAGIC_KEY_BOOTLOADER_ALT ESC
# endif
# ifndef MAGIC_KEY_LOCK
# define MAGIC_KEY_LOCK CAPS
# endif
# ifndef MAGIC_KEY_EEPROM
# define MAGIC_KEY_EEPROM E
# endif
# ifndef MAGIC_KEY_EEPROM_CLEAR
# define MAGIC_KEY_EEPROM_CLEAR BSPACE
# endif
# ifndef MAGIC_KEY_NKRO
# define MAGIC_KEY_NKRO N
# endif
# ifndef MAGIC_KEY_SLEEP_LED
# define MAGIC_KEY_SLEEP_LED Z
# endif
# define XMAGIC_KC(key) KC_ ## key
# define MAGIC_KC(key) XMAGIC_KC(key)