Merge remote-tracking branch 'refs/remotes/jackhumbert/master'
This commit is contained in:
		@@ -148,6 +148,11 @@ ifeq ($(strip $(AUDIO_ENABLE)), yes)
 | 
			
		||||
	SRC += $(QUANTUM_DIR)/audio/luts.c
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
ifeq ($(strip $(UCIS_ENABLE)), yes)
 | 
			
		||||
	OPT_DEFS += -DUCIS_ENABLE
 | 
			
		||||
	UNICODE_ENABLE = yes
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
ifeq ($(strip $(UNICODE_ENABLE)), yes)
 | 
			
		||||
    OPT_DEFS += -DUNICODE_ENABLE
 | 
			
		||||
	SRC += $(QUANTUM_DIR)/process_keycode/process_unicode.c
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										7
									
								
								keyboards/planck/keymaps/bone2planck/config.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								keyboards/planck/keymaps/bone2planck/config.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
#ifndef CONFIG_USER_H
 | 
			
		||||
#define CONFIG_USER_H
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include "../../config.h"
 | 
			
		||||
 | 
			
		||||
#define PREVENT_STUCK_MODIFIERS
 | 
			
		||||
@@ -4,6 +4,13 @@
 | 
			
		||||
#endif
 | 
			
		||||
#include "keymap_german.h"
 | 
			
		||||
 | 
			
		||||
// for intellisense, has to be commented for building
 | 
			
		||||
/*
 | 
			
		||||
#include "..\..\..\..\quantum\keymap_extras\keymap_german.h"
 | 
			
		||||
#include "..\..\..\..\quantum\keymap_common.h"
 | 
			
		||||
#include "..\..\..\..\tmk_core\common\keycode.h"
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#define _______ KC_TRNS
 | 
			
		||||
 | 
			
		||||
/* This Layout tries to emulate the Bone2 Variant of Neo2, and is intended to be used with a German QWERTZ Softwarelayout.
 | 
			
		||||
@@ -24,14 +31,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
 | 
			
		||||
* | Shift|   F  |   V  |   Ü  |   Ä  |   Ö  |   Y  |   Z  |   ,  |   .  |   K  |Shift |
 | 
			
		||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
 | 
			
		||||
* | GUI  | Ctrl | Alt  |  M4  |  M2  |    Space    |  M2  |  M4  |      | Ctrl | Esc  |
 | 
			
		||||
* | Ctrl | GUI  | Alt  |  M4  |  M2  |    Space    |  M2  |  M4  | Alt  | Esc  | Ctrl |
 | 
			
		||||
* `-----------------------------------------------------------------------------------'
 | 
			
		||||
*/
 | 
			
		||||
[0] = {
 | 
			
		||||
	{ DE_Q,         DE_J,    DE_D,    DE_U,  DE_A,  DE_X,   DE_P,   DE_H,  DE_L,    DE_M,   DE_W,    DE_SS        },
 | 
			
		||||
	{ LT(1,KC_TAB), DE_C,    DE_T,    DE_I,  DE_E,  DE_O,   DE_B,   DE_N,  DE_R,    DE_S,   DE_G,    LT(1,KC_ENT) },
 | 
			
		||||
	{ KC_LSFT,      DE_F,    DE_V,    DE_UE, DE_AE, DE_OE,  DE_Y,   DE_Z,  DE_COMM, DE_DOT, DE_K,    KC_LSFT      },
 | 
			
		||||
	{ KC_LGUI,      KC_LCTL, KC_LALT, MO(4), MO(2), KC_SPC, KC_SPC, MO(2), MO(4),   KC_NO,  KC_RCTL, KC_ESC       }
 | 
			
		||||
	{ DE_Q,         DE_J,    DE_D,    DE_U,  DE_A,  DE_X,   DE_P,   DE_H,  DE_L,    DE_M,    DE_W,    DE_SS        },
 | 
			
		||||
	{ LT(1,KC_TAB), DE_C,    DE_T,    DE_I,  DE_E,  DE_O,   DE_B,   DE_N,  DE_R,    DE_S,    DE_G,    LT(1,KC_ENT) },
 | 
			
		||||
	{ KC_LSFT,      DE_F,    DE_V,    DE_UE, DE_AE, DE_OE,  DE_Y,   DE_Z,  DE_COMM, DE_DOT,  DE_K,    KC_LSFT      },
 | 
			
		||||
	{ KC_LCTL,      KC_RGUI, KC_LALT, MO(4), MO(2), KC_SPC, KC_SPC, MO(2), MO(4),   KC_RALT, KC_ESC,  KC_RCTL      }
 | 
			
		||||
},
 | 
			
		||||
 | 
			
		||||
/* M1 Special Characters
 | 
			
		||||
@@ -43,7 +50,7 @@ very ergonomic placement for coding
 | 
			
		||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
 | 
			
		||||
* | Shift|   #  |   $  |   |  |   ~  |   €  |   +  |   %  |   "  |   '  |   ;  |Shift |
 | 
			
		||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
 | 
			
		||||
* | GUI  | Ctrl | Alt  |  M4  |  M2  |    Space    |  M2  |  M4  |      | Ctrl | Esc  |
 | 
			
		||||
* | Ctrl | GUI  | Alt  |  M4  |  M2  |    Space    |  M2  |  M4  | Alt  | Esc  | Ctrl |
 | 
			
		||||
* `-----------------------------------------------------------------------------------'
 | 
			
		||||
*/
 | 
			
		||||
