qmk-keychron-q3-colemak-dh/users/rverst/rverst.h

86 lines
2.4 KiB
C
Raw Normal View History

/* Copyright 2021 Robert Verst <robert@verst.eu> @rverst
*
* 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
#include QMK_KEYBOARD_H
enum userspace_mode {
MAC = 0,
WINDOWS,
MAC_UNI,
WINDOWS_UNI,
LINUX_UNI,
};
enum userspace_keycodes {
RV_NON = SAFE_RANGE,
RV_SM0, // set Mac Unicode mode
RV_SM1, // set Window Unicode mode
RV_SM2, // set Linux Unicode mode
RV_SM3, // set Mac lagecy mode
RV_SM4, // set Windows legacy mode
RV_SM0S, // set Mac Unicode mode and save
RV_SM1S, // set Windows Unicode mode and save
RV_SM2S, // set Linux Unicode and save
RV_SM3S, // set Mac legacy mode
RV_SM4S, // set Windows legacy and save
RV_SAYM, // say mode
RV_LOCK, // lock computer
RV_AUML, // äÄ
RV_OUML, // öÖ
RV_UUML, // üÜ
RV_EUR, // €
RV_SZ, // ߧ
RV_TM, // ™
RV_RT, // ®
RV_CC, // ©
RV_DEG, // °
RV_SNAP, // Screenshot
RV_PM, // ±
RV_UNEQ, // ≠
RV_SUP1, // ¹
RV_SUP2, // ²
RV_SUP3, // ³
RV_VINC, // vim increase vertical split size (<c-w> 4>)
RV_VDEC, // vim decrease vertical split size (<c-w> 4<)
RV_SINC, // vim increase vertical split size (<c-w> 4+)
RV_SDEC, // vim decrease vertical split size (<c-w> 4-)
RV_SEQU, // vim equal split size (<c-w> =)
};
typedef union {
uint32_t raw;
struct {
bool mode_1 : 1;
bool mode_2 : 1;
bool mode_3 : 1;
};
} userspace_config_t;
extern userspace_config_t userspace_config;
uint8_t get_mode(void);
void set_mode(uint8_t mode, bool save);
void switch_mode(uint8_t mode);
bool is_unicode(uint8_t mode);
void keyboard_pre_init_keymap(void);
void keyboard_post_init_keymap(void);
void eeconfig_init_keymap(void);
bool process_record_keymap(uint16_t keycode, keyrecord_t *record);