summary refs log tree commit diff
path: root/users
diff options
context:
space:
mode:
authorPavlos Vinieratos <pvinis@gmail.com>2019-05-14 21:02:22 +0200
committerDrashna Jaelre <drashna@live.com>2019-05-14 12:02:22 -0700
commitb68d8fe82eac0be9ca8862fdf94ae4bfbbb0735e (patch)
tree788dc925e12ec699f192dcde04096b96abde4da6 /users
parent4cdb86c730528c8ca5ff90f5b9b01c395d31fc0e (diff)
[Keymap] Pvinis master (#5843)
* trying to make my global keymap

* refactoring the old keymap using userspace

* getting there

* move readme and remove community layout

* use pragma once instead of ifndefs

* just make iris work

* iris decent

* better naming

* add some modifiers on the home row

* use symbol and sysctl layers

* fix up

* a bit faster

* add < and > on symbol layer

* apparently im not using z all that much..

* okok

* fix up stuff

* led init is back

* bring back led indicators

* Update keyboards/ergotravel/keymaps/pvinis/config.h

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* not needed

* not needed

* delete these for now, until I use the userspace code

* remove katamari from here. made a new pr for it

* lower case

* drashna suggestion :)

* move files to correct place

* fix missing command
Diffstat (limited to 'users')
-rw-r--r--users/pvinis/config.h9
-rw-r--r--users/pvinis/pvinis.c79
-rw-r--r--users/pvinis/pvinis.h152
-rw-r--r--users/pvinis/rules.mk15
4 files changed, 255 insertions, 0 deletions
diff --git a/users/pvinis/config.h b/users/pvinis/config.h
new file mode 100644
index 0000000000..7f17f2d023
--- /dev/null
+++ b/users/pvinis/config.h
@@ -0,0 +1,9 @@
+#pragma once
+
+#ifdef AUDIO_ENABLE
+// #define STARTUP_SONG SONG(SONIC_RING)
+#endif
+
+// allow rolling when keys have hold functionality
+#define IGNORE_MOD_TAP_INTERRUPT
+// #define TAPPING_TERM 150
diff --git a/users/pvinis/pvinis.c b/users/pvinis/pvinis.c
new file mode 100644
index 0000000000..7544035794
--- /dev/null
+++ b/users/pvinis/pvinis.c
@@ -0,0 +1,79 @@
+#include "pvinis.h"
+#include "version.h"
+
+#ifdef AUDIO_ENABLE
+#include "audio.h"
+#endif // AUDIO_ENABLE
+
+
+#ifdef AUDIO_ENABLE
+// float tone_katamari_rolling_star[][2] = SONG(KATAMARI_ROLLING_STAR);
+#endif // AUDIO_ENABLE
+
+
+// SYMBOL + SYSCTL = KBCTL
+uint32_t layer_state_set_user(uint32_t state) {
+  uint32_t intermediate_state = update_tri_layer_state(state, LR_SYMBOL, LR_SYSCTL, LR_KBCTL);
+  intermediate_state = layer_state_set_user_local(intermediate_state);
+  return intermediate_state;
+}
+
+
+// functions for the individual keymaps to implement if they need something extra
+__attribute__ ((weak))
+bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
+  return true;
+}
+
+
+// handle my own keycodes
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  switch (keycode) {
+
+    case PV_VRSN:
+      if (record->event.pressed) {
+        SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+      }
+      return false;
+
+    case PV_MAKE:
+      if (!record->event.pressed) {
+        SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP
+#if (defined(BOOTLOADER_DFU) || defined(BOOTLOADER_LUFA_DFU) || defined(BOOTLOADER_QMK_DFU))
+          ":dfu"
+#elif defined(BOOTLOADER_HALFKAY)
+          ":teensy"
+#elif defined(BOOTLOADER_CATERINA)
+          ":avrdude"
+#endif
+          SS_TAP(X_ENTER)
+        );
+      }
+      return false;
+
+    case PV_FLSH:
+      reset_keyboard();
+      return false;
+
+    case PV_KTMR:
+      if (record->event.pressed) {
+#ifdef AUDIO_ENABLE
+        // PLAY_SONG(tone_katamari_rolling_star);
+#endif
+      }
+      return false;
+  }
+  return process_record_keymap(keycode, record);
+}
+
+
+#ifdef TAP_DANCE_ENABLE
+qk_tap_dance_action_t tap_dance_actions[] = {
+};
+#endif // TAP_DANCE_ENABLE
+
+
+// init stuff
+void keyboard_post_init_user(void) {
+    keyboard_post_init_user_local();
+}
diff --git a/users/pvinis/pvinis.h b/users/pvinis/pvinis.h
new file mode 100644
index 0000000000..0c5e2841a1
--- /dev/null
+++ b/users/pvinis/pvinis.h
@@ -0,0 +1,152 @@
+#pragma once
+
+#include "quantum.h"
+
+
+// my own keycodes
+enum userspace_custom_keycodes {
+  PV_ = SAFE_RANGE,
+
+  PV_VRSN, // prints firmware version
+  PV_MAKE, // prints the make command of the keyboard
+  PV_FLSH, // resets keyboard
+  PV_KTMR, // play katamari music
+
+  PV_SAFE_RANGE, // used for extra keycodes in the individual keymaps
+};
+
+enum tap_dance_indexes {
+  // tap dance
+  TD_FLSH, // flash keyboard (as if the physical flash key was pressed)
+};
+
+#define ALLM(kc) LCAG(kc)           // easier name for left ctrl-alt-gui
+#define PV_ESCC  CTL_T(KC_ESC)      // esc on tap, ctrl on hold
+#define PV_LOCK  LCTL(LSFT(KC_PWR)) // lock computer
+#define TD_3FLS  TD(TD_FLSH)        // tap dance 3 times for flash
+
+
+// layers
+enum {
+  LR_BASE = 0, // used for basic keys like the surrounding ctrl, cmd, etc
+
+  LR_QWERTY,
+  LR_CARPALX,
+
+  LR_SYMBOL, // symbol input (!, @, #, etc)
+  LR_SYSCTL, // system control (music, volume, keyboard flash, etc)
+  LR_KBCTL,  // keyboard control (version, make, flash, etc)
+};
+
+
+// layer switchers
+#define BASE    TO(LR_BASE)
+#define QWERTY  TO(LR_QWERTY)
+#define CARPALX TO(LR_CARPALX)
+
+#define SYMBOL  MO(LR_SYMBOL)
+#define SYSCTL  MO(LR_SYSCTL)
+#define KBCTL   MO(LR_KBCTL)
+
+
+// layout parts for easy reuse between keyboard keymaps
+
+// ,-----+-----+-----+-----+-----,   ,-----+-----+-----+-----+-----,
+// |  1  |  2  |  3  |  4  |  5  |   |  6  |  7  |  8  |  9  |  0  |
+// ,-----+-----+-----+-----+-----,   ,-----+-----+-----+-----+-----,
+#define ________________NUMBERS_L__________________  KC_1, KC_2, KC_3, KC_4, KC_5
+#define ________________NUMBERS_R__________________  KC_6, KC_7, KC_8, KC_9, KC_0
+
+// ,-----+-----+-----+-----+-----,   ,-----+-----+-----+-----+-----,
+// | F1  | F2  | F3  | F4  | F5  |   | F6  | F7  | F8  | F9  | F10 |
+// ,-----+-----+-----+-----+-----,   ,-----+-----+-----+-----+-----,
+#define ______________________F_L__________________  KC_F1, KC_F2, KC_F3, KC_F4, KC_F5
+#define ______________________F_R__________________  KC_F6, KC_F7, KC_F8, KC_F9, KC_F10
+
+// ,-----+-----+-----+-----+-----,   ,-----+-----+-----+-----+-----,
+// |  Q  |  W  |  E  |  R  |  T  |   |  Y  |  U  |  I  |  O  |  P  |
+// ,-----+-----+-----x-----x-----,   ,-----x-----x-----+-----+-----,
+// |  A  |  S  |  D  |  F  |  G  |   |  H  |  J  |  K  |  L  |  ;  |
+// ,-----+-----+-----x-----x-----,   ,-----x-----x-----+-----+-----,
+// |  Z  |  X  |  C  |  V  |  B  |   |  N  |  M  |  ,  |  .  |  /  |
+// ,-----+-----+-----+-----+-----,   ,-----+-----+-----+-----+-----,
+#define _________________QWERTY_L1_________________  KC_Q   , KC_W   , KC_E   , KC_R   , KC_T
+#define _________________QWERTY_L2_________________  KC_A   , KC_S   , KC_D   , KC_F   , KC_G
+#define _________________QWERTY_L3_________________  KC_Z   , KC_X   , KC_C   , KC_V   , KC_B
+
+#define _________________QWERTY_R1_________________  KC_Y   , KC_U   , KC_I   , KC_O   , KC_P
+#define _________________QWERTY_R2_________________  KC_H   , KC_J   , KC_K   , KC_L   , KC_SCLN
+#define _________________QWERTY_R3_________________  KC_N   , KC_M   , KC_COMM, KC_DOT , KC_SLSH
+
+#define _____________MOD_QWERTY_L2_________________  KC_A   , SFT_T(KC_S), GUI_T(KC_D), KC_F       , KC_G
+#define _____________MOD_QWERTY_R2_________________  KC_H   , KC_J       , GUI_T(KC_K), SFT_T(KC_L), KC_SCLN
+
+// ,-----+-----+-----+-----+-----,   ,-----+-----+-----+-----+-----,
+// |  Q  |  G  |  M  |  L  |  W  |   |  Y  |  F  |  I  |  O  |  P  |
+// ,-----+-----+-----x-----x-----,   ,-----x-----x-----+-----+-----,
+// |  D  |  S  |  T  |  N  |  R  |   |  I  |  A  |  K  |  L  |  ;  |
+// ,-----+-----+-----x-----x-----,   ,-----x-----x-----+-----+-----,
+// |  Z  |  X  |  C  |  V  |  J  |   |  K  |  P  |  ,  |  .  |  /  |
+// ,-----+-----+-----+-----+-----,   ,-----+-----+-----+-----+-----,
+#define ________________CARPALX_L1_________________  KC_Q   , KC_G   , KC_M   , KC_L   , KC_W
+#define ________________CARPALX_L2_________________  KC_D   , KC_S   , KC_T   , KC_N   , KC_R
+#define ________________CARPALX_L3_________________  KC_Z   , KC_X   , KC_C   , KC_V   , KC_J
+
+#define ________________CARPALX_R1_________________  KC_Y   , KC_F   , KC_U   , KC_B   , KC_SCLN
+#define ________________CARPALX_R2_________________  KC_I   , KC_A   , KC_E   , KC_O   , KC_H
+#define ________________CARPALX_R3_________________  KC_K   , KC_P   , KC_COMM, KC_DOT , KC_SLSH
+
+// ,-----+-----+-----+-----+-----,   ,-----+-----+-----+-----+-----,
+// |  !  |  @  |  {  |  }  |  _  |   |  \  |     |  `  |     |     |
+// ,-----+-----+-----x-----x-----,   ,-----x-----x-----+-----+-----,
+// |  #  |  $  |  (  |  )  |  -  |   |  =  |  &  |  '  |  "  |  |  |
+// ,-----+-----+-----x-----x-----,   ,-----x-----x-----+-----+-----,
+// |  %  |  ^  |  [  |  ]  |  +  |   |  *  |  ~  |  <  |  >  |  /  |
+// ,-----+-----+-----+-----+-----,   ,-----+-----+-----+-----+-----,
+#define _________________SYMBOL_L1_________________  KC_EXLM, KC_AT  , KC_LCBR, KC_RCBR, KC_UNDS
+#define _________________SYMBOL_L2_________________  KC_HASH, KC_DLR , KC_LPRN, KC_RPRN, KC_MINS
+#define _________________SYMBOL_L3_________________  KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_PLUS
+
+#define _________________SYMBOL_R1_________________  KC_BSLS, _______, KC_GRV , _______, _______
+#define _________________SYMBOL_R2_________________  KC_EQL , KC_AMPR, KC_QUOT, KC_DQUO, KC_PIPE
+#define _________________SYMBOL_R3_________________  KC_ASTR, KC_TILD, KC_LABK, KC_RABK, KC_SLSH
+
+// ,-----+-----+-----+-----+-----,   ,-----+-----+-----+-----+-----,
+// |     |     |     |     |     |   |MUTE |HOME |  ^  | END |     |
+// ,-----+-----+-----x-----x-----,   ,-----x-----x-----+-----+-----,
+// |     |     |     |     |     |   |VOLUP|  <  |  v  |  >  |     |
+// ,-----+-----+-----x-----x-----,   ,-----x-----x-----+-----+-----,
+// |     |     |     |     |     |   |VOLDN|MPREV|MPLAY|MNEXT|     |
+// ,-----+-----+-----+-----+-----,   ,-----+-----+-----+-----+-----,
+#define _________________SYSCTL_L1_________________
+#define _________________SYSCTL_L2_________________
+#define _________________SYSCTL_L3_________________
+
+//                                                    vol v                                                 ctl v
+#define _________________SYSCTL_R1_________________  KC_MUTE , KC_HOME , KC_UP   , KC_END                 , PV_LOCK
+#define _________________SYSCTL_R2_________________  KC_VOLU , KC_LEFT , KC_DOWN , KC_RGHT /* < arrows */ , KC_SLEP
+#define _________________SYSCTL_R3_________________  KC_VOLD , KC_MPRV , KC_MPLY , KC_MNXT /* < music */  , KC_PWR
+
+// ,-----+-----+-----+-----+-----,   ,-----+-----+-----+-----+-----,
+// |XXXXX|XXXXX|XXXXX|XXXXX|XXXXX|   |XXXXX|XXXXX|XXXXX|XXXXX|XXXXX|
+// ,-----+-----+-----x-----x-----,   ,-----x-----x-----+-----+-----,
+// |XXXXX|XXXXX|XXXXX|XXXXX|XXXXX|   |XXXXX|VERSN|MAKE |FLASH|XXXXX|
+// ,-----+-----+-----x-----x-----,   ,-----x-----x-----+-----+-----,
+// |XXXXX|XXXXX|XXXXX|XXXXX|XXXXX|   |XXXXX|XXXXX|XXXXX|XXXXX|XXXXX|
+// ,-----+-----+-----+-----+-----,   ,-----+-----+-----+-----+-----,
+#define __________________KBCTL_L1_________________  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+#define __________________KBCTL_L2_________________  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+#define __________________KBCTL_L3_________________  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+
+#define __________________KBCTL_R1_________________  XXXXXXX, XXXXXXX, XXXXXXX, PV_KTMR, XXXXXXX
+#define __________________KBCTL_R2_________________  XXXXXXX, PV_VRSN, PV_MAKE, PV_FLSH, XXXXXXX
+#define __________________KBCTL_R3_________________  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+
+// we need wrappers in order for these definitions, because they need to be expanded before being used as arguments to the LAYOUT_xxx macro
+#define LAYOUT_ergodox_pretty_wrapper(...)  LAYOUT_ergodox_pretty(__VA_ARGS__)
+#define LAYOUT_wrapper(...)                 LAYOUT(__VA_ARGS__)
+
+
+// extra stuff that might be needed
+void keyboard_post_init_user_local(void);
+uint32_t layer_state_set_user_local(uint32_t state);
diff --git a/users/pvinis/rules.mk b/users/pvinis/rules.mk
new file mode 100644
index 0000000000..da10cc7437
--- /dev/null
+++ b/users/pvinis/rules.mk
@@ -0,0 +1,15 @@
+# add userspace file
+SRC += pvinis.c
+
+AUDIO_ENABLE     = no  # piezo speaker sounds
+RGBLIGHT_ENABLE  = no  # rgb leds underlight
+TAP_DANCE_ENABLE = yes
+BACKLIGHT_ENABLE = no  # leds under keycaps
+#MOUSEKEY_ENABLE  = no
+#SLEEP_LED_ENABLE = no  # no led blinking while sleeping
+#NKRO_ENABLE      = yes
+
+# make firmware smaller
+LINK_TIME_OPTIMIZATION_ENABLE = yes
+CONSOLE_ENABLE = no
+COMMAND_ENABLE = no