2021-03-17 22:44:21 +06:00
|
|
|
/* 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, // ³
|
2021-06-24 08:23:43 +06:00
|
|
|
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> =)
|
2021-03-17 22:44:21 +06:00
|
|
|
};
|
|
|
|
|
|
|
|
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);
|
|
|
|
|