[1] = {
 | 
			
		||||
@@ -56,37 +63,37 @@ very ergonomic placement for coding
 | 
			
		||||
/* Navigation & Number Blocks
 | 
			
		||||
very easy to get used to & intuituve placement
 | 
			
		||||
* ,-----------------------------------------------------------------------------------.
 | 
			
		||||
* |      | PgUp | Bksp |  Up  |  DEL | PgDn |      |   7  |   8  |   9  |      |      |
 | 
			
		||||
* |      | PgUp | Bksp |  Up  |  DEL | PgDn |      |   7  |   8  |   9  |      | Ins  |
 | 
			
		||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
 | 
			
		||||
* |  Tab | Home |  Lft | Down | Right| End  |   .  |   4  |   5  |   6  |   ,  | Enter|
 | 
			
		||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
 | 
			
		||||
* | Shift|      |  Tab | Ins  | Enter|      |   0  |   1  |   2  |   3  |   ;  |Shift |
 | 
			
		||||
* | Shift|      |  Tab |      | Enter|      |   0  |   1  |   2  |   3  |   ;  |Shift |
 | 
			
		||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
 | 
			
		||||
* | GUI  | Ctrl | Alt  |  M3  |  M2  |    Space    |  M2  |  M3  |      | Ctrl | Esc  |
 | 
			
		||||
* | Ctrl | GUI  | Alt  |  M3  |  M2  |    Space    |  M2  |  M3  | Alt  | Esc  | Ctrl |
 | 
			
		||||
* `-----------------------------------------------------------------------------------'
 | 
			
		||||
*/
 | 
			
		||||
[2] = {
 | 
			
		||||
	{ KC_NO,   KC_PGUP, KC_BSPC, KC_UP,   KC_DEL,  KC_PGDN, KC_NO,   DE_7,    DE_8,  DE_9,    KC_NO,   KC_NO   },
 | 
			
		||||
	{ KC_NO,   KC_PGUP, KC_BSPC, KC_UP,   KC_DEL,  KC_PGDN, KC_NO,   DE_7,    DE_8,  DE_9,    KC_NO,   KC_INS  },
 | 
			
		||||
	{ KC_TAB,  KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END,  DE_DOT,  DE_4,    DE_5,  DE_6,    DE_COMM, KC_ENT  },
 | 
			
		||||
	{ _______, KC_NO,   KC_TAB,  KC_INS,  KC_ENT,  KC_NO,   DE_0,    DE_1,    DE_2,  DE_3,    DE_SCLN, _______ },
 | 
			
		||||
	{ _______, KC_NO,   KC_TAB,  KC_NO,   KC_ENT,  KC_NO,   DE_0,    DE_1,    DE_2,  DE_3,    DE_SCLN, _______ },
 | 
			
		||||
	{ _______, _______, _______, MO(3),   _______, _______, _______, _______, MO(3), _______, _______, _______ }
 | 
			
		||||
},
 | 
			
		||||
 | 
			
		||||
/* Flipped Navigation & Number Blocks for one handed use
 | 
			
		||||
accessed by sliding from M2 to M3 with thumb
 | 
			
		||||
* ,-----------------------------------------------------------------------------------.
 | 
			
		||||
* |      |      |  7   |  8   |  9   |      | PgUp | Bksp |  Up  |  DEL | PgDn |      |
 | 
			
		||||
* | Ins  |      |  7   |  8   |  9   |      | PgUp | Bksp |  Up  |  DEL | PgDn |      |
 | 
			
		||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
 | 
			
		||||
* |  Tab |  .   |  4   |  5   |  6   |   ,  | Home | Left | Down | Right| End  | Enter|
 | 
			
		||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
 | 
			
		||||
* | Shift|  0   |  1   |  2   |  3   |   ;  |      | Tab  |  Ins | Enter|      |Shift |
 | 
			
		||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
 | 
			
		||||
* | GUI  | Ctrl | Alt  |  M3  |      |    Space    |      |  M3  |      | Ctrl | Esc  |
 | 
			
		||||
* | Ctrl | GUI  | Alt  |  M3  |      |    Space    |      |  M3  | Alt  | Esc  | Ctrl |
 | 
			
		||||
* `-----------------------------------------------------------------------------------'
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
[3] = {
 | 
			
		||||
	{ KC_NO,   KC_NO,   DE_7,    DE_8,    DE_9,  KC_NO,   KC_PGUP, KC_BSPC, KC_UP,   KC_DEL,  KC_PGDN, KC_NO   },
 | 
			
		||||
	{ KC_INS,   KC_NO,   DE_7,    DE_8,    DE_9,  KC_NO,   KC_PGUP, KC_BSPC, KC_UP,   KC_DEL,  KC_PGDN, KC_NO   },
 | 
			
		||||
	{ _______, DE_DOT,  DE_4,    DE_5,    DE_6,  DE_COMM, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END,  _______ },
 | 
			
		||||
	{ _______, DE_0,    DE_1,    DE_2,    DE_3,  DE_SCLN, KC_NO,   KC_TAB,  KC_INS,  KC_ENT,  KC_NO,   _______ },
 | 
			
		||||
	{ _______, _______, _______, _______, KC_NO, _______, _______, KC_NO,   _______, _______, _______, _______ }
 | 
			
		||||
@@ -102,7 +109,7 @@ slide from m4 to m5 to access flipped version
 | 
			
		||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
 | 
			
		||||
* | Shift|      | Prev | Play | Next |      |   ²  |  F1  |  F2  |  F3  |  F10 |Shift |
 | 
			
		||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
 | 
			
		||||
* | GUI  | Ctrl | Alt  |  M4  |  M5  |    Space    |  M5  |  M4  |      | Ctrl | Esc  |
 | 
			
		||||
* | Ctrl | GUI  | Alt  |  M4  |  M5  |    Space    |  M5  |  M4  | Alt  | Esc  | Ctrl |
 | 
			
		||||
* `-----------------------------------------------------------------------------------'
 | 
			
		||||
*/
 | 
			
		||||
[4] = {
 | 
			
		||||
@@ -115,19 +122,19 @@ slide from m4 to m5 to access flipped version
 | 
			
		||||
 | 
			
		||||
/* flipped Function & Media Keys
 | 
			
		||||
* ,-----------------------------------------------------------------------------------.
 | 
			
		||||
* |      |      |  F7  |  F8  |  F9  |      |      | Print|Scroll| Pause|      |      |
 | 
			
		||||
* |      |      |  F7  |  F8  |  F9  |  F12 |      | Print|Scroll| Pause|      |      |
 | 
			
		||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
 | 
			
		||||
* |      |  ³   |  F4  |  F5  |  F6  |      |      | Mute | Vol- | Vol+ |      |      |
 | 
			
		||||
* |      |  ³   |  F4  |  F5  |  F6  |  F11 |      | Mute | Vol- | Vol+ |      |      |
 | 
			
		||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
 | 
			
		||||
* | Shift|  ²   |  F1  |  F2  |  F3  |      |      | Prev | Play | Next |      |Shift |
 | 
			
		||||
* | Shift|  ²   |  F1  |  F2  |  F3  |  F10 |      | Prev | Play | Next |      |Shift |
 | 
			
		||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
 | 
			
		||||
* | GUI  | Ctrl | Alt  |      |  M5  |    Space    |  M5  |      |      | Ctrl | Esc  |
 | 
			
		||||
* | Ctrl | GUI  | Alt  |      |  M5  |    Space    |  M5  |      | Alt  | Esc  | Ctrl |
 | 
			
		||||
* `-----------------------------------------------------------------------------------'
 | 
			
		||||
*/
 | 
			
		||||
[5] = {
 | 
			
		||||
	{ KC_NO,   KC_NO,   KC_F7,   KC_F8, KC_F9,   KC_NO,   KC_NO,   KC_PSCR, KC_SLCK, KC_PAUS, KC_NO,   KC_NO   },
 | 
			
		||||
	{ KC_NO,   DE_SQ3,  KC_F4,   KC_F5, KC_F6,   KC_NO,   KC_NO,   KC_MUTE, KC_VOLD, KC_VOLU, KC_NO,   KC_NO   },
 | 
			
		||||
	{ _______, DE_SQ2,  KC_F1,   KC_F2, KC_F3,   KC_NO,   KC_NO,   KC_MPRV, KC_MPLY, KC_MNXT, KC_NO,   _______ },
 | 
			
		||||
	{ KC_NO,   KC_NO,   KC_F7,   KC_F8, KC_F9,   KC_F12,  KC_NO,   KC_PSCR, KC_SLCK, KC_PAUS, KC_NO,   KC_NO   },
 | 
			
		||||
	{ KC_NO,   DE_SQ3,  KC_F4,   KC_F5, KC_F6,   KC_F11,  KC_NO,   KC_MUTE, KC_VOLD, KC_VOLU, KC_NO,   KC_NO   },
 | 
			
		||||
	{ _______, DE_SQ2,  KC_F1,   KC_F2, KC_F3,   KC_F10,  KC_NO,   KC_MPRV, KC_MPLY, KC_MNXT, KC_NO,   _______ },
 | 
			
		||||
	{ _______, _______, _______, KC_NO, _______, _______, _______, _______, KC_NO,   _______, _______, _______ }
 | 
			
		||||
}
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								keyboards/planck/keymaps/bone2planck/readme.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								keyboards/planck/keymaps/bone2planck/readme.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
check keymap.c to the layers
 | 
			
		||||
 | 
			
		||||
This Layout tries to emulate the Bone2 Variant of Neo2, and is intended to be used with a German QWERTZ Softwarelayout.
 | 
			
		||||
It has "üäöß" as it is optimized for a mix of German & English.
 | 
			
		||||
My favourite features are the placement of the special characters often used for programming right on the home row
 | 
			
		||||
and the number & navigation block combo, so you never have to move your hands from their home position.
 | 
			
		||||
 | 
			
		||||
Bone2 wiki page: http://wiki.neo-layout.org/wiki/Bone
 | 
			
		||||
							
								
								
									
										25
									
								
								keyboards/planck/keymaps/jhenahan/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								keyboards/planck/keymaps/jhenahan/Makefile
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,25 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Build Options
 | 
			
		||||
#   change to "no" to disable the options, or define them in the Makefile in 
 | 
			
		||||
#   the appropriate keymap folder that will get included automatically
 | 
			
		||||
#
 | 
			
		||||
BOOTMAGIC_ENABLE = no       # Virtual DIP switch configuration(+1000)
 | 
			
		||||
MOUSEKEY_ENABLE = yes       # Mouse keys(+4700)
 | 
			
		||||
EXTRAKEY_ENABLE = yes       # Audio control and System control(+450)
 | 
			
		||||
CONSOLE_ENABLE = no         # Console for debug(+400)
 | 
			
		||||
COMMAND_ENABLE = yes        # Commands for debug and configuration
 | 
			
		||||
NKRO_ENABLE = yes            # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
 | 
			
		||||
BACKLIGHT_ENABLE = no      # Enable keyboard backlight functionality
 | 
			
		||||
MIDI_ENABLE = no            # MIDI controls
 | 
			
		||||
AUDIO_ENABLE = yes           # Audio output on port C6
 | 
			
		||||
UNICODE_ENABLE = no         # Unicode
 | 
			
		||||
BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
 | 
			
		||||
RGBLIGHT_ENABLE = no        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
 | 
			
		||||
 | 
			
		||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
 | 
			
		||||
SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend
 | 
			
		||||
 | 
			
		||||
ifndef QUANTUM_DIR
 | 
			
		||||
	include ../../../../Makefile
 | 
			
		||||
endif
 | 
			
		||||
							
								
								
									
										9
									
								
								keyboards/planck/keymaps/jhenahan/config.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								keyboards/planck/keymaps/jhenahan/config.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
#ifndef CONFIG_USER_H
 | 
			
		||||
#define CONFIG_USER_H
 | 
			
		||||
 | 
			
		||||
#include "../../config.h"
 | 
			
		||||
 | 
			
		||||
#define FORCE_NKRO
 | 
			
		||||
#define WORKMAN_SOUND COLEMAK_SOUND
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										314
									
								
								keyboards/planck/keymaps/jhenahan/keymap.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										314
									
								
								keyboards/planck/keymaps/jhenahan/keymap.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,314 @@
 | 
			
		||||
// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
 | 
			
		||||
// this is the style you want to emulate.
 | 
			
		||||
 | 
			
		||||
#include "planck.h"
 | 
			
		||||
#include "action_layer.h"
 | 
			
		||||
#ifdef AUDIO_ENABLE
 | 
			
		||||
  #include "audio.h"
 | 
			
		||||
#endif
 | 
			
		||||
#include "eeconfig.h"
 | 
			
		||||
 | 
			
		||||
extern keymap_config_t keymap_config;
 | 
			
		||||
 | 
			
		||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
 | 
			
		||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
 | 
			
		||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
 | 
			
		||||
// entirely and just use numbers.
 | 
			
		||||
#define _WORKMAN 0
 | 
			
		||||
#define _DEAD 1
 | 
			
		||||
#define _QWERTY 2
 | 
			
		||||
#define _LOWER 3
 | 
			
		||||
#define _RAISE 4
 | 
			
		||||
#define _PLOVER 5
 | 
			
		||||
#define _ADJUST 16
 | 
			
		||||
 | 
			
		||||
enum planck_keycodes {
 | 
			
		||||
  WORKMAN = SAFE_RANGE,
 | 
			
		||||
  DEAD,
 | 
			
		||||
  QWERTY,
 | 
			
		||||
  LOWER,
 | 
			
		||||
  RAISE,
 | 
			
		||||
  PLOVER,
 | 
			
		||||
  EXT_PLV,
 | 
			
		||||
  TOG_PLV
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// Fillers to make layering more clear
 | 
			
		||||
#define _______ KC_TRNS
 | 
			
		||||
#define XXXXXXX KC_NO
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Workman
 | 
			
		||||
 * ,-----------------------------------------------------------------------------------.
 | 
			
		||||
 * | Tab  |   Q  |   D  |   R  |   W  |   B  |   J  |   F  |   U  |   P  |   ;  | Bksp |
 | 
			
		||||
 * |------+------+------+------+------+-------------+------+------+------+------+------|
 | 
			
		||||
 * | Esc  |   A  |   S  |   H  |   T  |   G  |   Y  |   N  |   E  |   O  |   I  |  "   |
 | 
			
		||||
 * |------+------+------+------+------+------|------+------+------+------+------+------|
 | 
			
		||||
 * | Shift|   Z  |   X  |   M  |   C  |   V  |   K  |   L  | Dead |   .  |   /  |Enter |
 | 
			
		||||
 * |------+------+------+------+------+------+------+------+------+------+------+------|
 | 
			
		||||
 * | Ctrl | RAlt | Alt  | GUI  |Lower |    Space    |Raise | Left | Down |  Up  |Right |
 | 
			
		||||
 * `-----------------------------------------------------------------------------------'
 | 
			
		||||
 */
 | 
			
		||||
[_WORKMAN] = {
 | 
			
		||||
  {KC_TAB,              KC_Q,    KC_D,    KC_R,    KC_W,    KC_B,    KC_J,    KC_F,    KC_U,    KC_P,    KC_SCLN, KC_BSPC},
 | 
			
		||||
  {MT(MOD_LCTL,KC_ESC), KC_A,    KC_S,    KC_H,    KC_T,    KC_G,    KC_Y,    KC_N,    KC_E,    KC_O,    KC_I,    KC_QUOT},
 | 
			
		||||
  {KC_LSFT,             KC_Z,    KC_X,    KC_M,    KC_C,    KC_V,    KC_K,    KC_L,    DEAD,    KC_DOT,  KC_SLSH, KC_ENT},
 | 
			
		||||
  {KC_LCTL,             KC_RALT, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
 | 
			
		||||
},
 | 
			
		||||
 | 
			
		||||
/* Workman Dead Layer
 | 
			
		||||
 * ,-----------------------------------------------------------------------------------.
 | 
			
		||||
 * |      |   %  |   &  |   ?  |   +  |   @  |   $  |   _  |   [  |   ]  |   !  |      |
 | 
			
		||||
 * |------+------+------+------+------+-------------+------+------+------+------+------|
 | 
			
		||||
 * |      |   /  |   (  |   =  |   0  |   {  |   }  |   1  |   *  |   )  |   -  |  "   |
 | 
			
		||||
 * |------+------+------+------+------+------|------+------+------+------+------+------|
 | 
			
		||||
 * |      |   6  |   7  |   8  |   9  |   |  |   \  |   2  |   3  |   4  |   5  |      |
 | 
			
		||||
 * |------+------+------+------+------+------+------+------+------+------+------+------|
 | 
			
		||||
 * |      |      |   <  |   ~  |   `  |      ,      |   #  |   ^  |   >  |      |      |
 | 
			
		||||
 * `-----------------------------------------------------------------------------------'
 | 
			
		||||
 */
 | 
			
		||||
[_DEAD] = {
 | 
			
		||||
  {XXXXXXX,  KC_PERC, KC_AMPR, KC_QUES, KC_PLUS, KC_AT,   KC_DLR,  KC_UNDS, KC_LBRC, KC_RBRC,  KC_EXLM, XXXXXXX},
 | 
			
		||||
  {XXXXXXX,  KC_SLSH, KC_LPRN, KC_EQL,  KC_0,    KC_LCBR, KC_RCBR, KC_1,    KC_ASTR, KC_RPRN,  KC_MINS, XXXXXXX},
 | 
			
		||||
  {XXXXXXX,  KC_6,    KC_7,    KC_8,    KC_9,    KC_PIPE, KC_BSLS, KC_2,    KC_3,    KC_4,     KC_5,    XXXXXXX},
 | 
			
		||||
  {XXXXXXX,  XXXXXXX, KC_LT,   KC_TILD, KC_GRV,  KC_COMM, KC_COMM, KC_HASH, KC_CIRC, KC_GT,    XXXXXXX, XXXXXXX}
 | 
			
		||||
},
 | 
			
		||||
 | 
			
		||||
/* Qwerty
 | 
			
		||||
 * ,-----------------------------------------------------------------------------------.
 | 
			
		||||
 * | Tab  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | Bksp |
 | 
			
		||||
 * |------+------+------+------+------+-------------+------+------+------+------+------|
 | 
			
		||||
 * | Esc  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |  "   |
 | 
			
		||||
 * |------+------+------+------+------+------|------+------+------+------+------+------|
 | 
			
		||||
 * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Enter |
 | 
			
		||||
 * |------+------+------+------+------+------+------+------+------+------+------+------|
 | 
			
		||||
 * | Ctrl | RAlt | Alt  | GUI  |Lower |    Space    |Raise | Left | Down |  Up  |Right |
 | 
			
		||||
 * `-----------------------------------------------------------------------------------'
 | 
			
		||||
 */
 | 
			
		||||
[_QWERTY] = {
 | 
			
		||||
  {KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC},
 | 
			
		||||
  {KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT},
 | 
			
		||||
  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT },
 | 
			
		||||
  {KC_LCTL, KC_RALT, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
 | 
			
		||||
},
 | 
			
		||||
 | 
			
		||||
/* Lower
 | 
			
		||||
 * ,-----------------------------------------------------------------------------------.
 | 
			
		||||
 * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Bksp |
 | 
			
		||||
 * |------+------+------+------+------+-------------+------+------+------+------+------|
 | 
			
		||||
 * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   _  |   +  |   {  |   }  |  |   |
 | 
			
		||||
 * |------+------+------+------+------+------|------+------+------+------+------+------|
 | 
			
		||||
 * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |ISO ~ |ISO | |      | Vol+ |Enter |
 | 
			
		||||
 * |------+------+------+------+------+------+------+------+------+------+------+------|
 | 
			
		||||
 * |      |      |      |      |      |             |      | Prev | Next | Vol- | Play |
 | 
			
		||||
 * `-----------------------------------------------------------------------------------'
 | 
			
		||||
 */
 | 
			
		||||
[_LOWER] = {
 | 
			
		||||
  {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR,    KC_LPRN, KC_RPRN, KC_BSPC},
 | 
			
		||||
  {KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS,    KC_LCBR, KC_RCBR, KC_PIPE},
 | 
			
		||||
  {_______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,S(KC_NUHS),S(KC_NUBS), _______, KC_VOLU, _______},
 | 
			
		||||
  {_______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV,    KC_MNXT, KC_VOLD, KC_MPLY}
 | 
			
		||||
},
 | 
			
		||||
 | 
			
		||||
/* Raise - KWM Interaction
 | 
			
		||||
 * ,-----------------------------------------------------------------------------------.
 | 
			
		||||
 * |Restrt|      |TgSplt|Flotng|Parent|FlScrn|InsMrk| InsW | InsS | InsN | InsE |      |
 | 
			
		||||
 * |------+------+------+------+------+-------------+------+------+------+------+------|
 | 
			
		||||
 * |      | Mark |Rotate|Prefix| Term | BSP  |SwpMrk|SwapW |SwapS |SwapN |SwapE |      |
 | 
			
		||||
 * |------+------+------+------+------+------|------+------+------+------+------+------|
 | 
			
		||||
 * |      |MarkW |MarkS |MarkN |MarkE |Monocl|Float |FocusW|FocusS|FocusN|FocusE|      |
 | 
			
		||||
 * |------+------+------+------+------+------+------+------+------+------+------+------|
 | 
			
		||||
 * |      |      |      |      |      |             |      |      |      |      |      |
 | 
			
		||||
 * `-----------------------------------------------------------------------------------'
 | 
			
		||||
 */
 | 
			
		||||
[_RAISE] = {
 | 
			
		||||
  {LCAG(KC_Q), XXXXXXX,    LCAG(KC_S),       LCAG(KC_W),   LCAG(KC_D), LCAG(KC_F),        LCTL(S(KC_X)),    LCTL(S(KC_H)),    LCTL(S(KC_J)),     LCTL(S(KC_K)),    LCTL(S(KC_L)),    XXXXXXX},
 | 
			
		||||
  {XXXXXXX,    LCAG(KC_M), LGUI(LCTL(KC_R)), LCAG(KC_DOT), LCAG(KC_T), LGUI(LCTL(KC_A)),  LCTL(LALT(KC_M)), LCTL(LALT(KC_H)), LCTL(LALT(KC_J)),  LCTL(LALT(KC_K)), LCTL(LALT(KC_L)), XXXXXXX},
 | 
			
		||||
  {_______,    LCAG(KC_H), LCAG(KC_J),       LCAG(KC_K),   LCAG(KC_L), LGUI(LCTL(KC_S)),  LGUI(LCTL(KC_D)), LGUI(LALT(KC_H)), LGUI(LALT(KC_J)),  LGUI(LALT(KC_K)), LGUI(LALT(KC_L)), _______},
 | 
			
		||||
  {_______,    _______,    _______,          _______,      _______,    _______,           _______,          _______,          _______,           _______,          _______,          _______}
 | 
			
		||||
},
 | 
			
		||||
 | 
			
		||||
/* Plover layer (http://opensteno.org)
 | 
			
		||||
 * ,-----------------------------------------------------------------------------------.
 | 
			
		||||
 * |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |
 | 
			
		||||
 * |------+------+------+------+------+-------------+------+------+------+------+------|
 | 
			
		||||
 * |      |   S  |   T  |   P  |   H  |   *  |   *  |   F  |   P  |   L  |   T  |   D  |
 | 
			
		||||
 * |------+------+------+------+------+------|------+------+------+------+------+------|
 | 
			
		||||
 * |TogOut|   S  |   K  |   W  |   R  |   *  |   *  |   R  |   B  |   G  |   S  |   Z  |
 | 
			
		||||
 * |------+------+------+------+------+------+------+------+------+------+------+------|
 | 
			
		||||
 * | Exit |      |      |   A  |   O  |             |   E  |   U  |      |      |      |
 | 
			
		||||
 * `-----------------------------------------------------------------------------------'
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
[_PLOVER] = {
 | 
			
		||||
  {KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1   },
 | 
			
		||||
  {XXXXXXX, KC_Q,    KC_D,    KC_R,    KC_W,    KC_B,    KC_J,    KC_F,    KC_U,    KC_P,    KC_SCLN, KC_BSPC},
 | 
			
		||||
  {TOG_PLV, KC_A,    KC_S,    KC_H,    KC_T,    KC_G,    KC_Y,    KC_N,    KC_E,    KC_O,    KC_I,    KC_QUOT},
 | 
			
		||||
  {EXT_PLV, XXXXXXX, XXXXXXX, KC_M,    KC_C,    XXXXXXX, XXXXXXX, KC_L,    KC_COMM, XXXXXXX, XXXXXXX, XXXXXXX}
 | 
			
		||||
},
 | 
			
		||||
 | 
			
		||||
/* Adjust (Lower + Raise)
 | 
			
		||||
 * ,-----------------------------------------------------------------------------------.
 | 
			
		||||
 * |      | Reset|      |      |      |      |      |      |      |      |      |  Del |
 | 
			
		||||
 * |------+------+------+------+------+-------------+------+------+------+------+------|
 | 
			
		||||
 * |      |      |      |Aud on|Audoff|AGnorm|AGswap|Qwerty|Workmn|Plover|      |      |
 | 
			
		||||
 * |------+------+------+------+------+------|------+------+------+------+------+------|
 | 
			
		||||
 * |      |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof|      |      |      |      |      |
 | 
			
		||||
 * |------+------+------+------+------+------+------+------+------+------+------+------|
 | 
			
		||||
 * |      |      |      |      |      |             |      |      |      |      |      |
 | 
			
		||||
 * `-----------------------------------------------------------------------------------'
 | 
			
		||||
 */
 | 
			
		||||
[_ADJUST] = {
 | 
			
		||||
  {_______, RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL},
 | 
			
		||||
  {_______, _______, _______, AU_ON,   AU_OFF,  AG_NORM, AG_SWAP, QWERTY,  WORKMAN, PLOVER,  _______, _______},
 | 
			
		||||
  {_______, MUV_DE,  MUV_IN,  MU_ON,   MU_OFF,  MI_ON,   MI_OFF,  _______, _______, _______, _______, _______},
 | 
			
		||||
  {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#ifdef AUDIO_ENABLE
 | 
			
		||||
 | 
			
		||||
float tone_startup[][2]    = SONG(STARTUP_SOUND);
 | 
			
		||||
float tone_qwerty[][2]     = SONG(QWERTY_SOUND);
 | 
			
		||||
float tone_workman[][2]    = SONG(WORKMAN_SOUND);
 | 
			
		||||
float tone_plover[][2]     = SONG(PLOVER_SOUND);
 | 
			
		||||
float tone_plover_gb[][2]  = SONG(PLOVER_GOODBYE_SOUND);
 | 
			
		||||
float music_scale[][2]     = SONG(MUSIC_SCALE_SOUND);
 | 
			
		||||
 | 
			
		||||
float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void persistant_default_layer_set(uint16_t default_layer) {
 | 
			
		||||
  eeconfig_update_default_layer(default_layer);
 | 
			
		||||
  default_layer_set(default_layer);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		||||
  switch (keycode) {
 | 
			
		||||
    case WORKMAN:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        #ifdef AUDIO_ENABLE
 | 
			
		||||
          PLAY_NOTE_ARRAY(tone_workman, false, 0);
 | 
			
		||||
        #endif
 | 
			
		||||
        persistant_default_layer_set(1UL<<_WORKMAN);
 | 
			
		||||
      }
 | 
			
		||||
      return false;
 | 
			
		||||
      break;
 | 
			
		||||
    case DEAD:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        layer_on(_DEAD);
 | 
			
		||||
        set_oneshot_layer(_DEAD, ONESHOT_START);
 | 
			
		||||
        clear_oneshot_layer_state(ONESHOT_PRESSED);
 | 
			
		||||
      }
 | 
			
		||||
      return false;
 | 
			
		||||
      break;
 | 
			
		||||
    case QWERTY:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        #ifdef AUDIO_ENABLE
 | 
			
		||||
          PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
 | 
			
		||||
        #endif
 | 
			
		||||
        persistant_default_layer_set(1UL<<_QWERTY);
 | 
			
		||||
      }
 | 
			
		||||
      return false;
 | 
			
		||||
      break;
 | 
			
		||||
    case LOWER:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        layer_on(_LOWER);
 | 
			
		||||
        update_tri_layer(_LOWER, _RAISE, _ADJUST);
 | 
			
		||||
      } else {
 | 
			
		||||
        layer_off(_LOWER);
 | 
			
		||||
        update_tri_layer(_LOWER, _RAISE, _ADJUST);
 | 
			
		||||
      }
 | 
			
		||||
      return false;
 | 
			
		||||
      break;
 | 
			
		||||
    case RAISE:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        layer_on(_RAISE);
 | 
			
		||||
        update_tri_layer(_LOWER, _RAISE, _ADJUST);
 | 
			
		||||
      } else {
 | 
			
		||||
        layer_off(_RAISE);
 | 
			
		||||
        update_tri_layer(_LOWER, _RAISE, _ADJUST);
 | 
			
		||||
      }
 | 
			
		||||
      return false;
 | 
			
		||||
      break;
 | 
			
		||||
    case PLOVER:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        #ifdef AUDIO_ENABLE
 | 
			
		||||
          stop_all_notes();
 | 
			
		||||
          PLAY_NOTE_ARRAY(tone_plover, false, 0);
 | 
			
		||||
        #endif
 | 
			
		||||
        layer_off(_RAISE);
 | 
			
		||||
        layer_off(_LOWER);
 | 
			
		||||
        layer_off(_ADJUST);
 | 
			
		||||
        layer_on(_PLOVER);
 | 
			
		||||
        if (!eeconfig_is_enabled()) {
 | 
			
		||||
            eeconfig_init();
 | 
			
		||||
        }
 | 
			
		||||
        keymap_config.raw = eeconfig_read_keymap();
 | 
			
		||||
        keymap_config.nkro = 1;
 | 
			
		||||
        eeconfig_update_keymap(keymap_config.raw);
 | 
			
		||||
      }
 | 
			
		||||
      return false;
 | 
			
		||||
      break;
 | 
			
		||||
    case EXT_PLV:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        #ifdef AUDIO_ENABLE
 | 
			
		||||
          PLAY_NOTE_ARRAY(tone_plover_gb, false, 0);
 | 
			
		||||
        #endif
 | 
			
		||||
        layer_off(_PLOVER);
 | 
			
		||||
      }
 | 
			
		||||
      return false;
 | 
			
		||||
      break;
 | 
			
		||||
  case TOG_PLV:
 | 
			
		||||
    if (record->event.pressed) {
 | 
			
		||||
      register_code(KC_R);
 | 
			
		||||
      register_code(KC_W);
 | 
			
		||||
      register_code(KC_T);
 | 
			
		||||
      register_code(KC_C);
 | 
			
		||||
      register_code(KC_P);
 | 
			
		||||
      register_code(KC_O);
 | 
			
		||||
      clear_keyboard();
 | 
			
		||||
    }
 | 
			
		||||
    return false;
 | 
			
		||||
    break;
 | 
			
		||||
  }
 | 
			
		||||
  return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void matrix_init_user(void) {
 | 
			
		||||
    #ifdef AUDIO_ENABLE
 | 
			
		||||
        startup_user();
 | 
			
		||||
    #endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef AUDIO_ENABLE
 | 
			
		||||
 | 
			
		||||
void startup_user()
 | 
			
		||||
{
 | 
			
		||||
    _delay_ms(20); // gets rid of tick
 | 
			
		||||
    PLAY_NOTE_ARRAY(tone_startup, false, 0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void shutdown_user()
 | 
			
		||||
{
 | 
			
		||||
    PLAY_NOTE_ARRAY(tone_goodbye, false, 0);
 | 
			
		||||
    _delay_ms(150);
 | 
			
		||||
    stop_all_notes();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void music_on_user(void)
 | 
			
		||||
{
 | 
			
		||||
    music_scale_user();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void music_scale_user(void)
 | 
			
		||||
{
 | 
			
		||||
    PLAY_NOTE_ARRAY(music_scale, false, 0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										41
									
								
								keyboards/planck/keymaps/jhenahan/readme.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								keyboards/planck/keymaps/jhenahan/readme.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,41 @@
 | 
			
		||||
# jhenahan's layout
 | 
			
		||||
 | 
			
		||||
## Layout
 | 
			
		||||
 | 
			
		||||
The base layer is based on the
 | 
			
		||||
[Workman Dead](https://github.com/ojbucao/Workman/tree/master/mac) layout. The
 | 
			
		||||
primary interaction layer is a slightly modified Workman layout with a 'dead'
 | 
			
		||||
key on the third row under the middle finger. The dead key activates a layer of
 | 
			
		||||
special characters.
 | 
			
		||||
 | 
			
		||||
## [Layers](http://www.keyboard-layout-editor.com/#/gists/2b875f7d5d76fe4408c0a5b3bd76ddae)
 | 
			
		||||
### Function Layer
 | 
			
		||||
 | 
			
		||||
This is very slightly modified from the default, mainly just to rearrange the media keys.
 | 
			
		||||
 | 
			
		||||
### [KWM](https://github.com/koekeishiya/kwm) Interaction Layer
 | 
			
		||||
 | 
			
		||||
`kwm` is a tiling window manager for OS X. The keys defined in my keymap
 | 
			
		||||
correspond to the settings I use in
 | 
			
		||||
[my `kwmrc` file](https://github.com/jhenahan/dotfiles/blob/master/kwm/kwmrc).
 | 
			
		||||
 | 
			
		||||
### QWERTY
 | 
			
		||||
 | 
			
		||||
Just in case.
 | 
			
		||||
 | 
			
		||||
### [Plover](http://www.openstenoproject.org/plover/)
 | 
			
		||||
 | 
			
		||||
This layout functions exactly as a Workman layout unless you're running the Plover
 | 
			
		||||
application. Includes a key for toggling Plover while it's running.
 | 
			
		||||
 | 
			
		||||
Add this in the appropriate section of your `plover.cfg` to allow this altered layout:
 | 
			
		||||
 | 
			
		||||
``` ini
 | 
			
		||||
[System: English Stenotype]
 | 
			
		||||
keymap[keyboard] = [["#", ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", "="]], ["S-", ["q", "a"]], ["T-", ["d"]], ["K-", ["s"]], ["P-", ["r"]], ["W-", ["h"]], ["H-", ["w"]], ["R-", ["t"]], ["A-", ["m"]], ["O-", ["c"]], ["*", ["y", "g", "j", "b"]], ["-E", ["l"]], ["-U", [","]], ["-F", ["f"]], ["-R", ["n"]], ["-P", ["u"]], ["-B", ["e"]], ["-L", ["p"]], ["-G", ["o"]], ["-T", [";"]], ["-S", ["i"]], ["-D", ["BackSpace"]], ["-Z", ["'"]], ["no-op", ["\\", "]", "x", ".", "/"]], ["arpeggiate", ["space"]]]
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Adjust Layer
 | 
			
		||||
 | 
			
		||||
This layer is only slightly modified from the default to remove Dvorak and
 | 
			
		||||
Colemak and replace them with Workman.
 | 
			
		||||
@@ -18,6 +18,10 @@ void set_unicode_input_mode(uint8_t os_target)
 | 
			
		||||
  input_mode = os_target;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t get_unicode_input_mode(void) {
 | 
			
		||||
  return input_mode;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
__attribute__((weak))
 | 
			
		||||
void unicode_input_start (void) {
 | 
			
		||||
  switch(input_mode) {
 | 
			
		||||
 
 | 
			
		||||
@@ -13,6 +13,7 @@
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
void set_unicode_input_mode(uint8_t os_target);
 | 
			
		||||
uint8_t get_unicode_input_mode(void);
 | 
			
		||||
void unicode_input_start(void);
 | 
			
		||||
void unicode_input_finish(void);
 | 
			
		||||
void register_hex(uint16_t hex);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user