/* ----------------------------------------------------------------------------
 * key functions : public exports
 * ----------------------------------------------------------------------------
 * Copyright (c) 2012 Ben Blazak <benblazak.dev@gmail.com>
 * Released under The MIT License (MIT) (see "license.md")
 * Project located at <https://github.com/benblazak/ergodox-firmware>
 * ------------------------------------------------------------------------- */

#pragma once

#include <avr/interrupt.h>
#include <util/delay.h>
#include <stdbool.h>
#include <stdint.h>
#include "../main.h"
#include "../keyboard/layout.h"
#include "../lib/keyboard.h"

// --------------------------------------------------------------------

// basic
void kbfun_press_release                	(void);
void kbfun_press_release_preserve_sticky	(void);
void kbfun_toggle                       	(void);
void kbfun_transparent                  	(void);

// layer functions
void kbfun_layer_enable 	(void);
void kbfun_layer_sticky 	(void);
void kbfun_layer_disable	(void);

// device
void kbfun_jump_to_bootloader (void);

// special
void kbfun_shift_press_release          	(void);
void kbfun_control_press_release        	(void);
void kbfun_2_keys_capslock_press_release	(void);
void kbfun_mediakey_press_release       	(void);

// private
void   	_kbfun_press_release         	(bool press, uint8_t keycode);
bool   	_kbfun_is_pressed            	(uint8_t keycode);
void   	_kbfun_mediakey_press_release	(bool press, uint8_t keycode);
uint8_t	_kbfun_get_keycode           	(void);

// device
void kbfun_jump_to_bootloader(void);
