summaryrefslogtreecommitdiff
path: root/users/haervig/haervig.c
diff options
context:
space:
mode:
Diffstat (limited to 'users/haervig/haervig.c')
-rw-r--r--users/haervig/haervig.c234
1 files changed, 0 insertions, 234 deletions
diff --git a/users/haervig/haervig.c b/users/haervig/haervig.c
deleted file mode 100644
index 7a0d1aaadf..0000000000
--- a/users/haervig/haervig.c
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
-Copyright 2021 Jakob Hærvig <jakob.haervig@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/>.
-*/
-
-#include "haervig.h"
-
-#ifdef DANISH_ENABLE
-// These indicate if left and right shift are physically pressed
-bool lshift = false;
-bool rshift = false;
-
-// Interrupt and times for space cadet shift
-bool lshiftp = false;
-bool rshiftp = false;
-uint16_t lshift_timer = 0;
-uint16_t rshift_timer = 0;
-
-// Number of items that are saved in prev_kcs
-uint8_t prev_indx = 0;
-// Used to save the last 6 actual keycodes activated by frankenkeycodes
-uint16_t prev_kcs[6] = {0, 0, 0, 0, 0, 0};
-
-// If true the deadkey characters grave and circonflexe are not automatically escaped
-bool esct = false;
-
-/*
-Used to add a keycode to a prev_kcs to remember it.
-When full the last code gets discarded and replaced by
-the new one.
-*/
-void add_to_prev(uint16_t kc){
- for (int i=0; i<prev_indx; i++){
- if (kc == prev_kcs[i])
- return;
- }
- if (prev_indx == 6){
- for (int i=5; i>0; i--){
- prev_kcs[i] = prev_kcs[i-1];
- }
- prev_kcs[0] = kc;
- } else {
- prev_kcs[prev_indx] = kc;
- prev_indx++;
- }
-}
-
-/*
-Unregisters all codes saved in prev_kcs and resets prev_indx.
-gets called on multiple occasions mainly when shift is released
-and when frankenkeycodes are pressed. Prevents output of
-wrong characters when really specific key combinations
-that would never occur during normal usage are pressed.
-*/
-void unreg_prev(void){
- if (prev_indx == 0)
- return;
- for (int i=0; i<prev_indx; i++){
- unregister_code(prev_kcs[i]);
- }
- prev_indx = 0;
-}
-#endif
-
-// Interrupt and times for Nav/Esc
-bool navesc = false;
-uint16_t navesc_timer = 0;
-
-// Interrupts all timers
-void timer_timeout(void){
- #ifdef DANISH_ENABLE
- lshiftp = false;
- rshiftp = false;
- #endif
- navesc = false;
- timer_timeout_keymap();
-}
-
-__attribute__((weak))
-void timer_timeout_keymap(void){
-}
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case KC_LGUI:
- case KC_RGUI:
- if (record->event.pressed)
- timer_timeout();
- return true;
- case CU_NAV:
- if(record->event.pressed) {
- navesc = true;
- navesc_timer = timer_read();
- layer_on(_NAV);
- } else {
- if (timer_elapsed(navesc_timer) < TAPPING_TERM && navesc) {
- tap_code(KC_ESC);
- }
- layer_off(_NAV);
- }
- return false;
-
- #ifdef DANISH_ENABLE
- case CU_LSFT:
- if(record->event.pressed) {
- lshiftp = true;
- lshift_timer = timer_read();
- unregister_code(KC_LSFT);
- register_code(KC_LSFT);
- lshift = true;
- } else {
- if (timer_elapsed(lshift_timer) < TAPPING_TERM && lshiftp) {
- register_code(KC_LSFT);
- tap_code(KC_8);
- unregister_code(KC_LSFT);
- }
- unreg_prev();
- if (!rshift)
- unregister_code(KC_LSFT);
- lshift = false;
- }
- return false;
- case CU_RSFT:
- if(record->event.pressed) {
- rshiftp = true;
- rshift_timer = timer_read();
- unregister_code(KC_LSFT);
- register_code(KC_LSFT);
- rshift = true;
- } else {
- if (timer_elapsed(rshift_timer) < TAPPING_TERM && rshiftp) {
- register_code(KC_LSFT);
- tap_code(KC_9);
- unregister_code(KC_LSFT);
- }
- unreg_prev();
- if (!lshift)
- unregister_code(KC_LSFT);
- rshift = false;
- }
- return false;
- case CU_COMM:
- SHIFT_NO(DK_COMM, KC_GRV)
- case CU_DOT:
- SHIFT_NORM(DK_DOT, KC_GRV)
- case CU_SLSH:
- SHIFT_ALL(DK_7, KC_MINS)
- case CU_SCLN:
- SHIFT_ALL(DK_COMM, DK_DOT)
- case CU_QUOT:
- SHIFT_NORM(DK_QUOT, DK_2)
- case CU_2:
- NORM_ALGR(DK_2, KC_NUHS)
- case CU_4:
- if (record->event.pressed) {
- timer_timeout();
- if (lshift || rshift) {
- register_code(KC_LSFT);
- register_code(KC_ALGR);
- unregister_code(KC_3);
- tap_code(KC_3);
- unregister_code(KC_3);
- } else {
- unregister_code(KC_4);
- tap_code(KC_4);
- }
- unregister_code(KC_ALGR);
- unregister_code(KC_LSFT);
- }
- return false;
- case CU_6:
- SHIFT_NORM(DK_6, KC_RBRC)
- case CU_7:
- SHIFT_NORM(DK_7, DK_6)
- case CU_8:
- SHIFT_NORM(DK_8, KC_NUHS)
- case CU_9:
- SHIFT_NORM(DK_9, DK_8)
- case CU_0:
- SHIFT_NORM(DK_0, DK_9)
- case CU_MINS:
- SHIFT_NORM(KC_SLSH, KC_SLSH)
- case CU_EQL:
- SHIFT_SWITCH(DK_0, DK_PLUS)
- case CU_BSPC:
- SHIFT_NO(KC_BSPC, KC_DEL)
- case CU_LBRC:
- NORM_ALGRSHIFT(DK_8, DK_8)
- case CU_RBRC:
- NORM_ALGRSHIFT(DK_9, DK_9)
- case CU_BSLS:
- ALGR_SWITCH(DK_7, DK_I)
- case KC_LCTL:
- case KC_RCTL:
- if(!record->event.pressed) {
- timer_timeout();
- unregister_code(KC_Z);
- unregister_code(KC_Y);
- }
- return true;
- #endif
-
- default:
- if(record->event.pressed) {
- timer_timeout();
-
- #ifdef DANISH_ENABLE
- if (lshift || rshift)
- register_code(KC_LSFT);
- else
- unregister_code(KC_LSFT);
- #endif
-
- }
- return process_record_keymap(keycode, record);
- }
-}
-
-__attribute__((weak))
-bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
- return true;
-}