From aa1a90af66df6ab12a371416e23094315c4a43b3 Mon Sep 17 00:00:00 2001 From: Felix Uhl Date: Thu, 11 Aug 2016 00:54:55 +0200 Subject: [PATCH 01/34] Added S60-X to keyboards with two layouts. --- .gitignore | 1 + keyboards/s60-x/Makefile | 75 ++++++++++ keyboards/s60-x/config.h | 164 ++++++++++++++++++++++ keyboards/s60-x/keymaps/default/Makefile | 21 +++ keyboards/s60-x/keymaps/default/keymap.c | 92 ++++++++++++ keyboards/s60-x/keymaps/default/readme.md | 1 + keyboards/s60-x/keymaps/felix/Makefile | 21 +++ keyboards/s60-x/keymaps/felix/keymap.c | 110 +++++++++++++++ keyboards/s60-x/keymaps/felix/readme.md | 1 + keyboards/s60-x/readme.md | 32 +++++ keyboards/s60-x/s60-x.c | 28 ++++ keyboards/s60-x/s60-x.h | 44 ++++++ 12 files changed, 590 insertions(+) create mode 100644 keyboards/s60-x/Makefile create mode 100644 keyboards/s60-x/config.h create mode 100644 keyboards/s60-x/keymaps/default/Makefile create mode 100644 keyboards/s60-x/keymaps/default/keymap.c create mode 100644 keyboards/s60-x/keymaps/default/readme.md create mode 100644 keyboards/s60-x/keymaps/felix/Makefile create mode 100644 keyboards/s60-x/keymaps/felix/keymap.c create mode 100644 keyboards/s60-x/keymaps/felix/readme.md create mode 100644 keyboards/s60-x/readme.md create mode 100644 keyboards/s60-x/s60-x.c create mode 100644 keyboards/s60-x/s60-x.h diff --git a/.gitignore b/.gitignore index 8c85d6ffa8..07bbf13db1 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,4 @@ CMakeLists.txt .settings/ .idea .browse.VC.db* +*.stackdump diff --git a/keyboards/s60-x/Makefile b/keyboards/s60-x/Makefile new file mode 100644 index 0000000000..57edd5e036 --- /dev/null +++ b/keyboards/s60-x/Makefile @@ -0,0 +1,75 @@ + + +# MCU name +#MCU = at90usb1287 +MCU = atmega32u4 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Boot Section Size in *bytes* +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 +OPT_DEFS += -DBOOTLOADER_SIZE=4096 + + +# Build Options +# change yes to no to disable +# +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 ?= yes # Console for debug(+400) +COMMAND_ENABLE ?= yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE ?= no # USB Nkey Rollover +BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default +MIDI_ENABLE ?= no # MIDI controls +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE ?= no # Audio output on port C6 + +ifndef QUANTUM_DIR + include ../../Makefile +endif + + diff --git a/keyboards/s60-x/config.h b/keyboards/s60-x/config.h new file mode 100644 index 0000000000..d548a99b33 --- /dev/null +++ b/keyboards/s60-x/config.h @@ -0,0 +1,164 @@ +/* +Copyright 2012 Jun Wako +Copyright 2016 Julien Pecqueur +Copyright 2016 Felix Uhl + +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 . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Massdrop +#define PRODUCT S60-X +#define DESCRIPTION q.m.k. keyboard firmware for S60-X + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { B7, B3, B2, B1, B0 } +#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6, C7, E6, F1 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +// #define BACKLIGHT_PIN B7 +// #define BACKLIGHT_BREATHING +// #define BACKLIGHT_LEVELS 3 + + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCING_DELAY 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + * + */ + +/* key combination for magic key command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* control how magic key switches layers */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false + +/* override magic key keymap */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM +//#define MAGIC_KEY_HELP1 H +//#define MAGIC_KEY_HELP2 SLASH +//#define MAGIC_KEY_DEBUG D +//#define MAGIC_KEY_DEBUG_MATRIX X +//#define MAGIC_KEY_DEBUG_KBD K +//#define MAGIC_KEY_DEBUG_MOUSE M +//#define MAGIC_KEY_VERSION V +//#define MAGIC_KEY_STATUS S +//#define MAGIC_KEY_CONSOLE C +//#define MAGIC_KEY_LAYER0_ALT1 ESC +//#define MAGIC_KEY_LAYER0_ALT2 GRAVE +//#define MAGIC_KEY_LAYER0 0 +//#define MAGIC_KEY_LAYER1 1 +//#define MAGIC_KEY_LAYER2 2 +//#define MAGIC_KEY_LAYER3 3 +//#define MAGIC_KEY_LAYER4 4 +//#define MAGIC_KEY_LAYER5 5 +//#define MAGIC_KEY_LAYER6 6 +//#define MAGIC_KEY_LAYER7 7 +//#define MAGIC_KEY_LAYER8 8 +//#define MAGIC_KEY_LAYER9 9 +//#define MAGIC_KEY_BOOTLOADER PAUSE +//#define MAGIC_KEY_LOCK CAPS +//#define MAGIC_KEY_EEPROM E +//#define MAGIC_KEY_NKRO N +//#define MAGIC_KEY_SLEEP_LED Z + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +#define NO_ACTION_ONESHOT +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +#endif diff --git a/keyboards/s60-x/keymaps/default/Makefile b/keyboards/s60-x/keymaps/default/Makefile new file mode 100644 index 0000000000..f4671a9d11 --- /dev/null +++ b/keyboards/s60-x/keymaps/default/Makefile @@ -0,0 +1,21 @@ +# 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 = no # 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. +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif \ No newline at end of file diff --git a/keyboards/s60-x/keymaps/default/keymap.c b/keyboards/s60-x/keymaps/default/keymap.c new file mode 100644 index 0000000000..aa2856525c --- /dev/null +++ b/keyboards/s60-x/keymaps/default/keymap.c @@ -0,0 +1,92 @@ +/* +Copyright 2016 Julien Pecqueur +Copyright 2016 Felix Uhl + +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 . +*/ + +#include "s60-x.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Layout 0: Default Layer + * ,-----------------------------------------------------------. + * |` | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | + * |-----------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| + * |-----------------------------------------------------------| + * |Ctrl | A| S| D| F| G| H| J| K| L| ;| '|Return | + * |-----------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | + * |-----------------------------------------------------------| + * |Fn1 |Gui |Alt | SpaceFn |Alt |Gui |App |Ctrl| + * `-----------------------------------------------------------' + */ + KEYMAP( + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, BSLS, \ + LCTL, A, S, D, F, G, H, J, K, L, SCLN, QUOT, NO, ENT, \ + LSFT, NO, Z, X, C, V, B, N, M, COMM, DOT, SLSH, NO, RSFT, NO, \ + FN1, LGUI, LALT, FN0, RALT, RGUI, APP, RCTL), + + /* Layout 1: Function Layer + * ,-----------------------------------------------------------. + * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete | + * |-----------------------------------------------------------| + * | |Prv|Ply|Nxt|Stp| | |PUp|Up |PDn| |Slk|Pau|Ins | + * |-----------------------------------------------------------| + * | |Vl-|Mut|Vl+| | |Hom|Lef|Dow|Rig|End| |PEnt | + * |-----------------------------------------------------------| + * | |Prt|Cut|Cop|Pst|Cal| | | | | |CapsLock | + * |-----------------------------------------------------------| + * | | | | | | | | | + * `-----------------------------------------------------------' + */ + KEYMAP( + ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, DEL, \ + TRNS, MPRV, MPLY, MNXT, MSTP, TRNS, TRNS, PGUP, UP, PGDN, TRNS, SLCK, PAUS, INS, \ + TRNS, VOLD, MUTE, VOLU, TRNS, TRNS, HOME, LEFT, DOWN, RGHT, END, TRNS, TRNS, PENT, \ + TRNS, TRNS, PSCR, FN2, FN3, FN4, CALC, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, CAPS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), +}; + +/* +* Fn action definition +*/ +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_LAYER_TAP_KEY(1, KC_SPACE), /* SpaceFn layout 1 */ + [1] = ACTION_LAYER_MOMENTARY(1), /* Momentary layout 1 */ + [2] = ACTION_MODS_KEY(MOD_LSFT, KC_DEL), /* Cut */ + [3] = ACTION_MODS_KEY(MOD_LCTL, KC_INS), /* Copy */ + [4] = ACTION_MODS_KEY(MOD_LSFT, KC_INS), /* Paste */ +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + return MACRO_NONE; +}; + + +void matrix_init_user(void) { + +} + +void matrix_scan_user(void) { + +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + return true; +} + +void led_set_user(uint8_t usb_led) { + +} \ No newline at end of file diff --git a/keyboards/s60-x/keymaps/default/readme.md b/keyboards/s60-x/keymaps/default/readme.md new file mode 100644 index 0000000000..73318dad72 --- /dev/null +++ b/keyboards/s60-x/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for s60-x \ No newline at end of file diff --git a/keyboards/s60-x/keymaps/felix/Makefile b/keyboards/s60-x/keymaps/felix/Makefile new file mode 100644 index 0000000000..251e4631d3 --- /dev/null +++ b/keyboards/s60-x/keymaps/felix/Makefile @@ -0,0 +1,21 @@ +# 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 = yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = yes # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = no # 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 = no # 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. +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif \ No newline at end of file diff --git a/keyboards/s60-x/keymaps/felix/keymap.c b/keyboards/s60-x/keymaps/felix/keymap.c new file mode 100644 index 0000000000..a5ff1ae4d9 --- /dev/null +++ b/keyboards/s60-x/keymaps/felix/keymap.c @@ -0,0 +1,110 @@ +/* +Copyright 2016 Julien Pecqueur +Copyright 2016 Felix Uhl + +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 . +*/ + +#include "s60-x.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Layout 0: Default Layer + * ,-----------------------------------------------------------. + * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \|Del| + * |-----------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|BckSp| + * |-----------------------------------------------------------| + * |Ctrl | A| S| D| F| G| H| J| K| L| ;| '|Return | + * |-----------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /| Up |Fn1 | + * |-----------------------------------------------------------| + * |Fn2 |Gui |Alt | SpaceFn |Alt |Left|Down|Right| + * `-----------------------------------------------------------' + */ + KEYMAP( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \ + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, \ + KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_UP, KC_FN1, \ + KC_FN2, KC_LGUI, KC_LALT, KC_FN0, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT), + + /* Layout 1: Gaming Layer, SpaceFn disabled + * ,-----------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |-----------------------------------------------------------| + * | | | | | | | | | | | | | | | + * |-----------------------------------------------------------| + * | | | | | | | | | | | | | | + * |-----------------------------------------------------------| + * | | | | | | | | | | | | |Fn1 | + * |-----------------------------------------------------------| + * | | NOP| | Space | | | | | + * `-----------------------------------------------------------' + */ + KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_FN1, \ + KC_TRNS, KC_NO, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + /* Layout 2: Function Layer + * ,-----------------------------------------------------------. + * |` | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| |RES| + * |-----------------------------------------------------------| + * | |Prv|Ply|Nxt|Stp| | |PUp|Up |PDn| |Slk|Pau|Ins | + * |-----------------------------------------------------------| + * | |Vl-|Mut|Vl+| | |Hom|Lef|Dow|Rig|End| |PEnt | + * |-----------------------------------------------------------| + * | |Prt| | | |Cal| | | | |Pau |PUp |Rsft| + * |-----------------------------------------------------------| + * | | | | | |Home|PDn |End | + * `-----------------------------------------------------------' + */ + KEYMAP( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DEBUG, RESET, \ + KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP, KC_TRNS, KC_TRNS, KC_PGUP, KC_UP, KC_PGDN, KC_TRNS, KC_SLCK, KC_PAUS, KC_INS, \ + KC_TRNS, KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, KC_TRNS, KC_TRNS, KC_PENT, \ + KC_TRNS, KC_TRNS, KC_PSCR, KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PAUS, KC_PGUP, KC_RSFT, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END), +}; + +/* +* Fn action definition +*/ +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_LAYER_TAP_KEY(2, KC_SPACE), /* SpaceFn layout 1 */ + [1] = ACTION_LAYER_TOGGLE(1), /* Disable SpaceFn */ + [2] = ACTION_LAYER_MOMENTARY(2) /* SpaceFn layout 1 */ +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + return MACRO_NONE; +}; + + +void matrix_init_user(void) { + +} + +void matrix_scan_user(void) { + +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + return true; +} + +void led_set_user(uint8_t usb_led) { + +} \ No newline at end of file diff --git a/keyboards/s60-x/keymaps/felix/readme.md b/keyboards/s60-x/keymaps/felix/readme.md new file mode 100644 index 0000000000..73318dad72 --- /dev/null +++ b/keyboards/s60-x/keymaps/felix/readme.md @@ -0,0 +1 @@ +# The default keymap for s60-x \ No newline at end of file diff --git a/keyboards/s60-x/readme.md b/keyboards/s60-x/readme.md new file mode 100644 index 0000000000..34c48b0b7d --- /dev/null +++ b/keyboards/s60-x/readme.md @@ -0,0 +1,32 @@ +S60-x keyboard firmware +====================== +DIY compact keyboard by Massdrop. This is a port from TMK to QMK based on the [original S60-X Repo](https://github.com/jpec/s60x). + +## S60X Resources +- [Massdrop page](https://www.massdrop.com/buy/sentraq-60-diy-keyboard-kit) + +## Quantum MK Firmware + +For the full Quantum feature list, see [the parent readme.md](/doc/readme.md). + +## Building + +Download or clone the whole firmware and navigate to the keyboards/s60-x folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file. + +Depending on which keymap you would like to use, you will have to compile slightly differently. + +### Default + +To build with the default keymap, simply run `make`. + +### Other Keymaps + +Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant keymap files. + +To build the firmware binary hex file with a keymap just do `make` with `keymap` option like: + +``` +$ make keymap=[default|] +``` + +Keymaps follow the format **__keymap.c__** and are stored in folders in the `keymaps` folder, eg `keymaps/my_keymap/` \ No newline at end of file diff --git a/keyboards/s60-x/s60-x.c b/keyboards/s60-x/s60-x.c new file mode 100644 index 0000000000..417358140c --- /dev/null +++ b/keyboards/s60-x/s60-x.c @@ -0,0 +1,28 @@ +#include "s60-x.h" + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + + matrix_init_user(); +} + +void matrix_scan_kb(void) { + // put your looping keyboard code here + // runs every cycle (a lot) + + matrix_scan_user(); +} + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + // put your per-action keyboard code here + // runs for every action, just before processing by the firmware + + return process_record_user(keycode, record); +} + +void led_set_kb(uint8_t usb_led) { + // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here + + led_set_user(usb_led); +} diff --git a/keyboards/s60-x/s60-x.h b/keyboards/s60-x/s60-x.h new file mode 100644 index 0000000000..714de30db8 --- /dev/null +++ b/keyboards/s60-x/s60-x.h @@ -0,0 +1,44 @@ +/* +Copyright 2012,2013 Jun Wako +Copyright 2015 Vinνcius Nery Cordeiro +Copyright 2016 Felix Uhl + +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 . +*/ + +#ifndef S60X_H +#define S60X_H + +#include "quantum.h" + +/* S60-X keymap definition macro +* K2C, K31 and K3C are extra keys for ISO +* K0D is extra key from split backspace, K3E is extra key from split right shift +*/ + +#define KEYMAP( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, K41, K42, K46, K4A, K4B, K4C, K4D \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, KC_NO } \ +} + +#endif From 38766dbc82cd0765cd88a47bb88b57d58b4b6723 Mon Sep 17 00:00:00 2001 From: Felix Uhl Date: Thu, 11 Aug 2016 09:36:37 +0200 Subject: [PATCH 02/34] Minor changes to keymaps Clarified extra keys Made ISO-keys non-dead in default layout Added non-US backslash on felix layout --- keyboards/s60-x/keymaps/default/keymap.c | 6 +++--- keyboards/s60-x/keymaps/felix/keymap.c | 8 ++++---- keyboards/s60-x/s60-x.h | 7 +++++-- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/keyboards/s60-x/keymaps/default/keymap.c b/keyboards/s60-x/keymaps/default/keymap.c index aa2856525c..3b680c3072 100644 --- a/keyboards/s60-x/keymaps/default/keymap.c +++ b/keyboards/s60-x/keymaps/default/keymap.c @@ -31,10 +31,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------' */ KEYMAP( - GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, BSPC, BSPC, \ TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, BSLS, \ - LCTL, A, S, D, F, G, H, J, K, L, SCLN, QUOT, NO, ENT, \ - LSFT, NO, Z, X, C, V, B, N, M, COMM, DOT, SLSH, NO, RSFT, NO, \ + LCTL, A, S, D, F, G, H, J, K, L, SCLN, QUOT, NUHS, ENT, \ + LSFT, NUBS, Z, X, C, V, B, N, M, COMM, DOT, SLSH, NO, RSFT, NO, \ FN1, LGUI, LALT, FN0, RALT, RGUI, APP, RCTL), /* Layout 1: Function Layer diff --git a/keyboards/s60-x/keymaps/felix/keymap.c b/keyboards/s60-x/keymaps/felix/keymap.c index a5ff1ae4d9..3052dd8160 100644 --- a/keyboards/s60-x/keymaps/felix/keymap.c +++ b/keyboards/s60-x/keymaps/felix/keymap.c @@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-----------------------------------------------------------| * |Ctrl | A| S| D| F| G| H| J| K| L| ;| '|Return | * |-----------------------------------------------------------| - * |Shift | Z| X| C| V| B| N| M| ,| .| /| Up |Fn1 | + * |Shift | Z| X| C| V| B| N| M| ,| .| /| Up | <> | * |-----------------------------------------------------------| * |Fn2 |Gui |Alt | SpaceFn |Alt |Left|Down|Right| * `-----------------------------------------------------------' @@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL, \ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, \ - KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_UP, KC_FN1, \ + KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_UP, KC_NUBS, \ KC_FN2, KC_LGUI, KC_LALT, KC_FN0, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT), /* Layout 1: Gaming Layer, SpaceFn disabled @@ -65,7 +65,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-----------------------------------------------------------| * | |Vl-|Mut|Vl+| | |Hom|Lef|Dow|Rig|End| |PEnt | * |-----------------------------------------------------------| - * | |Prt| | | |Cal| | | | |Pau |PUp |Rsft| + * | |Prt| | | |Cal| | | | |Pau |PUp |Fn1 | * |-----------------------------------------------------------| * | | | | | |Home|PDn |End | * `-----------------------------------------------------------' @@ -74,7 +74,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DEBUG, RESET, \ KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP, KC_TRNS, KC_TRNS, KC_PGUP, KC_UP, KC_PGDN, KC_TRNS, KC_SLCK, KC_PAUS, KC_INS, \ KC_TRNS, KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, KC_TRNS, KC_TRNS, KC_PENT, \ - KC_TRNS, KC_TRNS, KC_PSCR, KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PAUS, KC_PGUP, KC_RSFT, \ + KC_TRNS, KC_TRNS, KC_PSCR, KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PAUS, KC_PGUP, KC_FN1, \ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END), }; diff --git a/keyboards/s60-x/s60-x.h b/keyboards/s60-x/s60-x.h index 714de30db8..68f2ab22f2 100644 --- a/keyboards/s60-x/s60-x.h +++ b/keyboards/s60-x/s60-x.h @@ -23,8 +23,11 @@ along with this program. If not, see . #include "quantum.h" /* S60-X keymap definition macro -* K2C, K31 and K3C are extra keys for ISO -* K0D is extra key from split backspace, K3E is extra key from split right shift +* K31 is the extra key next to short left ISO shift +* K2C is the moved key next to enter on ISO boards +* K3C is the extra key next to short right JIS shift +* K0D is extra key from split backspace +* K3E is extra key from HHKB-style split right shift */ #define KEYMAP( \ From 4725942dc71c2f386d8323865a6255f4dfd2785b Mon Sep 17 00:00:00 2001 From: Felix Uhl Date: Thu, 11 Aug 2016 21:49:10 +0200 Subject: [PATCH 03/34] Small changes Enabled Bootmagic and ISO layouts on felix keymap Added unused pins --- keyboards/s60-x/config.h | 2 +- keyboards/s60-x/keymaps/felix/keymap.c | 17 +++++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/keyboards/s60-x/config.h b/keyboards/s60-x/config.h index d548a99b33..ac7951c247 100644 --- a/keyboards/s60-x/config.h +++ b/keyboards/s60-x/config.h @@ -46,7 +46,7 @@ along with this program. If not, see . */ #define MATRIX_ROW_PINS { B7, B3, B2, B1, B0 } #define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6, C7, E6, F1 } -#define UNUSED_PINS +#define UNUSED_PINS { F0 } /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW diff --git a/keyboards/s60-x/keymaps/felix/keymap.c b/keyboards/s60-x/keymaps/felix/keymap.c index 3052dd8160..7fc0e021c9 100644 --- a/keyboards/s60-x/keymaps/felix/keymap.c +++ b/keyboards/s60-x/keymaps/felix/keymap.c @@ -18,6 +18,7 @@ along with this program. If not, see . const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Layout 0: Default Layer + * RSFT will be replaced once a better way to control magic is found. * ,-----------------------------------------------------------. * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \|Del| * |-----------------------------------------------------------| @@ -25,17 +26,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-----------------------------------------------------------| * |Ctrl | A| S| D| F| G| H| J| K| L| ;| '|Return | * |-----------------------------------------------------------| - * |Shift | Z| X| C| V| B| N| M| ,| .| /| Up | <> | + * |Shift | Z| X| C| V| B| N| M| ,| .| /| Up |RSft| * |-----------------------------------------------------------| * |Fn2 |Gui |Alt | SpaceFn |Alt |Left|Down|Right| * `-----------------------------------------------------------' */ KEYMAP( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL, \ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \ - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, \ - KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_UP, KC_NUBS, \ - KC_FN2, KC_LGUI, KC_LALT, KC_FN0, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT), + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \ + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, \ + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_UP, KC_RSFT, \ + KC_FN2, KC_LGUI, KC_LALT, KC_FN0, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT), /* Layout 1: Gaming Layer, SpaceFn disabled * ,-----------------------------------------------------------. @@ -55,7 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_FN1, \ - KC_TRNS, KC_NO, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + KC_TRNS, KC_NO, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), /* Layout 2: Function Layer * ,-----------------------------------------------------------. @@ -75,7 +76,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP, KC_TRNS, KC_TRNS, KC_PGUP, KC_UP, KC_PGDN, KC_TRNS, KC_SLCK, KC_PAUS, KC_INS, \ KC_TRNS, KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, KC_TRNS, KC_TRNS, KC_PENT, \ KC_TRNS, KC_TRNS, KC_PSCR, KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PAUS, KC_PGUP, KC_FN1, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END), }; /* From 911cc6832598ac9b637fdb11448354d418c197c4 Mon Sep 17 00:00:00 2001 From: Felix Uhl Date: Sun, 14 Aug 2016 00:41:09 +0200 Subject: [PATCH 04/34] Added all original S60-X keymaps All keymaps that were included in VinnyCordeiro's repository were ported to QMK. Main Readme was copied over from VC's repo, slightly altered. Main Makefile was updated to reflect VC's original configuration. Small changes in felix keymap. --- keyboards/s60-x/Makefile | 2 +- keyboards/s60-x/keymaps/custom/keymap.c | 28 +++ keyboards/s60-x/keymaps/custom/readme.md | 15 ++ keyboards/s60-x/keymaps/default/Makefile | 21 -- keyboards/s60-x/keymaps/default/keymap.c | 124 ++++------ keyboards/s60-x/keymaps/default/readme.md | 28 ++- keyboards/s60-x/keymaps/felix/keymap.c | 127 ++++++++-- keyboards/s60-x/keymaps/felix/readme.md | 10 +- keyboards/s60-x/keymaps/hasu/keymap.c | 182 ++++++++++++++ keyboards/s60-x/keymaps/hasu/readme.md | 4 + keyboards/s60-x/keymaps/hhkb/keymap.c | 52 ++++ keyboards/s60-x/keymaps/hhkb/readme.md | 26 ++ keyboards/s60-x/keymaps/iso/keymap.c | 48 ++++ keyboards/s60-x/keymaps/iso/readme.md | 28 +++ keyboards/s60-x/keymaps/jpec/keymap.c | 92 ++++++++ keyboards/s60-x/keymaps/jpec/readme.md | 1 + keyboards/s60-x/keymaps/plain/keymap.c | 25 ++ keyboards/s60-x/keymaps/plain/readme.md | 16 ++ keyboards/s60-x/keymaps/poker/keymap.c | 180 ++++++++++++++ keyboards/s60-x/keymaps/poker/readme.md | 31 +++ keyboards/s60-x/keymaps/poker_bit/keymap.c | 110 +++++++++ keyboards/s60-x/keymaps/poker_bit/readme.md | 31 +++ keyboards/s60-x/keymaps/poker_set/keymap.c | 178 ++++++++++++++ keyboards/s60-x/keymaps/poker_set/readme.md | 31 +++ keyboards/s60-x/keymaps/spacefn/keymap.c | 55 +++++ keyboards/s60-x/keymaps/spacefn/readme.md | 27 +++ keyboards/s60-x/readme.md | 248 ++++++++++++++++++-- keyboards/s60-x/s60-x.h | 5 + 28 files changed, 1577 insertions(+), 148 deletions(-) create mode 100644 keyboards/s60-x/keymaps/custom/keymap.c create mode 100644 keyboards/s60-x/keymaps/custom/readme.md delete mode 100644 keyboards/s60-x/keymaps/default/Makefile create mode 100644 keyboards/s60-x/keymaps/hasu/keymap.c create mode 100644 keyboards/s60-x/keymaps/hasu/readme.md create mode 100644 keyboards/s60-x/keymaps/hhkb/keymap.c create mode 100644 keyboards/s60-x/keymaps/hhkb/readme.md create mode 100644 keyboards/s60-x/keymaps/iso/keymap.c create mode 100644 keyboards/s60-x/keymaps/iso/readme.md create mode 100644 keyboards/s60-x/keymaps/jpec/keymap.c create mode 100644 keyboards/s60-x/keymaps/jpec/readme.md create mode 100644 keyboards/s60-x/keymaps/plain/keymap.c create mode 100644 keyboards/s60-x/keymaps/plain/readme.md create mode 100644 keyboards/s60-x/keymaps/poker/keymap.c create mode 100644 keyboards/s60-x/keymaps/poker/readme.md create mode 100644 keyboards/s60-x/keymaps/poker_bit/keymap.c create mode 100644 keyboards/s60-x/keymaps/poker_bit/readme.md create mode 100644 keyboards/s60-x/keymaps/poker_set/keymap.c create mode 100644 keyboards/s60-x/keymaps/poker_set/readme.md create mode 100644 keyboards/s60-x/keymaps/spacefn/keymap.c create mode 100644 keyboards/s60-x/keymaps/spacefn/readme.md diff --git a/keyboards/s60-x/Makefile b/keyboards/s60-x/Makefile index 57edd5e036..8b51d4609f 100644 --- a/keyboards/s60-x/Makefile +++ b/keyboards/s60-x/Makefile @@ -53,7 +53,7 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096 # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000) MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) CONSOLE_ENABLE ?= yes # Console for debug(+400) diff --git a/keyboards/s60-x/keymaps/custom/keymap.c b/keyboards/s60-x/keymaps/custom/keymap.c new file mode 100644 index 0000000000..59361241fa --- /dev/null +++ b/keyboards/s60-x/keymaps/custom/keymap.c @@ -0,0 +1,28 @@ +#include "keymap_common.h" + +/* Main layer: Test layout, using all keys. + + 0 1 2 3 4 5 6 7 8 9 A B C D E + β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” + 0 β”‚GRAVEβ”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ - β”‚ = β”‚PGUP β”‚BKSPCβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + 1 β”‚ TAB β”‚ Q β”‚ W β”‚ E β”‚ R β”‚ T β”‚ Y β”‚ U β”‚ I β”‚ O β”‚ P β”‚ [ β”‚ ] β”‚ \ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + 2 β”‚CAPSLβ”‚ A β”‚ S β”‚ D β”‚ F β”‚ G β”‚ H β”‚ J β”‚ K β”‚ L β”‚ ; β”‚ ' β”‚PGDN β”‚ENTERβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + 3 β”‚LSHFTβ”‚HOME β”‚ Z β”‚ X β”‚ C β”‚ V β”‚ B β”‚ N β”‚ M β”‚ , β”‚ . β”‚ / β”‚ END β”‚RSHFTβ”‚ UP β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + 4 β”‚LCTRLβ”‚L_GUIβ”‚L_ALTβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ SPC β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚R_ALTβ”‚R_GUIβ”‚ APP β”‚RCTRLβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ +*/ + +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* 0: ANSI qwerty */ + KEYMAP(GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, PGUP, BSPC, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, BSLS, \ + CAPS, A, S, D, F, G, H, J, K, L, SCLN, QUOT, PGDN, ENT , \ + LSFT, HOME, Z, X, C, V, B, N, M, COMM, DOT, SLSH, END, RSFT, UP, \ + LCTL, LGUI, LALT, SPC, RALT, RGUI, APP, RCTL), +}; +const uint16_t PROGMEM fn_actions[] = {}; + diff --git a/keyboards/s60-x/keymaps/custom/readme.md b/keyboards/s60-x/keymaps/custom/readme.md new file mode 100644 index 0000000000..cf87bd915f --- /dev/null +++ b/keyboards/s60-x/keymaps/custom/readme.md @@ -0,0 +1,15 @@ +ο»Ώ### 8 Custom +The custom keymap - [keymap_custom.c](keymap_custom.c) - is where I tested all the switches, not being concerned with a specific layout or layers. It's a plain layout option with the extra keys used on ISO & HHKB layouts being assigned some other keys. + +#### 8.0 Default layer + β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” + β”‚ ` β”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ - β”‚ = β”‚PgUp β”‚BkSpcβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ Tab β”‚ Q β”‚ W β”‚ E β”‚ R β”‚ T β”‚ Y β”‚ U β”‚ I β”‚ O β”‚ P β”‚ [ β”‚ ] β”‚ \ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚Caps β”‚ A β”‚ S β”‚ D β”‚ F β”‚ G β”‚ H β”‚ J β”‚ K β”‚ L β”‚ ; β”‚ ' β”‚PgDwnβ”‚Enterβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚Shiftβ”‚Home β”‚ Z β”‚ X β”‚ C β”‚ V β”‚ B β”‚ N β”‚ M β”‚ , β”‚ . β”‚ / β”‚ End β”‚Shiftβ”‚ Up β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚Ctrl β”‚ Gui β”‚ Alt β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚Spaceβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Alt β”‚ Gui β”‚ App β”‚Ctrl β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ diff --git a/keyboards/s60-x/keymaps/default/Makefile b/keyboards/s60-x/keymaps/default/Makefile deleted file mode 100644 index f4671a9d11..0000000000 --- a/keyboards/s60-x/keymaps/default/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -# 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 = no # 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. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - -ifndef QUANTUM_DIR - include ../../../../Makefile -endif \ No newline at end of file diff --git a/keyboards/s60-x/keymaps/default/keymap.c b/keyboards/s60-x/keymaps/default/keymap.c index 3b680c3072..be7a71aff0 100644 --- a/keyboards/s60-x/keymaps/default/keymap.c +++ b/keyboards/s60-x/keymaps/default/keymap.c @@ -1,92 +1,48 @@ -/* -Copyright 2016 Julien Pecqueur -Copyright 2016 Felix Uhl +#include "keymap_common.h" -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 . +/* 0: Main layer +β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” +β”‚ ESC β”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ - β”‚ = β”‚β–’β–’β–’β–’β–’β”‚BKSPCβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ TAB β”‚ Q β”‚ W β”‚ E β”‚ R β”‚ T β”‚ Y β”‚ U β”‚ I β”‚ O β”‚ P β”‚ [ β”‚ ] β”‚ \ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚CAPSLβ”‚ A β”‚ S β”‚ D β”‚ F β”‚ G β”‚ H β”‚ J β”‚ K β”‚ L β”‚ ; β”‚ ' β”‚β–’β–’β–’β–’β–’β”‚ENTERβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LSHFTβ”‚β–’β–’β–’β–’β–’β”‚ Z β”‚ X β”‚ C β”‚ V β”‚ B β”‚ N β”‚ M β”‚ , β”‚ . β”‚ / β”‚β–’β–’β–’β–’β–’β”‚RSHFTβ”‚β–’β–’β–’β–’β–’β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LCTRLβ”‚L_GUIβ”‚L_ALTβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ SPC β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚R_ALTβ”‚ FN0 β”‚ APP β”‚RCTRLβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ */ -#include "s60-x.h" +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* 0: ANSI qwerty */ + KEYMAP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, BSLS, \ + CAPS, A, S, D, F, G, H, J, K, L, SCLN, QUOT, NO, ENT , \ + LSFT, NO, Z, X, C, V, B, N, M, COMM, DOT, SLSH, NO, RSFT, NO, \ + LCTL, LGUI, LALT, SPC, RALT, FN0, APP, RCTL), -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Layout 0: Default Layer - * ,-----------------------------------------------------------. - * |` | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | - * |-----------------------------------------------------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| - * |-----------------------------------------------------------| - * |Ctrl | A| S| D| F| G| H| J| K| L| ;| '|Return | - * |-----------------------------------------------------------| - * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | - * |-----------------------------------------------------------| - * |Fn1 |Gui |Alt | SpaceFn |Alt |Gui |App |Ctrl| - * `-----------------------------------------------------------' - */ - KEYMAP( - GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, BSPC, BSPC, \ - TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, BSLS, \ - LCTL, A, S, D, F, G, H, J, K, L, SCLN, QUOT, NUHS, ENT, \ - LSFT, NUBS, Z, X, C, V, B, N, M, COMM, DOT, SLSH, NO, RSFT, NO, \ - FN1, LGUI, LALT, FN0, RALT, RGUI, APP, RCTL), - - /* Layout 1: Function Layer - * ,-----------------------------------------------------------. - * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete | - * |-----------------------------------------------------------| - * | |Prv|Ply|Nxt|Stp| | |PUp|Up |PDn| |Slk|Pau|Ins | - * |-----------------------------------------------------------| - * | |Vl-|Mut|Vl+| | |Hom|Lef|Dow|Rig|End| |PEnt | - * |-----------------------------------------------------------| - * | |Prt|Cut|Cop|Pst|Cal| | | | | |CapsLock | - * |-----------------------------------------------------------| - * | | | | | | | | | - * `-----------------------------------------------------------' - */ - KEYMAP( - ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, DEL, \ - TRNS, MPRV, MPLY, MNXT, MSTP, TRNS, TRNS, PGUP, UP, PGDN, TRNS, SLCK, PAUS, INS, \ - TRNS, VOLD, MUTE, VOLU, TRNS, TRNS, HOME, LEFT, DOWN, RGHT, END, TRNS, TRNS, PENT, \ - TRNS, TRNS, PSCR, FN2, FN3, FN4, CALC, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, CAPS, TRNS, \ - TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), +/* 1: Fn layer +β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” +β”‚GRAVEβ”‚ F1 β”‚ F2 β”‚ F3 β”‚ F4 β”‚ F5 β”‚ F6 β”‚ F7 β”‚ F8 β”‚ F9 β”‚ F10 β”‚ F11 β”‚ F12 β”‚β–’β–’β–’β–’β–’β”‚ β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ Up β”‚ β”‚ β”‚ β”‚ β”‚ β”‚PGUP β”‚PGDWNβ”‚PRTSCβ”‚SCLCKβ”‚PAUSEβ”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚Left β”‚Down β”‚Rightβ”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–’β–’β–’β–’β–’β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ +*/ + KEYMAP( + GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, TRNS, \ + TRNS, TRNS, UP, TRNS, TRNS, TRNS, TRNS, TRNS, PGUP, PGDN, PSCR, SLCK, PAUS, TRNS, \ + TRNS, LEFT, DOWN, RGHT, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), }; -/* -* Fn action definition -*/ const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_LAYER_TAP_KEY(1, KC_SPACE), /* SpaceFn layout 1 */ - [1] = ACTION_LAYER_MOMENTARY(1), /* Momentary layout 1 */ - [2] = ACTION_MODS_KEY(MOD_LSFT, KC_DEL), /* Cut */ - [3] = ACTION_MODS_KEY(MOD_LCTL, KC_INS), /* Copy */ - [4] = ACTION_MODS_KEY(MOD_LSFT, KC_INS), /* Paste */ + [0] = ACTION_LAYER_MOMENTARY(1), // to Fn overlay }; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - return MACRO_NONE; -}; - - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} \ No newline at end of file diff --git a/keyboards/s60-x/keymaps/default/readme.md b/keyboards/s60-x/keymaps/default/readme.md index 73318dad72..01cda9df9b 100644 --- a/keyboards/s60-x/keymaps/default/readme.md +++ b/keyboards/s60-x/keymaps/default/readme.md @@ -1 +1,27 @@ -# The default keymap for s60-x \ No newline at end of file +ο»Ώ### 1 Standard - ANSI +The standard keymap is the one that is pre-flashed on the S60-X. + +#### 1.0 Default layer + β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” + β”‚ ESC β”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ - β”‚ = β”‚β–’β–’β–’β–’β–’β”‚BKSPCβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ TAB β”‚ Q β”‚ W β”‚ E β”‚ R β”‚ T β”‚ Y β”‚ U β”‚ I β”‚ O β”‚ P β”‚ [ β”‚ ] β”‚ \ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚CAPSLβ”‚ A β”‚ S β”‚ D β”‚ F β”‚ G β”‚ H β”‚ J β”‚ K β”‚ L β”‚ ; β”‚ ' β”‚β–’β–’β–’β–’β–’β”‚ENTERβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚LSHFTβ”‚β–’β–’β–’β–’β–’β”‚ Z β”‚ X β”‚ C β”‚ V β”‚ B β”‚ N β”‚ M β”‚ , β”‚ . β”‚ / β”‚β–’β–’β–’β–’β–’β”‚RSHFTβ”‚β–’β–’β–’β–’β–’β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚LCTRLβ”‚L_GUIβ”‚L_ALTβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ SPC β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚R_ALTβ”‚ FN0 β”‚ APP β”‚RCTRLβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ +#### 1.1 Fn layer + β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” + β”‚GRAVEβ”‚ F1 β”‚ F2 β”‚ F3 β”‚ F4 β”‚ F5 β”‚ F6 β”‚ F7 β”‚ F8 β”‚ F9 β”‚ F10 β”‚ F11 β”‚ F12 β”‚β–’β–’β–’β–’β–’β”‚ β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚ β”‚ Up β”‚ β”‚ β”‚ β”‚ β”‚ β”‚PGUP β”‚PGDWNβ”‚PRTSCβ”‚SCLCKβ”‚PAUSEβ”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚Left β”‚Down β”‚Rightβ”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–’β–’β–’β–’β–’β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ diff --git a/keyboards/s60-x/keymaps/felix/keymap.c b/keyboards/s60-x/keymaps/felix/keymap.c index 7fc0e021c9..9c620527b0 100644 --- a/keyboards/s60-x/keymaps/felix/keymap.c +++ b/keyboards/s60-x/keymaps/felix/keymap.c @@ -16,26 +16,52 @@ along with this program. If not, see . #include "s60-x.h" +//make keymap a little easier to read +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +enum layer_names { + DEFAULT, + GAMING, + FUNCTION +}; + +enum languages { + GERMAN +}; + +#define LANGUAGE GERMAN + +enum custom_keycodes { + KC_C_AM = SAFE_RANGE, + KC_C_EM, + KC_C_IM, + KC_C_OM, + KC_C_UM, + KC_C_SM, + KC_C_YM, + KC_C_WM +}; + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Layout 0: Default Layer - * RSFT will be replaced once a better way to control magic is found. * ,-----------------------------------------------------------. * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \|Del| * |-----------------------------------------------------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|BckSp| + * |Tab | Q| W| E| R| T| Z| U| I| O| P| [| ]|BckSp| * |-----------------------------------------------------------| * |Ctrl | A| S| D| F| G| H| J| K| L| ;| '|Return | * |-----------------------------------------------------------| - * |Shift | Z| X| C| V| B| N| M| ,| .| /| Up |RSft| + * |Shift | Y| X| C| V| B| N| M| ,| .| /| Up |RSft| * |-----------------------------------------------------------| - * |Fn2 |Gui |Alt | SpaceFn |Alt |Left|Down|Right| + * |Fn2 |Gui |Alt | SpaceFn |Alt |Left|Down|Right| * `-----------------------------------------------------------' */ - KEYMAP( + [DEFAULT] = KEYMAP( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL, \ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Z, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, \ - KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_UP, KC_RSFT, \ + KC_LSFT, KC_NUBS, KC_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_UP, KC_RSFT, \ KC_FN2, KC_LGUI, KC_LALT, KC_FN0, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT), /* Layout 1: Gaming Layer, SpaceFn disabled @@ -51,32 +77,32 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | NOP| | Space | | | | | * `-----------------------------------------------------------' */ - KEYMAP( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_FN1, \ - KC_TRNS, KC_NO, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [GAMING] = KEYMAP( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_FN1, \ + _______, XXXXXXX, _______, KC_SPC, _______, _______, _______, _______), /* Layout 2: Function Layer * ,-----------------------------------------------------------. - * |` | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| |RES| + * |` | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|RES| * |-----------------------------------------------------------| - * | |Prv|Ply|Nxt|Stp| | |PUp|Up |PDn| |Slk|Pau|Ins | + * | | | | |Prv|Ply|Nxt| ά | | Φ | |Prt|Slk|Pau | * |-----------------------------------------------------------| - * | |Vl-|Mut|Vl+| | |Hom|Lef|Dow|Rig|End| |PEnt | + * | | Δ | ί | |Vl-|Mut|Vl+| | | | | |PEnt | * |-----------------------------------------------------------| - * | |Prt| | | |Cal| | | | |Pau |PUp |Fn1 | + * | | | | | |Cal| | | | |Pau |PUp |Fn1 | * |-----------------------------------------------------------| * | | | | | |Home|PDn |End | * `-----------------------------------------------------------' */ - KEYMAP( - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DEBUG, RESET, \ - KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP, KC_TRNS, KC_TRNS, KC_PGUP, KC_UP, KC_PGDN, KC_TRNS, KC_SLCK, KC_PAUS, KC_INS, \ - KC_TRNS, KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, KC_TRNS, KC_TRNS, KC_PENT, \ - KC_TRNS, KC_TRNS, KC_PSCR, KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PAUS, KC_PGUP, KC_FN1, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END), + [FUNCTION] = KEYMAP( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, RESET, \ + _______, _______, KC_C_WM, KC_C_EM, KC_MPRV, KC_MPLY, KC_MNXT, KC_C_UM, KC_C_IM, KC_C_OM, _______, KC_PSCR, KC_SLCK, KC_PAUS, \ + _______, KC_C_AM, KC_C_SM, _______, KC_VOLD, KC_MUTE, KC_VOLU, _______, _______, _______, _______, _______, _______, KC_PENT, \ + _______, KC_C_YM, _______, _______, _______, _______, KC_CALC, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_FN1, \ + _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END), }; /* @@ -102,8 +128,61 @@ void matrix_scan_user(void) { } +bool process_german(uint16_t keycode, keyrecord_t *record) { + uint16_t send_code = 0; + switch (keycode) { + case KC_C_AM: + if (record->event.pressed) { + send_code = KC_Q; + } + break; + + case KC_C_OM: + if (record->event.pressed) { + send_code = KC_P; + } + break; + + case KC_C_UM: + if (record->event.pressed) { + send_code = KC_Y; + } + break; + + case KC_C_SM: + if (record->event.pressed) { + send_code = KC_S; + } + break; + } + + if (send_code == 0) { + return true; + } + else { + register_code(KC_RALT); + register_code(send_code); + unregister_code(send_code); + unregister_code(KC_RALT); + return false; + } +} + bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; + if (keycode == KC_QUOT) { + if (record->event.pressed) { + register_code(KC_QUOT); + unregister_code(KC_QUOT); + register_code(KC_SPACE); + unregister_code(KC_SPACE); + } + return false; + } +#if LANGUAGE == GERMAN + return process_german(keycode, record); +#else + return true; +#endif } void led_set_user(uint8_t usb_led) { diff --git a/keyboards/s60-x/keymaps/felix/readme.md b/keyboards/s60-x/keymaps/felix/readme.md index 73318dad72..7f083dfd08 100644 --- a/keyboards/s60-x/keymaps/felix/readme.md +++ b/keyboards/s60-x/keymaps/felix/readme.md @@ -1 +1,9 @@ -# The default keymap for s60-x \ No newline at end of file +# A non-US ANSI QWERTZ keymap + +This keymap was specifically designed to support ANSI keycaps while retaining the possibility of inputting characters with diacritics that are normally not used in the english language. + +It relies on the US-International keyboard layout, which can be installed in any current operating system without the use of third party hardware. + +Currently, it explicitly supports the following languages, though other languages are readily useable using the AltGr modifier. +- German + diff --git a/keyboards/s60-x/keymaps/hasu/keymap.c b/keyboards/s60-x/keymaps/hasu/keymap.c new file mode 100644 index 0000000000..46ea81fea2 --- /dev/null +++ b/keyboards/s60-x/keymaps/hasu/keymap.c @@ -0,0 +1,182 @@ +#include "keymap_common.h" + +/* + * Hasu + */ +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap 0: Default Layer +β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” +β”‚ Esc β”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ - β”‚ = β”‚β–’β–’β–’β–’β–’β”‚BKSPCβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ TAB β”‚ Q β”‚ W β”‚ E β”‚ R β”‚ T β”‚ Y β”‚ U β”‚ I β”‚ O β”‚ P β”‚ [ β”‚ ] β”‚ \ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚CAPSLβ”‚ A β”‚ S β”‚ D β”‚ F β”‚ G β”‚ H β”‚ J β”‚ K β”‚ L β”‚ Fn2 β”‚ ' β”‚β–’β–’β–’β–’β–’β”‚ENTERβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LSHFTβ”‚β–’β–’β–’β–’β–’β”‚ Z β”‚ X β”‚ C β”‚ V β”‚ B β”‚ N β”‚ M β”‚ , β”‚ . β”‚ Fn1 β”‚β–’β–’β–’β–’β–’β”‚RSHFTβ”‚β–’β–’β–’β–’β–’β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LCTRLβ”‚L_WINβ”‚L_ALTβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ SPC β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚R_ALTβ”‚ Fn3 β”‚ Fn3 β”‚ Fn0 β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + */ + KEYMAP( + ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, BSLS, \ + CAPS, A, S, D, F, G, H, J, K, L, FN2, QUOT, NO, ENT, \ + LSFT, NO, Z, X, C, V, B, N, M, COMM, DOT, FN1, NO, FN9, NO, \ + LCTL, LGUI, LALT, SPC, RALT, FN3, FN3, FN0), + /* Keymap 1: colemak +β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” +β”‚GRAVEβ”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ - β”‚ = β”‚β–’β–’β–’β–’β–’β”‚BKSPCβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ TAB β”‚ Q β”‚ W β”‚ F β”‚ P β”‚ G β”‚ J β”‚ L β”‚ U β”‚ Y β”‚ ; β”‚ [ β”‚ ] β”‚ \ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚BKSPCβ”‚ A β”‚ R β”‚ S β”‚ T β”‚ D β”‚ H β”‚ N β”‚ E β”‚ I β”‚ O β”‚ ' β”‚β–’β–’β–’β–’β–’β”‚ENTERβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LSHFTβ”‚β–’β–’β–’β–’β–’β”‚ Z β”‚ X β”‚ C β”‚ V β”‚ B β”‚ K β”‚ M β”‚ , β”‚ . β”‚ / β”‚β–’β–’β–’β–’β–’β”‚RSHFTβ”‚β–’β–’β–’β–’β–’β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LCTRLβ”‚L_WINβ”‚L_ALTβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ SPC β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚R_ALTβ”‚R_WINβ”‚ APP β”‚ Fn0 β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + */ + KEYMAP( + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ + TAB, Q, W, F, P, G, J, L, U, Y, SCLN, LBRC, RBRC, BSLS, \ + BSPC, A, R, S, T, D, H, N, E, I, O, QUOT, NO, ENT, \ + LSFT, NO, Z, X, C, V, B, K, M, COMM, DOT, SLSH, NO, RSFT, NO, \ + LCTL, LGUI, LALT, SPC, RALT, RGUI, APP, FN0), + /* Keymap 2: dvorak +β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” +β”‚GRAVEβ”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ [ β”‚ ] β”‚β–’β–’β–’β–’β–’β”‚BKSPCβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ TAB β”‚ ' β”‚ , β”‚ . β”‚ P β”‚ Y β”‚ F β”‚ G β”‚ C β”‚ R β”‚ L β”‚ / β”‚ = β”‚ \ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚CAPSLβ”‚ A β”‚ O β”‚ E β”‚ U β”‚ I β”‚ D β”‚ H β”‚ T β”‚ N β”‚ S β”‚ - β”‚β–’β–’β–’β–’β–’β”‚ENTERβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LSHFTβ”‚β–’β–’β–’β–’β–’β”‚ ; β”‚ Q β”‚ J β”‚ K β”‚ X β”‚ B β”‚ M β”‚ W β”‚ V β”‚ Z β”‚β–’β–’β–’β–’β–’β”‚RSHFTβ”‚β–’β–’β–’β–’β–’β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LCTRLβ”‚L_WINβ”‚L_ALTβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ SPC β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚R_ALTβ”‚R_WINβ”‚ APP β”‚ FN0 β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + */ + KEYMAP( + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, LBRC, RBRC, NO, BSPC, \ + TAB, QUOT, COMM, DOT, P, Y, F, G, C, R, L, SLSH, EQL, BSLS, \ + CAPS, A, O, E, U, I, D, H, T, N, S, MINS, NO, ENT, \ + LSFT, NO, SCLN, Q, J, K, X, B, M, W, V, Z, NO, RSFT, NO, \ + LCTL, LGUI, LALT, SPC, RALT, RGUI, APP, FN0), + /* Keymap 3: workman +β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” +β”‚GRAVEβ”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ - β”‚ = β”‚β–’β–’β–’β–’β–’β”‚BKSPCβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ TAB β”‚ Q β”‚ D β”‚ E β”‚ W β”‚ B β”‚ J β”‚ F β”‚ U β”‚ P β”‚ ; β”‚ [ β”‚ ] β”‚ \ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚BKSPCβ”‚ A β”‚ S β”‚ H β”‚ T β”‚ G β”‚ Y β”‚ N β”‚ E β”‚ O β”‚ I β”‚ ' β”‚β–’β–’β–’β–’β–’β”‚ENTERβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LSHFTβ”‚β–’β–’β–’β–’β–’β”‚ Z β”‚ X β”‚ M β”‚ C β”‚ V β”‚ K β”‚ L β”‚ , β”‚ . β”‚ / β”‚β–’β–’β–’β–’β–’β”‚RSHFTβ”‚β–’β–’β–’β–’β–’β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LCTRLβ”‚L_WINβ”‚L_ALTβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ SPC β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚R_ALTβ”‚R_WINβ”‚ APP β”‚ FN0 β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + */ + KEYMAP( + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ + TAB, Q, D, R, W, B, J, F, U, P, SCLN, LBRC, RBRC, BSLS, \ + BSPC, A, S, H, T, G, Y, N, E, O, I, QUOT, NO, ENT, \ + LSFT, NO, Z, X, M, C, V, K, L, COMM, DOT, SLSH, NO, RSFT, NO, \ + LCTL, LGUI, LALT, SPC, RALT, RGUI, APP, FN0), + /* Overlay 4: HHKB mode +β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” +β”‚Graveβ”‚ F1 β”‚ F2 β”‚ F3 β”‚ F4 β”‚ F5 β”‚ F6 β”‚ F7 β”‚ F8 β”‚ F9 β”‚ F10 β”‚ F11 β”‚ F12 β”‚β–’β–’β–’β–’β–’β”‚ Del β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚Caps β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ Psc β”‚ Slk β”‚Pauseβ”‚ Up β”‚ β”‚ Ins β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LCTRLβ”‚ VoD β”‚ VoU β”‚Mute β”‚ β”‚ β”‚NP_* β”‚NP_/ β”‚Home β”‚PgUp β”‚Left β”‚Rightβ”‚β–’β–’β–’β–’β–’β”‚Enterβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LSHFTβ”‚β–’β–’β–’β–’β–’β”‚ β”‚ β”‚ β”‚ β”‚ β”‚NP_+ β”‚NP_- β”‚ End β”‚PgDwnβ”‚Down β”‚β–’β–’β–’β–’β–’β”‚RSHFTβ”‚β–’β–’β–’β–’β–’β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LCTRLβ”‚L_GUIβ”‚L_ALTβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚Spaceβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚R_ALTβ”‚R_GUIβ”‚ App β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + */ + KEYMAP( + GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, DEL, \ + CAPS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, PSCR, SLCK, PAUS, UP, TRNS, INS, \ + LCTL, VOLD, VOLU, MUTE, TRNS, TRNS, PAST, PSLS, HOME, PGUP, LEFT, RGHT, TRNS, ENT, \ + LSFT, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, PPLS, PMNS, END, PGDN, DOWN, TRNS, RSFT, TRNS, \ + LCTL, LGUI, LALT, SPC, RALT, RGUI, FN4, TRNS), + /* Overlay 5: Vi mode (Slash) +β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” +β”‚Graveβ”‚ F1 β”‚ F2 β”‚ F3 β”‚ F4 β”‚ F5 β”‚ F6 β”‚ F7 β”‚ F8 β”‚ F9 β”‚ F10 β”‚ F11 β”‚ F12 β”‚β–’β–’β–’β–’β–’β”‚BkSpcβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ Tab β”‚Home β”‚PgDwnβ”‚ Up β”‚PgUp β”‚ End β”‚Home β”‚PgDwnβ”‚PgUp β”‚ End β”‚ β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LCTRLβ”‚ β”‚Left β”‚Down β”‚Rightβ”‚ β”‚Left β”‚Down β”‚ Up β”‚Rightβ”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚Enterβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LSHFTβ”‚β–’β–’β–’β–’β–’β”‚ β”‚ β”‚ β”‚ β”‚ β”‚Home β”‚PgDwnβ”‚PgUp β”‚ End β”‚ β”‚β–’β–’β–’β–’β–’β”‚RSHFTβ”‚β–’β–’β–’β–’β–’β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LCTRLβ”‚L_GUIβ”‚L_ALTβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚Spaceβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚R_ALTβ”‚R_GUIβ”‚ APP β”‚RCTRLβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + */ + KEYMAP( + GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, BSPC, \ + TAB, HOME, PGDN, UP, PGUP, END, HOME, PGDN, PGUP, END, TRNS, TRNS, TRNS, TRNS, \ + LCTL, TRNS, LEFT, DOWN, RGHT, TRNS, LEFT, DOWN, UP, RGHT, TRNS, TRNS, TRNS, ENT, \ + LSFT, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, HOME, PGDN, PGUP, END, TRNS, TRNS, RSFT, TRNS, \ + LCTL, LGUI, LALT, SPC, RALT, RGUI, APP, RCTL), + /* Overlay 6: Mouse mode (Semicolon/App) +β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” +β”‚Graveβ”‚ F1 β”‚ F2 β”‚ F3 β”‚ F4 β”‚ F5 β”‚ F6 β”‚ F7 β”‚ F8 β”‚ F9 β”‚ F10 β”‚ F11 β”‚ F12 β”‚β–’β–’β–’β–’β–’β”‚BkSpcβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ Tab β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ MwL β”‚ MwD β”‚ MwU β”‚ MwR β”‚ β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LCTRLβ”‚ β”‚ Ac0 β”‚ Ac1 β”‚ Ac2 β”‚ β”‚ McL β”‚ McD β”‚ McU β”‚ McR β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚Enterβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LSFHTβ”‚β–’β–’β–’β–’β–’β”‚ β”‚ β”‚ β”‚ β”‚ Mb3 β”‚ Mb2 β”‚ Mb1 β”‚ Mb4 β”‚ Mb5 β”‚ β”‚β–’β–’β–’β–’β–’β”‚RSHFTβ”‚β–’β–’β–’β–’β–’β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LCTRLβ”‚L_GUIβ”‚L_ALTβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Mb1 β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚ β”‚ β”‚RCTRLβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel + */ + KEYMAP( + GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, BSPC, \ + TAB, TRNS, TRNS, TRNS, TRNS, TRNS, WH_L, WH_D, WH_U, WH_R, TRNS, TRNS, TRNS, TRNS, \ + LCTL, TRNS, ACL0, ACL1, ACL2, TRNS, MS_L, MS_D, MS_U, MS_R, TRNS, TRNS, TRNS, ENT, \ + LSFT, TRNS, TRNS, TRNS, TRNS, TRNS, BTN3, BTN2, BTN1, BTN4, BTN5, TRNS, TRNS, RSFT, TRNS, \ + LCTL, LGUI, LALT, BTN1, TRNS, TRNS, TRNS, RCTL), + /* Overlay 7: Layout selector +β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” +β”‚ Lq β”‚ Lc β”‚ Ld β”‚ Lw β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ Lq β”‚ Lw β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚ Ld β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚ β”‚ Lc β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–’β–’β–’β–’β–’β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + +Lq: set Qwerty layout +Lc: set Colemak layout +Ld: set Dvorak layout +Lw: set Workman layout + + */ + KEYMAP( + FN5, FN6, FN7, FN8, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, FN5, FN8, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, FN7, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, FN6, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), +}; + +/* + * Fn action definition + */ +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_LAYER_MOMENTARY(4), + [1] = ACTION_LAYER_TAP_KEY(5, KC_SLASH), + [2] = ACTION_LAYER_TAP_KEY(6, KC_SCLN), + [3] = ACTION_LAYER_MOMENTARY(6), + [4] = ACTION_LAYER_MOMENTARY(7), // to Layout selector + [5] = ACTION_DEFAULT_LAYER_SET(0), // set qwerty layout + [6] = ACTION_DEFAULT_LAYER_SET(1), // set colemak layout + [7] = ACTION_DEFAULT_LAYER_SET(2), // set dvorak layout + [8] = ACTION_DEFAULT_LAYER_SET(3), // set workman layout + [9] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_GRV), +}; diff --git a/keyboards/s60-x/keymaps/hasu/readme.md b/keyboards/s60-x/keymaps/hasu/readme.md new file mode 100644 index 0000000000..64969b616d --- /dev/null +++ b/keyboards/s60-x/keymaps/hasu/readme.md @@ -0,0 +1,4 @@ +ο»Ώ### 5. Hasu +This is Hasu's favorite keymap with HHKB Fn, Vi cursor and Mousekey layer. See [keymap_hasu.c](keymap_hasu.c) for detail. + +(Hasu is the initial creator of the TMK firmware, in case you weren't aware.) \ No newline at end of file diff --git a/keyboards/s60-x/keymaps/hhkb/keymap.c b/keyboards/s60-x/keymaps/hhkb/keymap.c new file mode 100644 index 0000000000..a6e5b3279a --- /dev/null +++ b/keyboards/s60-x/keymaps/hhkb/keymap.c @@ -0,0 +1,52 @@ +#include "keymap_common.h" + +/* + * HHKB Layout + */ +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* 0: Default layer +β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” +β”‚ Esc β”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ - β”‚ = β”‚ \ β”‚ ` β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ Tab β”‚ Q β”‚ W β”‚ E β”‚ R β”‚ T β”‚ Y β”‚ U β”‚ I β”‚ O β”‚ P β”‚ [ β”‚ ] β”‚BkSpcβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚Ctrl β”‚ A β”‚ S β”‚ D β”‚ F β”‚ G β”‚ H β”‚ J β”‚ K β”‚ L β”‚ Fn3 β”‚ ' β”‚β–’β–’β–’β–’β–’β”‚Enterβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚Shiftβ”‚β–’β–’β–’β–’β–’β”‚ Z β”‚ X β”‚ C β”‚ V β”‚ B β”‚ N β”‚ M β”‚ , β”‚ . β”‚ / β”‚β–’β–’β–’β–’β–’β”‚Shiftβ”‚ Fn β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚β–’β–’β–’β–’β–’β”‚ Gui β”‚ Alt β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚Spaceβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–’β–’β–’β–’β–’β”‚ Alt β”‚ Gui β”‚β–’β–’β–’β–’β–’β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + */ + KEYMAP( + ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, BSLS, GRV, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, BSPC, \ + LCTL, A, S, D, F, G, H, J, K, L, SCLN, QUOT, NO, ENT, \ + LSFT, NO, Z, X, C, V, B, N, M, COMM, DOT, SLSH, NO, RSFT, FN0, \ + NO, LGUI, LALT, SPC, NO, RALT, RGUI, NO), + /* 1: HHKB Fn layer +β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” +β”‚ Pwr β”‚ F1 β”‚ F2 β”‚ F3 β”‚ F4 β”‚ F5 β”‚ F6 β”‚ F7 β”‚ F8 β”‚ F9 β”‚ F10 β”‚ F11 β”‚ F12 β”‚ Ins β”‚ Del β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚Caps β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ Psc β”‚ Slk β”‚ Pus β”‚ Up β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ VoD β”‚ VoU β”‚ Mut β”‚ Ejc β”‚ β”‚NP_* β”‚NP_/ β”‚Home β”‚PgUp β”‚Left β”‚Rightβ”‚β–’β–’β–’β–’β–’β”‚NPEntβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚ β”‚ β”‚ β”‚ β”‚NP_+ β”‚NP_- β”‚ End β”‚PgDwnβ”‚Down β”‚β–’β–’β–’β–’β–’β”‚ β”‚ β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚β–’β–’β–’β–’β–’β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–’β–’β–’β–’β–’β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + */ + KEYMAP( + PWR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \ + CAPS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, PSCR, SLCK, PAUS, UP, TRNS, TRNS, \ + TRNS, VOLD, VOLU, MUTE, EJCT, TRNS, PAST, PSLS, HOME, PGUP, LEFT, RGHT, NO, PENT, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, PPLS, PMNS, END, PGDN, DOWN, NO, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), +}; + +/* + * Fn action definition + */ +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_LAYER_MOMENTARY(1), +}; diff --git a/keyboards/s60-x/keymaps/hhkb/readme.md b/keyboards/s60-x/keymaps/hhkb/readme.md new file mode 100644 index 0000000000..2bceb26dd5 --- /dev/null +++ b/keyboards/s60-x/keymaps/hhkb/readme.md @@ -0,0 +1,26 @@ +ο»Ώ### 7. HHKB +[keymap_hhkb.c](keymap_hhkb.c) emulates original HHKB layers. +#### 7.0: Default layer + β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” + β”‚ Esc β”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ - β”‚ = β”‚ \ β”‚ ` β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ Tab β”‚ Q β”‚ W β”‚ E β”‚ R β”‚ T β”‚ Y β”‚ U β”‚ I β”‚ O β”‚ P β”‚ [ β”‚ ] β”‚BkSpcβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚Ctrl β”‚ A β”‚ S β”‚ D β”‚ F β”‚ G β”‚ H β”‚ J β”‚ K β”‚ L β”‚ Fn3 β”‚ ' β”‚β–’β–’β–’β–’β–’β”‚Enterβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚Shiftβ”‚β–’β–’β–’β–’β–’β”‚ Z β”‚ X β”‚ C β”‚ V β”‚ B β”‚ N β”‚ M β”‚ , β”‚ . β”‚ / β”‚β–’β–’β–’β–’β–’β”‚Shiftβ”‚ Fn β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚β–’β–’β–’β–’β–’β”‚ Gui β”‚ Alt β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚Spaceβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–’β–’β–’β–’β–’β”‚ Alt β”‚ Gui β”‚β–’β–’β–’β–’β–’β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ +#### 7.1: HHKB Fn layer + β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” + β”‚ Pwr β”‚ F1 β”‚ F2 β”‚ F3 β”‚ F4 β”‚ F5 β”‚ F6 β”‚ F7 β”‚ F8 β”‚ F9 β”‚ F10 β”‚ F11 β”‚ F12 β”‚ Ins β”‚ Del β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚Caps β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ Psc β”‚ Slk β”‚ Pus β”‚ Up β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚ VoD β”‚ VoU β”‚ Mut β”‚ Ejc β”‚ β”‚ * β”‚ / β”‚Home β”‚PgUp β”‚Left β”‚Rightβ”‚β–’β–’β–’β–’β–’β”‚Enterβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ + β”‚ - β”‚ End β”‚PgDwnβ”‚Down β”‚β–’β–’β–’β–’β–’β”‚ β”‚ β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚β–’β–’β–’β–’β–’β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–’β–’β–’β–’β–’β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ diff --git a/keyboards/s60-x/keymaps/iso/keymap.c b/keyboards/s60-x/keymaps/iso/keymap.c new file mode 100644 index 0000000000..ad597cd7d4 --- /dev/null +++ b/keyboards/s60-x/keymaps/iso/keymap.c @@ -0,0 +1,48 @@ +#include "keymap_common.h" + +/* 0: Main layer +β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” +β”‚ ESC β”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ - β”‚ = β”‚β–’β–’β–’β–’β–’β”‚BKSPCβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ TAB β”‚ Q β”‚ W β”‚ E β”‚ R β”‚ T β”‚ Y β”‚ U β”‚ I β”‚ O β”‚ P β”‚ [ β”‚ ] β”‚β–’β–’β–’β–’β–’β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚CAPSLβ”‚ A β”‚ S β”‚ D β”‚ F β”‚ G β”‚ H β”‚ J β”‚ K β”‚ L β”‚ ; β”‚ ' β”‚NUHS β”‚ENTERβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LSHFTβ”‚ \ β”‚ Z β”‚ X β”‚ C β”‚ V β”‚ B β”‚ N β”‚ M β”‚ , β”‚ . β”‚ / β”‚β–’β–’β–’β–’β–’β”‚RSHFTβ”‚β–’β–’β–’β–’β–’β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LCTRLβ”‚L_GUIβ”‚L_ALTβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ SPC β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚R_ALTβ”‚ FN0 β”‚ APP β”‚RCTRLβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ +*/ + +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* 0: ANSI qwerty */ + KEYMAP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, NO, \ + CAPS, A, S, D, F, G, H, J, K, L, SCLN, QUOT, NUHS, ENT , \ + LSFT, BSLS, Z, X, C, V, B, N, M, COMM, DOT, SLSH, NO, RSFT, NO, \ + LCTL, LGUI, LALT, SPC, RALT, FN0, APP, RCTL), + +/* 1: Fn layer +β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” +β”‚GRAVEβ”‚ F1 β”‚ F2 β”‚ F3 β”‚ F4 β”‚ F5 β”‚ F6 β”‚ F7 β”‚ F8 β”‚ F9 β”‚ F10 β”‚ F11 β”‚ F12 β”‚β–’β–’β–’β–’β–’β”‚ β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ Up β”‚ β”‚ β”‚ β”‚ β”‚ β”‚PGUP β”‚PGDWNβ”‚PRTSCβ”‚SCLCKβ”‚PAUSEβ”‚β–’β–’β–’β–’β–’β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚Left β”‚Down β”‚Rightβ”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–’β–’β–’β–’β–’β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ +*/ + KEYMAP( + GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, TRNS, \ + TRNS, TRNS, UP, TRNS, TRNS, TRNS, TRNS, TRNS, PGUP, PGDN, PSCR, SLCK, PAUS, TRNS, \ + TRNS, LEFT, DOWN, RGHT, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), +}; + +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_LAYER_MOMENTARY(1), // to Fn overlay +}; diff --git a/keyboards/s60-x/keymaps/iso/readme.md b/keyboards/s60-x/keymaps/iso/readme.md new file mode 100644 index 0000000000..2c06bf86f0 --- /dev/null +++ b/keyboards/s60-x/keymaps/iso/readme.md @@ -0,0 +1,28 @@ +ο»Ώ### 2 Standard - ISO +The same as the standard keymap, but with additional ISO keys. + + +#### 2.0 Default layer + β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” + β”‚ ESC β”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ - β”‚ = β”‚β–’β–’β–’β–’β–’β”‚BKSPCβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ TAB β”‚ Q β”‚ W β”‚ E β”‚ R β”‚ T β”‚ Y β”‚ U β”‚ I β”‚ O β”‚ P β”‚ [ β”‚ ] β”‚β–’β–’β–’β–’β–’β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚CAPSLβ”‚ A β”‚ S β”‚ D β”‚ F β”‚ G β”‚ H β”‚ J β”‚ K β”‚ L β”‚ ; β”‚ ' β”‚NUHS β”‚ENTERβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚LSHFTβ”‚ \ β”‚ Z β”‚ X β”‚ C β”‚ V β”‚ B β”‚ N β”‚ M β”‚ , β”‚ . β”‚ / β”‚β–’β–’β–’β–’β–’β”‚RSHFTβ”‚β–’β–’β–’β–’β–’β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚LCTRLβ”‚L_GUIβ”‚L_ALTβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ SPC β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚R_ALTβ”‚ FN0 β”‚ APP β”‚RCTRLβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ +#### 2.1 Fn layer + β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” + β”‚GRAVEβ”‚ F1 β”‚ F2 β”‚ F3 β”‚ F4 β”‚ F5 β”‚ F6 β”‚ F7 β”‚ F8 β”‚ F9 β”‚ F10 β”‚ F11 β”‚ F12 β”‚β–’β–’β–’β–’β–’β”‚ β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚ β”‚ Up β”‚ β”‚ β”‚ β”‚ β”‚ β”‚PGUP β”‚PGDWNβ”‚PRTSCβ”‚SCLCKβ”‚PAUSEβ”‚β–’β–’β–’β–’β–’β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚Left β”‚Down β”‚Rightβ”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–’β–’β–’β–’β–’β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ diff --git a/keyboards/s60-x/keymaps/jpec/keymap.c b/keyboards/s60-x/keymaps/jpec/keymap.c new file mode 100644 index 0000000000..3b680c3072 --- /dev/null +++ b/keyboards/s60-x/keymaps/jpec/keymap.c @@ -0,0 +1,92 @@ +/* +Copyright 2016 Julien Pecqueur +Copyright 2016 Felix Uhl + +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 . +*/ + +#include "s60-x.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Layout 0: Default Layer + * ,-----------------------------------------------------------. + * |` | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | + * |-----------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| + * |-----------------------------------------------------------| + * |Ctrl | A| S| D| F| G| H| J| K| L| ;| '|Return | + * |-----------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | + * |-----------------------------------------------------------| + * |Fn1 |Gui |Alt | SpaceFn |Alt |Gui |App |Ctrl| + * `-----------------------------------------------------------' + */ + KEYMAP( + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, BSPC, BSPC, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, BSLS, \ + LCTL, A, S, D, F, G, H, J, K, L, SCLN, QUOT, NUHS, ENT, \ + LSFT, NUBS, Z, X, C, V, B, N, M, COMM, DOT, SLSH, NO, RSFT, NO, \ + FN1, LGUI, LALT, FN0, RALT, RGUI, APP, RCTL), + + /* Layout 1: Function Layer + * ,-----------------------------------------------------------. + * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete | + * |-----------------------------------------------------------| + * | |Prv|Ply|Nxt|Stp| | |PUp|Up |PDn| |Slk|Pau|Ins | + * |-----------------------------------------------------------| + * | |Vl-|Mut|Vl+| | |Hom|Lef|Dow|Rig|End| |PEnt | + * |-----------------------------------------------------------| + * | |Prt|Cut|Cop|Pst|Cal| | | | | |CapsLock | + * |-----------------------------------------------------------| + * | | | | | | | | | + * `-----------------------------------------------------------' + */ + KEYMAP( + ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, DEL, \ + TRNS, MPRV, MPLY, MNXT, MSTP, TRNS, TRNS, PGUP, UP, PGDN, TRNS, SLCK, PAUS, INS, \ + TRNS, VOLD, MUTE, VOLU, TRNS, TRNS, HOME, LEFT, DOWN, RGHT, END, TRNS, TRNS, PENT, \ + TRNS, TRNS, PSCR, FN2, FN3, FN4, CALC, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, CAPS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), +}; + +/* +* Fn action definition +*/ +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_LAYER_TAP_KEY(1, KC_SPACE), /* SpaceFn layout 1 */ + [1] = ACTION_LAYER_MOMENTARY(1), /* Momentary layout 1 */ + [2] = ACTION_MODS_KEY(MOD_LSFT, KC_DEL), /* Cut */ + [3] = ACTION_MODS_KEY(MOD_LCTL, KC_INS), /* Copy */ + [4] = ACTION_MODS_KEY(MOD_LSFT, KC_INS), /* Paste */ +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + return MACRO_NONE; +}; + + +void matrix_init_user(void) { + +} + +void matrix_scan_user(void) { + +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + return true; +} + +void led_set_user(uint8_t usb_led) { + +} \ No newline at end of file diff --git a/keyboards/s60-x/keymaps/jpec/readme.md b/keyboards/s60-x/keymaps/jpec/readme.md new file mode 100644 index 0000000000..73318dad72 --- /dev/null +++ b/keyboards/s60-x/keymaps/jpec/readme.md @@ -0,0 +1 @@ +# The default keymap for s60-x \ No newline at end of file diff --git a/keyboards/s60-x/keymaps/plain/keymap.c b/keyboards/s60-x/keymaps/plain/keymap.c new file mode 100644 index 0000000000..0f0cdee2a4 --- /dev/null +++ b/keyboards/s60-x/keymaps/plain/keymap.c @@ -0,0 +1,25 @@ +#include "keymap_common.h" + +/* Main layer: +β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” +β”‚ ESC β”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ - β”‚ = β”‚β–’β–’β–’β–’β–’β”‚BKSPCβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ TAB β”‚ Q β”‚ W β”‚ E β”‚ R β”‚ T β”‚ Y β”‚ U β”‚ I β”‚ O β”‚ P β”‚ [ β”‚ ] β”‚ \ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚CAPSLβ”‚ A β”‚ S β”‚ D β”‚ F β”‚ G β”‚ H β”‚ J β”‚ K β”‚ L β”‚ ; β”‚ ' β”‚β–’β–’β–’β–’β–’β”‚ENTERβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LSHFTβ”‚β–’β–’β–’β–’β–’β”‚ Z β”‚ X β”‚ C β”‚ V β”‚ B β”‚ N β”‚ M β”‚ , β”‚ . β”‚ / β”‚β–’β–’β–’β–’β–’β”‚RSHFTβ”‚β–’β–’β–’β–’β–’β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LCTRLβ”‚L_GUIβ”‚L_ALTβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ SPC β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚R_ALTβ”‚R_GUIβ”‚ APP β”‚RCTRLβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ +*/ + +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* 0: qwerty */ + KEYMAP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, BSLS, \ + CAPS, A, S, D, F, G, H, J, K, L, SCLN, QUOT, NO, ENT, \ + LSFT, NO, Z, X, C, V, B, N, M, COMM, DOT, SLSH, NO, RSFT, NO, \ + LCTL, LGUI, LALT, SPC, RALT, RGUI, APP, RCTL), +}; +const uint16_t PROGMEM fn_actions[] = {}; diff --git a/keyboards/s60-x/keymaps/plain/readme.md b/keyboards/s60-x/keymaps/plain/readme.md new file mode 100644 index 0000000000..ab13323e3b --- /dev/null +++ b/keyboards/s60-x/keymaps/plain/readme.md @@ -0,0 +1,16 @@ +ο»Ώ### 4. Plain +Without any Fn layer this will be useful if you want to use key remapping tool like AHK on host. +See [keymap_plain.c](keymap_plain.c) for detail. + +#### 4.0 Plain Default layer + β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” + β”‚ Esc β”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ - β”‚ = β”‚β–’β–’β–’β–’β–’β”‚BkSpcβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ Tab β”‚ Q β”‚ W β”‚ E β”‚ R β”‚ T β”‚ Y β”‚ U β”‚ I β”‚ O β”‚ P β”‚ [ β”‚ ] β”‚ \ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚Caps β”‚ A β”‚ S β”‚ D β”‚ F β”‚ G β”‚ H β”‚ J β”‚ K β”‚ L β”‚ ; β”‚ ' β”‚β–’β–’β–’β–’β–’β”‚Enterβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚Shiftβ”‚β–’β–’β–’β–’β–’β”‚ Z β”‚ X β”‚ C β”‚ V β”‚ B β”‚ N β”‚ M β”‚ , β”‚ . β”‚ / β”‚β–’β–’β–’β–’β–’β”‚Shiftβ”‚β–’β–’β–’β–’β–’β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚Ctrl β”‚ Gui β”‚ Alt β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚Spaceβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Alt β”‚ Gui β”‚ App β”‚Ctrl β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ diff --git a/keyboards/s60-x/keymaps/poker/keymap.c b/keyboards/s60-x/keymaps/poker/keymap.c new file mode 100644 index 0000000000..5fc970a040 --- /dev/null +++ b/keyboards/s60-x/keymaps/poker/keymap.c @@ -0,0 +1,180 @@ +#include "keymap_common.h" + +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* 0: qwerty +β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” +β”‚GRAVEβ”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ - β”‚ = β”‚β–’β–’β–’β–’β–’β”‚BKSPCβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ TAB β”‚ Q β”‚ W β”‚ E β”‚ R β”‚ T β”‚ Y β”‚ U β”‚ I β”‚ O β”‚ P β”‚ [ β”‚ ] β”‚ \ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚CAPSLβ”‚ A β”‚ S β”‚ D β”‚ F β”‚ G β”‚ H β”‚ J β”‚ K β”‚ L β”‚ ; β”‚ ' β”‚β–’β–’β–’β–’β–’β”‚ENTERβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LSHFTβ”‚β–’β–’β–’β–’β–’β”‚ Z β”‚ X β”‚ C β”‚ V β”‚ B β”‚ N β”‚ M β”‚ , β”‚ . β”‚ / β”‚β–’β–’β–’β–’β–’β”‚RSHFTβ”‚β–’β–’β–’β–’β–’β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LCTRLβ”‚L_WINβ”‚L_ALTβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ SPC β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn0 β”‚R_WINβ”‚ APP β”‚RCTRLβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + */ + KEYMAP( + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, BSLS, \ + CAPS, A, S, D, F, G, H, J, K, L, SCLN, QUOT, NO, ENT, \ + LSFT, NO, Z, X, C, V, B, N, M, COMM, DOT, SLSH, NO, RSFT, NO, \ + LCTL, LGUI, LALT, SPC, FN0, RGUI, APP, RCTL), + /* 1: colemak +β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” +β”‚GRAVEβ”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ - β”‚ = β”‚β–’β–’β–’β–’β–’β”‚BKSPCβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ TAB β”‚ Q β”‚ W β”‚ F β”‚ P β”‚ G β”‚ J β”‚ L β”‚ U β”‚ Y β”‚ ; β”‚ [ β”‚ ] β”‚ \ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚BKSPCβ”‚ A β”‚ R β”‚ S β”‚ T β”‚ D β”‚ H β”‚ N β”‚ E β”‚ I β”‚ O β”‚ ' β”‚β–’β–’β–’β–’β–’β”‚ENTERβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LSHFTβ”‚β–’β–’β–’β–’β–’β”‚ Z β”‚ X β”‚ C β”‚ V β”‚ B β”‚ K β”‚ M β”‚ , β”‚ . β”‚ / β”‚β–’β–’β–’β–’β–’β”‚RSHFTβ”‚β–’β–’β–’β–’β–’β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LCTRLβ”‚L_WINβ”‚L_ALTβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ SPC β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn0 β”‚R_WINβ”‚ APP β”‚RCTRLβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + */ + KEYMAP( + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ + TAB, Q, W, F, P, G, J, L, U, Y, SCLN, LBRC, RBRC, BSLS, \ + BSPC, A, R, S, T, D, H, N, E, I, O, QUOT, NO, ENT, \ + LSFT, NO, Z, X, C, V, B, K, M, COMM, DOT, SLSH, NO, RSFT, NO, \ + LCTL, LGUI, LALT, SPC, FN0, RGUI, APP, RCTL), + /* 2: dvorak +β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” +β”‚GRAVEβ”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ [ β”‚ ] β”‚β–’β–’β–’β–’β–’β”‚BKSPCβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ TAB β”‚ ' β”‚ , β”‚ . β”‚ P β”‚ Y β”‚ F β”‚ G β”‚ C β”‚ R β”‚ L β”‚ / β”‚ = β”‚ \ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚CAPSLβ”‚ A β”‚ O β”‚ E β”‚ U β”‚ I β”‚ D β”‚ H β”‚ T β”‚ N β”‚ S β”‚ - β”‚β–’β–’β–’β–’β–’β”‚ENTERβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LSHFTβ”‚β–’β–’β–’β–’β–’β”‚ ; β”‚ Q β”‚ J β”‚ K β”‚ X β”‚ B β”‚ M β”‚ W β”‚ V β”‚ Z β”‚β–’β–’β–’β–’β–’β”‚RSHFTβ”‚β–’β–’β–’β–’β–’β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LCTRLβ”‚L_WINβ”‚L_ALTβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ SPC β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn0 β”‚R_WINβ”‚ APP β”‚RCTRLβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + */ + KEYMAP( + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, LBRC, RBRC, NO, BSPC, \ + TAB, QUOT, COMM, DOT, P, Y, F, G, C, R, L, SLSH, EQL, BSLS, \ + CAPS, A, O, E, U, I, D, H, T, N, S, MINS, NO, ENT, \ + LSFT, NO, SCLN, Q, J, K, X, B, M, W, V, Z, NO, RSFT, NO, \ + LCTL, LGUI, LALT, SPC, FN0, RGUI, APP, RCTL), + /* 3: workman +β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” +β”‚GRAVEβ”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ - β”‚ = β”‚β–’β–’β–’β–’β–’β”‚BKSPCβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ TAB β”‚ Q β”‚ D β”‚ E β”‚ W β”‚ B β”‚ J β”‚ F β”‚ U β”‚ P β”‚ ; β”‚ [ β”‚ ] β”‚ \ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚BKSPCβ”‚ A β”‚ S β”‚ H β”‚ T β”‚ G β”‚ Y β”‚ N β”‚ E β”‚ O β”‚ I β”‚ ' β”‚β–’β–’β–’β–’β–’β”‚ENTERβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LSHFTβ”‚β–’β–’β–’β–’β–’β”‚ Z β”‚ X β”‚ M β”‚ C β”‚ V β”‚ K β”‚ L β”‚ , β”‚ . β”‚ / β”‚β–’β–’β–’β–’β–’β”‚RSHFTβ”‚β–’β–’β–’β–’β–’β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LCTRLβ”‚L_WINβ”‚L_ALTβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ SPC β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn0 β”‚R_WINβ”‚ APP β”‚RCTRLβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + */ + KEYMAP( + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ + TAB, Q, D, R, W, B, J, F, U, P, SCLN, LBRC, RBRC, BSLS, \ + BSPC, A, S, H, T, G, Y, N, E, O, I, QUOT, NO, ENT, \ + LSFT, NO, Z, X, M, C, V, K, L, COMM, DOT, SLSH, NO, RSFT, NO, \ + LCTL, LGUI, LALT, SPC, FN0, RGUI, APP, RCTL), + /* 4: Poker with Arrow +β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ Up β”‚β–’β–’β–’β–’β–’β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚Left β”‚Down β”‚Rightβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + */ + KEYMAP( + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, UP, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, LEFT, DOWN, RGHT), + /* 5: Poker with Esc +β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” +β”‚ ESC β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–’β–’β–’β–’β–’β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + */ + KEYMAP( + ESC, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), + /* 6: Poker Fn +β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” +β”‚ Esc β”‚ F1 β”‚ F2 β”‚ F3 β”‚ F4 β”‚ F5 β”‚ F6 β”‚ F7 β”‚ F8 β”‚ F9 β”‚ F10 β”‚ F11 β”‚ F12 β”‚β–’β–’β–’β–’β–’β”‚ β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ FnQ β”‚ Up β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ Cal β”‚ β”‚Home β”‚ Ins β”‚ FnL β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚Left β”‚Down β”‚Rightβ”‚ β”‚ β”‚ Psc β”‚ Slk β”‚Pauseβ”‚ β”‚ Tsk β”‚ End β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚β–’β–’β–’β–’β–’β”‚ Del β”‚ β”‚ Web β”‚Mute β”‚ VoU β”‚ VoD β”‚ β”‚PgUp β”‚PgDwnβ”‚ Del β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–’β–’β–’β–’β–’β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ FnS β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + +Fn: to Fn overlay +FnL: to Layout selector overaly +FnQ: toggle Esc overlay +FnS: toggle Arrow overlay + + */ + KEYMAP( + ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, TRNS, \ + TRNS, FN2, UP, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, CALC, TRNS, HOME, INS, FN4, \ + TRNS, LEFT, DOWN, RGHT, TRNS, TRNS, PSCR, SLCK, PAUS, TRNS, FN3, END, TRNS, TRNS, \ + TRNS, TRNS, DEL, TRNS, WHOM, MUTE, VOLU, VOLD, TRNS, PGUP, PGDN, DEL, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, FN1, TRNS, TRNS, TRNS, TRNS), + /* 7: Layout selector +β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” +β”‚ Lq β”‚ Lc β”‚ Ld β”‚ Lw β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ Lq β”‚ Lw β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚ Ld β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚ β”‚ Lc β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–’β–’β–’β–’β–’β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + +Lq: set Qwerty layout +Lc: set Colemak layout +Ld: set Dvorak layout +Lw: set Workman layout + + */ + KEYMAP( + FN5, FN6, FN7, FN8, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, FN5, FN8, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, FN7, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, FN6, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), +}; +const uint16_t PROGMEM fn_actions[] = { + /* Poker Layout */ + [0] = ACTION_LAYER_MOMENTARY(6), // to Fn overlay + [1] = ACTION_LAYER_TOGGLE(4), // toggle arrow overlay + [2] = ACTION_LAYER_TOGGLE(5), // toggle Esc overlay + [3] = ACTION_MODS_KEY(MOD_RCTL|MOD_RSFT, KC_ESC), // Task(RControl,RShift+Esc) + [4] = ACTION_LAYER_MOMENTARY(7), // to Layout selector + [5] = ACTION_DEFAULT_LAYER_SET(0), // set qwerty layout + [6] = ACTION_DEFAULT_LAYER_SET(1), // set colemak layout + [7] = ACTION_DEFAULT_LAYER_SET(2), // set dvorak layout + [8] = ACTION_DEFAULT_LAYER_SET(3), // set workman layout +}; diff --git a/keyboards/s60-x/keymaps/poker/readme.md b/keyboards/s60-x/keymaps/poker/readme.md new file mode 100644 index 0000000000..0d8be9d0f8 --- /dev/null +++ b/keyboards/s60-x/keymaps/poker/readme.md @@ -0,0 +1,31 @@ +ο»Ώ### 3 Poker +[keymap_poker.c](keymap_poker.c) emulates original Poker layers +while both [keymap_poker_bit.c](keymap_poker_bit.c) and [keymap_poker_set.c](keymap_poker_set.c) implements same layout in different way and they fix a minor issue of original Poker and enhance arrow keys. + + Fn + Esc = ` + Fn + {left, down, up, right} = {home, pgdown, pgup, end} + +#### 3.0 Default layer + β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” + β”‚ ` β”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ - β”‚ = β”‚β–’β–’β–’β–’β–’β”‚BkSpcβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ Tab β”‚ Q β”‚ W β”‚ E β”‚ R β”‚ T β”‚ Y β”‚ U β”‚ I β”‚ O β”‚ P β”‚ [ β”‚ ] β”‚ \ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚Caps β”‚ A β”‚ S β”‚ D β”‚ F β”‚ G β”‚ H β”‚ J β”‚ K β”‚ L β”‚ ; β”‚ ' β”‚β–’β–’β–’β–’β–’β”‚Enterβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚Shiftβ”‚β–’β–’β–’β–’β–’β”‚ Z β”‚ X β”‚ C β”‚ V β”‚ B β”‚ N β”‚ M β”‚ , β”‚ . β”‚ / β”‚β–’β–’β–’β–’β–’β”‚Shiftβ”‚β–’β–’β–’β–’β–’β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚Ctrl β”‚ Gui β”‚ Alt β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚Spaceβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn β”‚ Gui β”‚ App β”‚Ctrl β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ +#### 3.1 Poker Fn layer + β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” + β”‚ Esc β”‚ F1 β”‚ F2 β”‚ F3 β”‚ F4 β”‚ F5 β”‚ F6 β”‚ F7 β”‚ F8 β”‚ F9 β”‚ F10 β”‚ F11 β”‚ F12 β”‚β–’β–’β–’β–’β–’β”‚ β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚ FnQ β”‚ Up β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ Cal β”‚ β”‚Home β”‚ Ins β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚Left β”‚Down β”‚Rightβ”‚ β”‚ β”‚ Psc β”‚ Slk β”‚Pauseβ”‚ β”‚ Tsk β”‚ End β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚β–’β–’β–’β–’β–’β”‚ Del β”‚ β”‚ Web β”‚Mute β”‚ VoU β”‚ VoD β”‚ β”‚PgUp β”‚PgDwnβ”‚ Del β”‚β–’β–’β–’β–’β–’β”‚ Up β”‚β–’β–’β–’β–’β–’β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ FnS β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn β”‚Left β”‚Down β”‚Rightβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ diff --git a/keyboards/s60-x/keymaps/poker_bit/keymap.c b/keyboards/s60-x/keymaps/poker_bit/keymap.c new file mode 100644 index 0000000000..4a4cfd1be8 --- /dev/null +++ b/keyboards/s60-x/keymaps/poker_bit/keymap.c @@ -0,0 +1,110 @@ +#include "keymap_common.h" + +// Poker fix with toggle and bit operation +// Fn + Esc = ` +// Fn + {left, down, up, right} = {home, pgdown, pgup, end} +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* 0: qwerty +β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” +β”‚GRAVEβ”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ - β”‚ = β”‚β–’β–’β–’β–’β–’β”‚BKSPCβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ TAB β”‚ Q β”‚ W β”‚ E β”‚ R β”‚ T β”‚ Y β”‚ U β”‚ I β”‚ O β”‚ P β”‚ [ β”‚ ] β”‚ \ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LCTRLβ”‚ A β”‚ S β”‚ D β”‚ F β”‚ G β”‚ H β”‚ J β”‚ K β”‚ L β”‚ ; β”‚ ' β”‚β–’β–’β–’β–’β–’β”‚ENTERβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LSHFTβ”‚β–’β–’β–’β–’β–’β”‚ Z β”‚ X β”‚ C β”‚ V β”‚ B β”‚ N β”‚ M β”‚ , β”‚ . β”‚ / β”‚β–’β–’β–’β–’β–’β”‚RSHFTβ”‚β–’β–’β–’β–’β–’β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LCTRLβ”‚L_WINβ”‚L_ALTβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ SPC β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn0 β”‚R_WINβ”‚ APP β”‚RCTRLβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + */ + KEYMAP( + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, BSLS, \ + LCTL, A, S, D, F, G, H, J, K, L, SCLN, QUOT, NO, ENT, \ + LSFT, NO, Z, X, C, V, B, N, M, COMM, DOT, SLSH, NO, RSFT, NO, \ + LCTL, LGUI, LALT, SPC, FN0, RGUI, APP, RCTL), + /* 4: Poker Default + Fn'd +β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” +β”‚ Esc β”‚ F1 β”‚ F2 β”‚ F3 β”‚ F4 β”‚ F5 β”‚ F6 β”‚ F7 β”‚ F8 β”‚ F9 β”‚ F10 β”‚ F11 β”‚ F12 β”‚β–’β–’β–’β–’β–’β”‚ β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚Caps β”‚ Fn2 β”‚ Up β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ Cal β”‚ β”‚Home β”‚ Ins β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚Left β”‚Down β”‚Rightβ”‚ β”‚ β”‚ Psc β”‚ Slk β”‚Pauseβ”‚ β”‚ Fn4 β”‚ End β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚β–’β–’β–’β–’β–’β”‚ Del β”‚ β”‚ Web β”‚Mute β”‚ VoU β”‚ VoD β”‚ β”‚PgUp β”‚PgDwnβ”‚ Del β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–’β–’β–’β–’β–’β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn1 β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + */ + [4] = KEYMAP( + TRNS, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, TRNS, \ + CAPS, FN2, UP, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, CALC, TRNS, HOME, INS, TRNS, \ + TRNS, LEFT, DOWN, RGHT, TRNS, TRNS, PSCR, SLCK, PAUS, TRNS, FN4, END, TRNS, TRNS, \ + TRNS, TRNS, DEL, TRNS, WHOM, MUTE, VOLU, VOLD, TRNS, PGUP, PGDN, DEL, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, FN1, TRNS, TRNS, TRNS, TRNS), + /* 5: Poker with Arrow +β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚PgUp β”‚β–’β–’β–’β–’β–’β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn3 β”‚Home β”‚PgDwnβ”‚ End β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + */ + KEYMAP( + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, PGUP, TRNS, \ + TRNS, TRNS, TRNS, TRNS, FN3, HOME, PGDN, END), + /* 6: Poker with Esc +β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” +β”‚ ESC β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–’β–’β–’β–’β–’β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + */ + KEYMAP( + ESC, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), + /* 7: Poker with Arrow + Fn'd +β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ Up β”‚β–’β–’β–’β–’β–’β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚Left β”‚Down β”‚Rightβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + */ + KEYMAP( + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, UP, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, LEFT, DOWN, RGHT), +}; +const uint16_t PROGMEM fn_actions[] = { + /* Poker Layout */ + [0] = ACTION_LAYER_BIT_XOR(1, 0b0101, ON_BOTH), // Poker Fn(with fix for Esc) + [1] = ACTION_LAYER_TOGGLE(5), // Poker Arrow toggle + [2] = ACTION_LAYER_TOGGLE(6), // Poker Esc toggle + [3] = ACTION_LAYER_BIT_XOR(1, 0b1101, ON_BOTH), // Poker Fn(with fix for Arrow) + [4] = ACTION_MODS_KEY(MOD_RCTL|MOD_RSFT, KC_ESC), // FN3 Task(RControl,RShift+Esc) +}; diff --git a/keyboards/s60-x/keymaps/poker_bit/readme.md b/keyboards/s60-x/keymaps/poker_bit/readme.md new file mode 100644 index 0000000000..0d8be9d0f8 --- /dev/null +++ b/keyboards/s60-x/keymaps/poker_bit/readme.md @@ -0,0 +1,31 @@ +ο»Ώ### 3 Poker +[keymap_poker.c](keymap_poker.c) emulates original Poker layers +while both [keymap_poker_bit.c](keymap_poker_bit.c) and [keymap_poker_set.c](keymap_poker_set.c) implements same layout in different way and they fix a minor issue of original Poker and enhance arrow keys. + + Fn + Esc = ` + Fn + {left, down, up, right} = {home, pgdown, pgup, end} + +#### 3.0 Default layer + β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” + β”‚ ` β”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ - β”‚ = β”‚β–’β–’β–’β–’β–’β”‚BkSpcβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ Tab β”‚ Q β”‚ W β”‚ E β”‚ R β”‚ T β”‚ Y β”‚ U β”‚ I β”‚ O β”‚ P β”‚ [ β”‚ ] β”‚ \ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚Caps β”‚ A β”‚ S β”‚ D β”‚ F β”‚ G β”‚ H β”‚ J β”‚ K β”‚ L β”‚ ; β”‚ ' β”‚β–’β–’β–’β–’β–’β”‚Enterβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚Shiftβ”‚β–’β–’β–’β–’β–’β”‚ Z β”‚ X β”‚ C β”‚ V β”‚ B β”‚ N β”‚ M β”‚ , β”‚ . β”‚ / β”‚β–’β–’β–’β–’β–’β”‚Shiftβ”‚β–’β–’β–’β–’β–’β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚Ctrl β”‚ Gui β”‚ Alt β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚Spaceβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn β”‚ Gui β”‚ App β”‚Ctrl β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ +#### 3.1 Poker Fn layer + β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” + β”‚ Esc β”‚ F1 β”‚ F2 β”‚ F3 β”‚ F4 β”‚ F5 β”‚ F6 β”‚ F7 β”‚ F8 β”‚ F9 β”‚ F10 β”‚ F11 β”‚ F12 β”‚β–’β–’β–’β–’β–’β”‚ β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚ FnQ β”‚ Up β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ Cal β”‚ β”‚Home β”‚ Ins β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚Left β”‚Down β”‚Rightβ”‚ β”‚ β”‚ Psc β”‚ Slk β”‚Pauseβ”‚ β”‚ Tsk β”‚ End β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚β–’β–’β–’β–’β–’β”‚ Del β”‚ β”‚ Web β”‚Mute β”‚ VoU β”‚ VoD β”‚ β”‚PgUp β”‚PgDwnβ”‚ Del β”‚β–’β–’β–’β–’β–’β”‚ Up β”‚β–’β–’β–’β–’β–’β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ FnS β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn β”‚Left β”‚Down β”‚Rightβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ diff --git a/keyboards/s60-x/keymaps/poker_set/keymap.c b/keyboards/s60-x/keymaps/poker_set/keymap.c new file mode 100644 index 0000000000..0c1ef1a9b9 --- /dev/null +++ b/keyboards/s60-x/keymaps/poker_set/keymap.c @@ -0,0 +1,178 @@ +#include "keymap_common.h" + +// Poker fix with set(state transition) +// Fn + Esc = ` +// Fn + {left, down, up, right} = {home, pgdown, pgup, end} +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* 0: qwerty +β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” +β”‚GRAVEβ”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ - β”‚ = β”‚β–’β–’β–’β–’β–’β”‚BKSPCβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ TAB β”‚ Q β”‚ W β”‚ E β”‚ R β”‚ T β”‚ Y β”‚ U β”‚ I β”‚ O β”‚ P β”‚ [ β”‚ ] β”‚ \ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LCTRLβ”‚ A β”‚ S β”‚ D β”‚ F β”‚ G β”‚ H β”‚ J β”‚ K β”‚ L β”‚ ; β”‚ ' β”‚β–’β–’β–’β–’β–’β”‚ENTERβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LSHFTβ”‚β–’β–’β–’β–’β–’β”‚ Z β”‚ X β”‚ C β”‚ V β”‚ B β”‚ N β”‚ M β”‚ , β”‚ . β”‚ / β”‚β–’β–’β–’β–’β–’β”‚RSHFTβ”‚β–’β–’β–’β–’β–’β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LCTRLβ”‚L_WINβ”‚L_ALTβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ SPC β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn0 β”‚R_WINβ”‚ APP β”‚RCTRLβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + */ + KEYMAP( + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, BSLS, \ + LCTL, A, S, D, F, G, H, J, K, L, SCLN, QUOT, NO, ENT, \ + LSFT, NO, Z, X, C, V, B, N, M, COMM, DOT, SLSH, NO, RSFT, NO, \ + LCTL, LGUI, LALT, SPC, FN0, RGUI, APP, RCTL), + /* 1: Poker with Arrow +β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ Up β”‚β–’β–’β–’β–’β–’β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn1 β”‚Left β”‚Down β”‚Rightβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + */ + KEYMAP( + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, UP, TRNS, \ + TRNS, TRNS, TRNS, TRNS, FN1, LEFT, DOWN, RGHT), + /* 2: Poker with Esc +β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” +β”‚ ESC β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–’β–’β–’β–’β–’β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn2 β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + */ + KEYMAP( + ESC, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, FN2, TRNS, TRNS, TRNS), + /* 3: Poker with Arrow and Esc +β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” +β”‚ Esc β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ Up β”‚β–’β–’β–’β–’β–’β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn3 β”‚Left β”‚Down β”‚Rightβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + */ + KEYMAP( + ESC, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, UP, TRNS, \ + TRNS, TRNS, TRNS, TRNS, FN3, LEFT, DOWN, RGHT), + /* 4: Poker Fn'd +β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” +β”‚ Esc β”‚ F1 β”‚ F2 β”‚ F3 β”‚ F4 β”‚ F5 β”‚ F6 β”‚ F7 β”‚ F8 β”‚ F9 β”‚ F10 β”‚ F11 β”‚ F12 β”‚β–’β–’β–’β–’β–’β”‚ β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ Fn6 β”‚ Up β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ Cal β”‚ β”‚Home β”‚ Ins β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚Left β”‚Down β”‚Rightβ”‚ β”‚ β”‚ Psc β”‚ Slk β”‚Pauseβ”‚ β”‚ Fn8 β”‚ End β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚β–’β–’β–’β–’β–’β”‚ Del β”‚ β”‚ Web β”‚Mute β”‚ VoU β”‚ VoD β”‚ β”‚PgUp β”‚PgDwnβ”‚ Del β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–’β–’β–’β–’β–’β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn5 β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn4 β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + */ + KEYMAP( + ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, TRNS, \ + TRNS, FN6, UP, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, CALC, TRNS, HOME, INS, TRNS, \ + TRNS, LEFT, DOWN, RGHT, TRNS, TRNS, PSCR, SLCK, PAUS, TRNS, FN8, END, TRNS, TRNS, \ + TRNS, TRNS, DEL, TRNS, WHOM, MUTE, VOLU, VOLD, TRNS, PGUP, PGDN, DEL, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, FN5, FN4, TRNS, TRNS, TRNS), + /* 5: Poker Fn'd arrow +β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” +β”‚ Esc β”‚ F1 β”‚ F2 β”‚ F3 β”‚ F4 β”‚ F5 β”‚ F6 β”‚ F7 β”‚ F8 β”‚ F9 β”‚ F10 β”‚ F11 β”‚ F12 β”‚β–’β–’β–’β–’β–’β”‚ β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ Fn7 β”‚ Up β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ Cal β”‚ β”‚Home β”‚ Ins β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚Left β”‚Down β”‚Rightβ”‚ β”‚ β”‚ Psc β”‚ Slk β”‚Pauseβ”‚ β”‚ Fn8 β”‚ End β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚β–’β–’β–’β–’β–’β”‚ Del β”‚ β”‚ Web β”‚Mute β”‚ VoU β”‚ VoD β”‚ β”‚PgUp β”‚PgDwnβ”‚ Del β”‚β–’β–’β–’β–’β–’β”‚PgUp β”‚β–’β–’β–’β–’β–’β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn4 β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn5 β”‚Home β”‚PgDwnβ”‚ End β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + */ + KEYMAP( + ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, TRNS, \ + TRNS, FN7, UP, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, CALC, TRNS, HOME, INS, TRNS, \ + TRNS, LEFT, DOWN, RGHT, TRNS, TRNS, PSCR, SLCK, PAUS, TRNS, FN8, END, TRNS, TRNS, \ + TRNS, TRNS, DEL, TRNS, WHOM, MUTE, VOLU, VOLD, TRNS, PGUP, PGDN, DEL, TRNS, PGUP, TRNS, \ + TRNS, TRNS, TRNS, FN4, FN5, HOME, PGDN, END), + /* 6: Poker Fn'd Esc +β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” +β”‚Graveβ”‚ F1 β”‚ F2 β”‚ F3 β”‚ F4 β”‚ F5 β”‚ F6 β”‚ F7 β”‚ F8 β”‚ F9 β”‚ F10 β”‚ F11 β”‚ F12 β”‚β–’β–’β–’β–’β–’β”‚ β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ Fn4 β”‚ Up β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ Cal β”‚ β”‚Home β”‚ Ins β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚Left β”‚Down β”‚Rightβ”‚ β”‚ β”‚ Psc β”‚ Slk β”‚Pauseβ”‚ β”‚ Fn8 β”‚ End β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚β–’β–’β–’β–’β–’β”‚ Del β”‚ β”‚ Web β”‚Mute β”‚ VoU β”‚ VoD β”‚ β”‚PgUp β”‚PgDwnβ”‚ Del β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–’β–’β–’β–’β–’β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn7 β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn6 β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + */ + KEYMAP( + GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, TRNS, \ + TRNS, FN4, UP, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, CALC, TRNS, HOME, INS, TRNS, \ + TRNS, LEFT, DOWN, RGHT, TRNS, TRNS, PSCR, SLCK, PAUS, TRNS, FN8, END, TRNS, TRNS, \ + TRNS, TRNS, DEL, TRNS, WHOM, MUTE, VOLU, VOLD, TRNS, PGUP, PGDN, DEL, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, FN7, FN6, TRNS, TRNS, TRNS), + /* 7: Poker Fn'd Arrow + Esc +β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” +β”‚Graveβ”‚ F1 β”‚ F2 β”‚ F3 β”‚ F4 β”‚ F5 β”‚ F6 β”‚ F7 β”‚ F8 β”‚ F9 β”‚ F10 β”‚ F11 β”‚ F12 β”‚β–’β–’β–’β–’β–’β”‚ β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ Fn5 β”‚ Up β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ Cal β”‚ β”‚Home β”‚ Ins β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚Left β”‚Down β”‚Rightβ”‚ β”‚ β”‚ Psc β”‚ Slk β”‚Pauseβ”‚ β”‚ Fn8 β”‚ End β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚β–’β–’β–’β–’β–’β”‚ Del β”‚ β”‚ Web β”‚Mute β”‚ VoU β”‚ VoD β”‚ β”‚PgUp β”‚PgDwnβ”‚ Del β”‚β–’β–’β–’β–’β–’β”‚PgUp β”‚β–’β–’β–’β–’β–’β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn6 β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn7 β”‚Home β”‚PgDwnβ”‚ End β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + */ + KEYMAP( + GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, TRNS, \ + TRNS, FN5, UP, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, CALC, TRNS, HOME, INS, TRNS, \ + TRNS, LEFT, DOWN, RGHT, TRNS, TRNS, PSCR, SLCK, PAUS, TRNS, FN8, END, TRNS, TRNS, \ + TRNS, TRNS, DEL, TRNS, WHOM, MUTE, VOLU, VOLD, TRNS, PGUP, PGDN, DEL, TRNS, PGUP, TRNS, \ + TRNS, TRNS, TRNS, FN6, FN7, HOME, PGDN, END), +}; + +/* + * Fn action definition + */ +const uint16_t PROGMEM fn_actions[] = { + /* Poker Layout */ + [0] = ACTION_LAYER_SET(4, ON_PRESS), // FN0 move to Fn'd when press + [1] = ACTION_LAYER_SET(5, ON_PRESS), // FN1 move to Fn'd arrow when press + [2] = ACTION_LAYER_SET(6, ON_PRESS), // FN2 move to Fn'd Esc when press + [3] = ACTION_LAYER_SET(7, ON_PRESS), // FN3 move to Fn'd arrow + Esc when press + + //[4] = ACTION_LAYER_CLEAR(ON_RELEASE), // FN4 clear overlay when release + [4] = ACTION_LAYER_SET(0, ON_RELEASE), // FN4 clear overlay when release + [5] = ACTION_LAYER_SET(1, ON_RELEASE), // FN5 move to arrow when release + [6] = ACTION_LAYER_SET(2, ON_RELEASE), // FN6 move to Esc when release + [7] = ACTION_LAYER_SET(3, ON_RELEASE), // FN7 move to arrow + Esc when release + + [8] = ACTION_MODS_KEY(MOD_RCTL|MOD_RSFT, KC_ESC), // FN8 Task(RControl,RShift+Esc) +}; diff --git a/keyboards/s60-x/keymaps/poker_set/readme.md b/keyboards/s60-x/keymaps/poker_set/readme.md new file mode 100644 index 0000000000..0d8be9d0f8 --- /dev/null +++ b/keyboards/s60-x/keymaps/poker_set/readme.md @@ -0,0 +1,31 @@ +ο»Ώ### 3 Poker +[keymap_poker.c](keymap_poker.c) emulates original Poker layers +while both [keymap_poker_bit.c](keymap_poker_bit.c) and [keymap_poker_set.c](keymap_poker_set.c) implements same layout in different way and they fix a minor issue of original Poker and enhance arrow keys. + + Fn + Esc = ` + Fn + {left, down, up, right} = {home, pgdown, pgup, end} + +#### 3.0 Default layer + β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” + β”‚ ` β”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ - β”‚ = β”‚β–’β–’β–’β–’β–’β”‚BkSpcβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ Tab β”‚ Q β”‚ W β”‚ E β”‚ R β”‚ T β”‚ Y β”‚ U β”‚ I β”‚ O β”‚ P β”‚ [ β”‚ ] β”‚ \ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚Caps β”‚ A β”‚ S β”‚ D β”‚ F β”‚ G β”‚ H β”‚ J β”‚ K β”‚ L β”‚ ; β”‚ ' β”‚β–’β–’β–’β–’β–’β”‚Enterβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚Shiftβ”‚β–’β–’β–’β–’β–’β”‚ Z β”‚ X β”‚ C β”‚ V β”‚ B β”‚ N β”‚ M β”‚ , β”‚ . β”‚ / β”‚β–’β–’β–’β–’β–’β”‚Shiftβ”‚β–’β–’β–’β–’β–’β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚Ctrl β”‚ Gui β”‚ Alt β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚Spaceβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn β”‚ Gui β”‚ App β”‚Ctrl β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ +#### 3.1 Poker Fn layer + β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” + β”‚ Esc β”‚ F1 β”‚ F2 β”‚ F3 β”‚ F4 β”‚ F5 β”‚ F6 β”‚ F7 β”‚ F8 β”‚ F9 β”‚ F10 β”‚ F11 β”‚ F12 β”‚β–’β–’β–’β–’β–’β”‚ β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚ FnQ β”‚ Up β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ Cal β”‚ β”‚Home β”‚ Ins β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚Left β”‚Down β”‚Rightβ”‚ β”‚ β”‚ Psc β”‚ Slk β”‚Pauseβ”‚ β”‚ Tsk β”‚ End β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚β–’β–’β–’β–’β–’β”‚ Del β”‚ β”‚ Web β”‚Mute β”‚ VoU β”‚ VoD β”‚ β”‚PgUp β”‚PgDwnβ”‚ Del β”‚β–’β–’β–’β–’β–’β”‚ Up β”‚β–’β–’β–’β–’β–’β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ FnS β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn β”‚Left β”‚Down β”‚Rightβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ diff --git a/keyboards/s60-x/keymaps/spacefn/keymap.c b/keyboards/s60-x/keymaps/spacefn/keymap.c new file mode 100644 index 0000000000..c930705320 --- /dev/null +++ b/keyboards/s60-x/keymaps/spacefn/keymap.c @@ -0,0 +1,55 @@ +#include "keymap_common.h" + +/* + * SpaceFN + * http://geekhack.org/index.php?topic=51069.0 + */ +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap 0: Default Layer +β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” +β”‚ ESC β”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ - β”‚ = β”‚β–’β–’β–’β–’β–’β”‚BKSPCβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ TAB β”‚ Q β”‚ W β”‚ E β”‚ R β”‚ T β”‚ Y β”‚ U β”‚ I β”‚ O β”‚ P β”‚ [ β”‚ ] β”‚ \ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚CAPSLβ”‚ A β”‚ S β”‚ D β”‚ F β”‚ G β”‚ H β”‚ J β”‚ K β”‚ L β”‚ ; β”‚ ' β”‚β–’β–’β–’β–’β–’β”‚ENTERβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LSHFTβ”‚β–’β–’β–’β–’β–’β”‚ Z β”‚ X β”‚ C β”‚ V β”‚ B β”‚ N β”‚ M β”‚ , β”‚ . β”‚ / β”‚β–’β–’β–’β–’β–’β”‚RSHFTβ”‚β–’β–’β–’β–’β–’β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚LCTRLβ”‚L_GUIβ”‚L_ALTβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆSpc/Fn0β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚R_ALTβ”‚R_GUIβ”‚ APP β”‚RCTRLβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + */ + KEYMAP( + ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, BSLS, \ + CAPS, A, S, D, F, G, H, J, K, L, SCLN, QUOT, NO, ENT, \ + LSFT, NO, Z, X, C, V, B, N, M, COMM, DOT, SLSH, NO, RSFT, NO, \ + LCTL, LGUI, LALT, FN0, RALT, RGUI, APP, RCTL), + + /* Overlay 1: SpaceFN +β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” +β”‚ ` β”‚ F1 β”‚ F2 β”‚ F3 β”‚ F4 β”‚ F5 β”‚ F6 β”‚ F7 β”‚ F8 β”‚ F9 β”‚ F10 β”‚ F11 β”‚ F12 β”‚β–’β–’β–’β–’β–’β”‚ Del β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚ Esc β”‚ β”‚ β”‚ β”‚Home β”‚ Up β”‚ End β”‚Pscr β”‚Slck β”‚Pauseβ”‚ Ins β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚PgUp β”‚Left β”‚Down β”‚Rightβ”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚ β”‚ β”‚Spaceβ”‚PgDwnβ”‚ ` β”‚ ~ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–’β–’β–’β–’β–’β”‚ +β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ +β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ +β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + */ + KEYMAP( + GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, DEL, \ + TRNS, TRNS, TRNS, ESC, TRNS, TRNS, TRNS, HOME, UP, END, PSCR, SLCK, PAUS, INS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, PGUP, LEFT, DOWN, RGHT, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, SPC, PGDN, GRV, FN1, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), +}; + +/* + * Fn action definition + */ +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_LAYER_TAP_KEY(1, KC_SPACE), + [1] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV), // tilde +}; diff --git a/keyboards/s60-x/keymaps/spacefn/readme.md b/keyboards/s60-x/keymaps/spacefn/readme.md new file mode 100644 index 0000000000..d04bd94865 --- /dev/null +++ b/keyboards/s60-x/keymaps/spacefn/readme.md @@ -0,0 +1,27 @@ +ο»Ώ### 6. SpaceFN +This layout proposed by spiceBar uses space bar to change layer with using Dual role key technique. See [keymap_spacefn.c](keymap_spacefn.c) and [SpaceFN discussion](http://geekhack.org/index.php?topic=51069.0). + +#### 6.0 Default layer + β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” + β”‚ Esc β”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ - β”‚ = β”‚β–’β–’β–’β–’β–’β”‚BkSpcβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ Tab β”‚ Q β”‚ W β”‚ E β”‚ R β”‚ T β”‚ Y β”‚ U β”‚ I β”‚ O β”‚ P β”‚ [ β”‚ ] β”‚ \ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚Caps β”‚ A β”‚ S β”‚ D β”‚ F β”‚ G β”‚ H β”‚ J β”‚ K β”‚ L β”‚ ; β”‚ ' β”‚β–’β–’β–’β–’β–’β”‚Enterβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚Shiftβ”‚β–’β–’β–’β–’β–’β”‚ Z β”‚ X β”‚ C β”‚ V β”‚ B β”‚ N β”‚ M β”‚ , β”‚ . β”‚ / β”‚β–’β–’β–’β–’β–’β”‚Shiftβ”‚β–’β–’β–’β–’β–’β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚Ctrl β”‚ Gui β”‚ Alt β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆ Space/Fn β–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Alt β”‚ Gui β”‚ App β”‚Ctrl β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ +#### 6.1 SpaceFN layer + β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” + β”‚ ` β”‚ F1 β”‚ F2 β”‚ F3 β”‚ F4 β”‚ F5 β”‚ F6 β”‚ F7 β”‚ F8 β”‚ F9 β”‚ F10 β”‚ F11 β”‚ F12 β”‚β–’β–’β–’β–’β–’β”‚ Del β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚Home β”‚ Up β”‚ End β”‚ Psc β”‚ Slk β”‚Pauseβ”‚ Ins β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚PgUp β”‚Left β”‚Down β”‚Rightβ”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚ β”‚ β”‚ β”‚Spaceβ”‚PgDwnβ”‚ ` β”‚ ~ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–’β–’β–’β–’β–’β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Alt β”‚ Gui β”‚ App β”‚Ctrl β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ diff --git a/keyboards/s60-x/readme.md b/keyboards/s60-x/readme.md index 34c48b0b7d..0872c2e018 100644 --- a/keyboards/s60-x/readme.md +++ b/keyboards/s60-x/readme.md @@ -1,32 +1,248 @@ -S60-x keyboard firmware +ο»ΏS60-x keyboard firmware ====================== -DIY compact keyboard by Massdrop. This is a port from TMK to QMK based on the [original S60-X Repo](https://github.com/jpec/s60x). +DIY compact keyboard designed by VinnyCordeiro for Sentraq. Most of the keymaps are based on GH60 code. This is a port from TMK to QMK based on the [original S60-X Repo](https://github.com/VinnyCordeiro/tmk_keyboard). ## S60X Resources -- [Massdrop page](https://www.massdrop.com/buy/sentraq-60-diy-keyboard-kit) +- [Massdrop page](https://www.massdrop.com/buy/sentraq-60-diy-keyboard-kit?mode=guest_open) ## Quantum MK Firmware -For the full Quantum feature list, see [the parent readme.md](/doc/readme.md). +For the full Quantum feature list, see [the parent readme.md](/readme.md). -## Building +## Keymap +Several versions of keymaps are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `keymap_.c` and see keymap document (you can find in top README.md) and existent keymap files. -Download or clone the whole firmware and navigate to the keyboards/s60-x folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file. +To build firmware binary hex file with a certain keymap just run `make` with the `keymap` option like: -Depending on which keymap you would like to use, you will have to compile slightly differently. + $ make keymap=[custom|poker|poker_set|poker_bit|plain|hasu|spacefn|hhkb|] -### Default +File [S60-X_pre-compiled_firmwares.zip](S60-X_pre-compiled_firmwares.zip) contains pre-compiled firmwares for all keymaps available. Not all of them are tested. -To build with the default keymap, simply run `make`. -### Other Keymaps +## Flashing your keyboard +The recommended programs for flashing your keyboard are [Atmel FLIP](http://www.atmel.com/tools/FLIP.aspx) (Windows) and [dfu-programmer](http://dfu-programmer.sourceforge.net/) (Linux/Windows). -Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant keymap files. +[QMK Firmware Flasher](https://github.com/jackhumbert/qmk_firmware_flasher/releases) may work, as the S60-X keyboard uses the ATMega32U4 microcontroller, but it is untested. Use at your own risk. -To build the firmware binary hex file with a keymap just do `make` with `keymap` option like: +[Easy AVR USB Keyboard Firmware](https://deskthority.net/wiki/Easy_AVR_USB_Keyboard_Firmware) also supports S60-X, but it is completely unrelated to TMK firmware. Use at your own risk. -``` -$ make keymap=[default|] -``` +**Programming the firmware (Windows)** -Keymaps follow the format **__keymap.c__** and are stored in folders in the `keymaps` folder, eg `keymaps/my_keymap/` \ No newline at end of file +1. download and install FLIP (http://www.atmel.com/tools/FLIP.aspx) +2. connect the keyboard, press the program button (S1) and wait until it enumerates +3. go to device manager, find the atmega32u4 chip and click "update driver" +4. choose location manually: folder named "usb" inside the installation directory of FLIP +5. once the driver is installed, run flip +6. Device -> Select: choose ATMega32U4 +7. Settings -> Communication -> USB, FLIP should show the signature at this point (58 1E 95 87) +8. File -> Load HEX file: choose the hex firmware: .hex +9. click "Run" +10. after programming is done, disconnect the device from USB and connect again. + + +**Programming the firmware (Linux)** + +1. Download and install/compile/unpack dfu-programmer from http://dfu-programmer.sourceforge.net/. +2. Issue the following commands in the command prompt after connecting the device and pressing the programming button (S1). You may need root permissions or udev rules to do that. + 1. `sudo dfu-programmer atmega32u4 erase` + 2. `sudo dfu-programmer atmega32u4 flash .hex` + 3. `sudo dfu-programmer atmega32u4 start` +3. The keyboard should start working. If it doesn't, reconnect the cable. + + +### 0 Initial explanations +The β–ˆβ–ˆβ–ˆβ–ˆβ–ˆ blocks on the layouts hides the switch positions that do not exist physically on the PCB. If you feel like hacking the keyboard and adding new keys, those are the positions that can be used. You'll have to modify the [keymap_common.h](keymap_common.h) file for that. + +The β–’β–’β–’β–’β–’ blocks hides switch positions not used on this particular layout, but they do exist on the PCB. + +There is no LED support on the PCB at the moment, but I'll let the code for that untouched. + + +### 1 Standard - ANSI +The standard keymap is the one that is pre-flashed on the S60-X. + +#### 1.0 Default layer + β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” + β”‚ ESC β”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ - β”‚ = β”‚β–’β–’β–’β–’β–’β”‚BKSPCβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ TAB β”‚ Q β”‚ W β”‚ E β”‚ R β”‚ T β”‚ Y β”‚ U β”‚ I β”‚ O β”‚ P β”‚ [ β”‚ ] β”‚ \ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚CAPSLβ”‚ A β”‚ S β”‚ D β”‚ F β”‚ G β”‚ H β”‚ J β”‚ K β”‚ L β”‚ ; β”‚ ' β”‚β–’β–’β–’β–’β–’β”‚ENTERβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚LSHFTβ”‚β–’β–’β–’β–’β–’β”‚ Z β”‚ X β”‚ C β”‚ V β”‚ B β”‚ N β”‚ M β”‚ , β”‚ . β”‚ / β”‚β–’β–’β–’β–’β–’β”‚RSHFTβ”‚β–’β–’β–’β–’β–’β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚LCTRLβ”‚L_GUIβ”‚L_ALTβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ SPC β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚R_ALTβ”‚ FN0 β”‚ APP β”‚RCTRLβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ +#### 1.1 Fn layer + β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” + β”‚GRAVEβ”‚ F1 β”‚ F2 β”‚ F3 β”‚ F4 β”‚ F5 β”‚ F6 β”‚ F7 β”‚ F8 β”‚ F9 β”‚ F10 β”‚ F11 β”‚ F12 β”‚β–’β–’β–’β–’β–’β”‚ β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚ β”‚ Up β”‚ β”‚ β”‚ β”‚ β”‚ β”‚PGUP β”‚PGDWNβ”‚PRTSCβ”‚SCLCKβ”‚PAUSEβ”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚Left β”‚Down β”‚Rightβ”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–’β–’β–’β–’β–’β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + + +### 2 Standard - ISO +The same as the standard keymap, but with additional ISO keys. + + +#### 2.0 Default layer + β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” + β”‚ ESC β”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ - β”‚ = β”‚β–’β–’β–’β–’β–’β”‚BKSPCβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ TAB β”‚ Q β”‚ W β”‚ E β”‚ R β”‚ T β”‚ Y β”‚ U β”‚ I β”‚ O β”‚ P β”‚ [ β”‚ ] β”‚β–’β–’β–’β–’β–’β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚CAPSLβ”‚ A β”‚ S β”‚ D β”‚ F β”‚ G β”‚ H β”‚ J β”‚ K β”‚ L β”‚ ; β”‚ ' β”‚NUHS β”‚ENTERβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚LSHFTβ”‚ \ β”‚ Z β”‚ X β”‚ C β”‚ V β”‚ B β”‚ N β”‚ M β”‚ , β”‚ . β”‚ / β”‚β–’β–’β–’β–’β–’β”‚RSHFTβ”‚β–’β–’β–’β–’β–’β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚LCTRLβ”‚L_GUIβ”‚L_ALTβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ SPC β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚R_ALTβ”‚ FN0 β”‚ APP β”‚RCTRLβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ +#### 2.1 Fn layer + β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” + β”‚GRAVEβ”‚ F1 β”‚ F2 β”‚ F3 β”‚ F4 β”‚ F5 β”‚ F6 β”‚ F7 β”‚ F8 β”‚ F9 β”‚ F10 β”‚ F11 β”‚ F12 β”‚β–’β–’β–’β–’β–’β”‚ β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚ β”‚ Up β”‚ β”‚ β”‚ β”‚ β”‚ β”‚PGUP β”‚PGDWNβ”‚PRTSCβ”‚SCLCKβ”‚PAUSEβ”‚β–’β–’β–’β–’β–’β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚Left β”‚Down β”‚Rightβ”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–’β–’β–’β–’β–’β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + + +### 3 Poker +[keymap_poker.c](keymap_poker.c) emulates original Poker layers +while both [keymap_poker_bit.c](keymap_poker_bit.c) and [keymap_poker_set.c](keymap_poker_set.c) implements same layout in different way and they fix a minor issue of original Poker and enhance arrow keys. + + Fn + Esc = ` + Fn + {left, down, up, right} = {home, pgdown, pgup, end} + +#### 3.0 Default layer + β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” + β”‚ ` β”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ - β”‚ = β”‚β–’β–’β–’β–’β–’β”‚BkSpcβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ Tab β”‚ Q β”‚ W β”‚ E β”‚ R β”‚ T β”‚ Y β”‚ U β”‚ I β”‚ O β”‚ P β”‚ [ β”‚ ] β”‚ \ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚Caps β”‚ A β”‚ S β”‚ D β”‚ F β”‚ G β”‚ H β”‚ J β”‚ K β”‚ L β”‚ ; β”‚ ' β”‚β–’β–’β–’β–’β–’β”‚Enterβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚Shiftβ”‚β–’β–’β–’β–’β–’β”‚ Z β”‚ X β”‚ C β”‚ V β”‚ B β”‚ N β”‚ M β”‚ , β”‚ . β”‚ / β”‚β–’β–’β–’β–’β–’β”‚Shiftβ”‚β–’β–’β–’β–’β–’β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚Ctrl β”‚ Gui β”‚ Alt β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚Spaceβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn β”‚ Gui β”‚ App β”‚Ctrl β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ +#### 3.1 Poker Fn layer + β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” + β”‚ Esc β”‚ F1 β”‚ F2 β”‚ F3 β”‚ F4 β”‚ F5 β”‚ F6 β”‚ F7 β”‚ F8 β”‚ F9 β”‚ F10 β”‚ F11 β”‚ F12 β”‚β–’β–’β–’β–’β–’β”‚ β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚ FnQ β”‚ Up β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ Cal β”‚ β”‚Home β”‚ Ins β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚Left β”‚Down β”‚Rightβ”‚ β”‚ β”‚ Psc β”‚ Slk β”‚Pauseβ”‚ β”‚ Tsk β”‚ End β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚β–’β–’β–’β–’β–’β”‚ Del β”‚ β”‚ Web β”‚Mute β”‚ VoU β”‚ VoD β”‚ β”‚PgUp β”‚PgDwnβ”‚ Del β”‚β–’β–’β–’β–’β–’β”‚ Up β”‚β–’β–’β–’β–’β–’β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ FnS β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn β”‚Left β”‚Down β”‚Rightβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + + +### 4. Plain +Without any Fn layer this will be useful if you want to use key remapping tool like AHK on host. +See [keymap_plain.c](keymap_plain.c) for detail. + +#### 4.0 Plain Default layer + β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” + β”‚ Esc β”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ - β”‚ = β”‚β–’β–’β–’β–’β–’β”‚BkSpcβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ Tab β”‚ Q β”‚ W β”‚ E β”‚ R β”‚ T β”‚ Y β”‚ U β”‚ I β”‚ O β”‚ P β”‚ [ β”‚ ] β”‚ \ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚Caps β”‚ A β”‚ S β”‚ D β”‚ F β”‚ G β”‚ H β”‚ J β”‚ K β”‚ L β”‚ ; β”‚ ' β”‚β–’β–’β–’β–’β–’β”‚Enterβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚Shiftβ”‚β–’β–’β–’β–’β–’β”‚ Z β”‚ X β”‚ C β”‚ V β”‚ B β”‚ N β”‚ M β”‚ , β”‚ . β”‚ / β”‚β–’β–’β–’β–’β–’β”‚Shiftβ”‚β–’β–’β–’β–’β–’β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚Ctrl β”‚ Gui β”‚ Alt β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚Spaceβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Alt β”‚ Gui β”‚ App β”‚Ctrl β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + + +### 5. Hasu +This is Hasu's favorite keymap with HHKB Fn, Vi cursor and Mousekey layer. See [keymap_hasu.c](keymap_hasu.c) for detail. + +(Hasu is the creator of the TMK firmware, for those who do not know that.) + + +### 6. SpaceFN +This layout proposed by spiceBar uses space bar to change layer with using Dual role key technique. See [keymap_spacefn.c](keymap_spacefn.c) and [SpaceFN discussion](http://geekhack.org/index.php?topic=51069.0). + +#### 6.0 Default layer + β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” + β”‚ Esc β”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ - β”‚ = β”‚β–’β–’β–’β–’β–’β”‚BkSpcβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ Tab β”‚ Q β”‚ W β”‚ E β”‚ R β”‚ T β”‚ Y β”‚ U β”‚ I β”‚ O β”‚ P β”‚ [ β”‚ ] β”‚ \ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚Caps β”‚ A β”‚ S β”‚ D β”‚ F β”‚ G β”‚ H β”‚ J β”‚ K β”‚ L β”‚ ; β”‚ ' β”‚β–’β–’β–’β–’β–’β”‚Enterβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚Shiftβ”‚β–’β–’β–’β–’β–’β”‚ Z β”‚ X β”‚ C β”‚ V β”‚ B β”‚ N β”‚ M β”‚ , β”‚ . β”‚ / β”‚β–’β–’β–’β–’β–’β”‚Shiftβ”‚β–’β–’β–’β–’β–’β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚Ctrl β”‚ Gui β”‚ Alt β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆ Space/Fn β–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Alt β”‚ Gui β”‚ App β”‚Ctrl β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ +#### 6.1 SpaceFN layer + β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” + β”‚ ` β”‚ F1 β”‚ F2 β”‚ F3 β”‚ F4 β”‚ F5 β”‚ F6 β”‚ F7 β”‚ F8 β”‚ F9 β”‚ F10 β”‚ F11 β”‚ F12 β”‚β–’β–’β–’β–’β–’β”‚ Del β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚Home β”‚ Up β”‚ End β”‚ Psc β”‚ Slk β”‚Pauseβ”‚ Ins β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚PgUp β”‚Left β”‚Down β”‚Rightβ”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚ β”‚ β”‚ β”‚Spaceβ”‚PgDwnβ”‚ ` β”‚ ~ β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚β–’β–’β–’β–’β–’β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Alt β”‚ Gui β”‚ App β”‚Ctrl β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + + +### 7. HHKB +[keymap_hhkb.c](keymap_hhkb.c) emulates original HHKB layers. +#### 7.0: Default layer + β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” + β”‚ Esc β”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ - β”‚ = β”‚ \ β”‚ ` β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ Tab β”‚ Q β”‚ W β”‚ E β”‚ R β”‚ T β”‚ Y β”‚ U β”‚ I β”‚ O β”‚ P β”‚ [ β”‚ ] β”‚BkSpcβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚Ctrl β”‚ A β”‚ S β”‚ D β”‚ F β”‚ G β”‚ H β”‚ J β”‚ K β”‚ L β”‚ Fn3 β”‚ ' β”‚β–’β–’β–’β–’β–’β”‚Enterβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚Shiftβ”‚β–’β–’β–’β–’β–’β”‚ Z β”‚ X β”‚ C β”‚ V β”‚ B β”‚ N β”‚ M β”‚ , β”‚ . β”‚ / β”‚β–’β–’β–’β–’β–’β”‚Shiftβ”‚ Fn β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚β–’β–’β–’β–’β–’β”‚ Gui β”‚ Alt β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚Spaceβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–’β–’β–’β–’β–’β”‚ Alt β”‚ Gui β”‚β–’β–’β–’β–’β–’β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ +#### 7.1: HHKB Fn layer + β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” + β”‚ Pwr β”‚ F1 β”‚ F2 β”‚ F3 β”‚ F4 β”‚ F5 β”‚ F6 β”‚ F7 β”‚ F8 β”‚ F9 β”‚ F10 β”‚ F11 β”‚ F12 β”‚ Ins β”‚ Del β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚Caps β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ Psc β”‚ Slk β”‚ Pus β”‚ Up β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚ VoD β”‚ VoU β”‚ Mut β”‚ Ejc β”‚ β”‚ * β”‚ / β”‚Home β”‚PgUp β”‚Left β”‚Rightβ”‚β–’β–’β–’β–’β–’β”‚Enterβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ β”‚β–’β–’β–’β–’β–’β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ + β”‚ - β”‚ End β”‚PgDwnβ”‚Down β”‚β–’β–’β–’β–’β–’β”‚ β”‚ β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚β–’β–’β–’β–’β–’β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–’β–’β–’β–’β–’β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + + +### 8 Custom +The custom keymap - [keymap_custom.c](keymap_custom.c) - is where I tested all the switches, not being concerned with a specific layout or layers. It's a plain layout option with the extra keys used on ISO & HHKB layouts being assigned some other keys. + +#### 8.0 Default layer + β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” + β”‚ ` β”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ - β”‚ = β”‚PgUp β”‚BkSpcβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚ Tab β”‚ Q β”‚ W β”‚ E β”‚ R β”‚ T β”‚ Y β”‚ U β”‚ I β”‚ O β”‚ P β”‚ [ β”‚ ] β”‚ \ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚Caps β”‚ A β”‚ S β”‚ D β”‚ F β”‚ G β”‚ H β”‚ J β”‚ K β”‚ L β”‚ ; β”‚ ' β”‚PgDwnβ”‚Enterβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚Shiftβ”‚Home β”‚ Z β”‚ X β”‚ C β”‚ V β”‚ B β”‚ N β”‚ M β”‚ , β”‚ . β”‚ / β”‚ End β”‚Shiftβ”‚ Up β”‚ + β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ + β”‚Ctrl β”‚ Gui β”‚ Alt β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚Spaceβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Alt β”‚ Gui β”‚ App β”‚Ctrl β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ + β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ diff --git a/keyboards/s60-x/s60-x.h b/keyboards/s60-x/s60-x.h index 68f2ab22f2..91e7b67f31 100644 --- a/keyboards/s60-x/s60-x.h +++ b/keyboards/s60-x/s60-x.h @@ -22,6 +22,11 @@ along with this program. If not, see . #include "quantum.h" +#ifdef __INTELLISENSE__ +#define PROGMEM +#include "config.h" +#endif + /* S60-X keymap definition macro * K31 is the extra key next to short left ISO shift * K2C is the moved key next to enter on ISO boards From ec75c04663e9e8cc4682f8e1239dafd6816e2cf3 Mon Sep 17 00:00:00 2001 From: Felix Uhl Date: Sun, 14 Aug 2016 11:44:43 +0200 Subject: [PATCH 05/34] Fixed links to keymap sources --- keyboards/s60-x/readme.md | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/keyboards/s60-x/readme.md b/keyboards/s60-x/readme.md index 0872c2e018..d01e1a12eb 100644 --- a/keyboards/s60-x/readme.md +++ b/keyboards/s60-x/readme.md @@ -58,7 +58,7 @@ The β–’β–’β–’β–’β–’ blocks hides switch positions not used on this particular la There is no LED support on the PCB at the moment, but I'll let the code for that untouched. -### 1 Standard - ANSI +### 1 [Standard - ANSI (default layout)](keymaps/default/keymap.c) The standard keymap is the one that is pre-flashed on the S60-X. #### 1.0 Default layer @@ -87,7 +87,7 @@ The standard keymap is the one that is pre-flashed on the S60-X. β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ -### 2 Standard - ISO +### 2 [Standard - ISO](keymaps/iso/keymap.c) The same as the standard keymap, but with additional ISO keys. @@ -118,8 +118,8 @@ The same as the standard keymap, but with additional ISO keys. ### 3 Poker -[keymap_poker.c](keymap_poker.c) emulates original Poker layers -while both [keymap_poker_bit.c](keymap_poker_bit.c) and [keymap_poker_set.c](keymap_poker_set.c) implements same layout in different way and they fix a minor issue of original Poker and enhance arrow keys. +[The poker keymap](keymaps/poker/keymap.c) emulates original Vortex Poker layers +while both [poker_bit](keymaps/poker_bit/keymap.c) and [poker_set](keymap/poker_set/keymap.c) implement the same layout in a slightly different way, fix a minor issue of the original poker Layout and enhance arrow keys. Fn + Esc = ` Fn + {left, down, up, right} = {home, pgdown, pgup, end} @@ -150,9 +150,8 @@ while both [keymap_poker_bit.c](keymap_poker_bit.c) and [keymap_poker_set.c](key β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ -### 4. Plain +### 4. [Plain](keymaps/plain/keymap.c) Without any Fn layer this will be useful if you want to use key remapping tool like AHK on host. -See [keymap_plain.c](keymap_plain.c) for detail. #### 4.0 Plain Default layer β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” @@ -168,14 +167,14 @@ See [keymap_plain.c](keymap_plain.c) for detail. β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ -### 5. Hasu -This is Hasu's favorite keymap with HHKB Fn, Vi cursor and Mousekey layer. See [keymap_hasu.c](keymap_hasu.c) for detail. +### 5. [Hasu](keymaps/hasu/keymap.c) +This is Hasu's favorite keymap with HHKB Fn, Vi cursor and Mousekey layer. (Hasu is the creator of the TMK firmware, for those who do not know that.) -### 6. SpaceFN -This layout proposed by spiceBar uses space bar to change layer with using Dual role key technique. See [keymap_spacefn.c](keymap_spacefn.c) and [SpaceFN discussion](http://geekhack.org/index.php?topic=51069.0). +### 6. [SpaceFN](keymaps/spacefn/keymap.c) +This layout proposed by spiceBar uses space bar to change layer with using Dual role key technique. Check the sourcefile and [SpaceFN discussion](http://geekhack.org/index.php?topic=51069.0) for more information. #### 6.0 Default layer β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” @@ -203,8 +202,8 @@ This layout proposed by spiceBar uses space bar to change layer with using Dual β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ -### 7. HHKB -[keymap_hhkb.c](keymap_hhkb.c) emulates original HHKB layers. +### 7. [HHKB](keymap/hhkb/keymap.c) +The HHKB keymap emulates original HHKB layers. #### 7.0: Default layer β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” β”‚ Esc β”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ - β”‚ = β”‚ \ β”‚ ` β”‚ @@ -231,8 +230,8 @@ This layout proposed by spiceBar uses space bar to change layer with using Dual β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ -### 8 Custom -The custom keymap - [keymap_custom.c](keymap_custom.c) - is where I tested all the switches, not being concerned with a specific layout or layers. It's a plain layout option with the extra keys used on ISO & HHKB layouts being assigned some other keys. +### 8 [Custom](keymaps/custom/keymap.c] +The custom keymap is where I tested all the switches, not being concerned with a specific layout or layers. It's a plain layout option with the extra keys used on ISO & HHKB layouts being assigned some other keys. #### 8.0 Default layer β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” From 6774f300da7954e3009d6c9b1ee7611327e7378a Mon Sep 17 00:00:00 2001 From: Felix Uhl Date: Sun, 14 Aug 2016 11:48:59 +0200 Subject: [PATCH 06/34] Update readme.md --- keyboards/s60-x/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/s60-x/readme.md b/keyboards/s60-x/readme.md index d01e1a12eb..1509625651 100644 --- a/keyboards/s60-x/readme.md +++ b/keyboards/s60-x/readme.md @@ -230,7 +230,7 @@ The HHKB keymap emulates original HHKB layers. β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ -### 8 [Custom](keymaps/custom/keymap.c] +### 8 [Custom](keymaps/custom/keymap.c) The custom keymap is where I tested all the switches, not being concerned with a specific layout or layers. It's a plain layout option with the extra keys used on ISO & HHKB layouts being assigned some other keys. #### 8.0 Default layer From df01d502d4b531cc29b3277e093dcf3b63150647 Mon Sep 17 00:00:00 2001 From: Felix Uhl Date: Sun, 14 Aug 2016 13:07:03 +0200 Subject: [PATCH 07/34] Ported all keymaps Old TMK keymaps were ported and confirmed to compile All keymaps compiled and added to zip-archive. Documentation was updated. --- keyboards/s60-x/keymaps/custom/keymap.c | 6 ++-- keyboards/s60-x/keymaps/default/keymap.c | 8 ++--- keyboards/s60-x/keymaps/hasu/keymap.c | 20 +++++------ keyboards/s60-x/keymaps/hhkb/keymap.c | 24 ++++++------- keyboards/s60-x/keymaps/iso/keymap.c | 8 ++--- keyboards/s60-x/keymaps/jpec/keymap.c | 4 +-- keyboards/s60-x/keymaps/plain/keymap.c | 6 ++-- keyboards/s60-x/keymaps/poker/keymap.c | 40 ++++++++++----------- keyboards/s60-x/keymaps/poker_bit/keymap.c | 14 ++++---- keyboards/s60-x/keymaps/poker_set/keymap.c | 20 +++++------ keyboards/s60-x/keymaps/spacefn/keymap.c | 8 ++--- keyboards/s60-x/readme.md | 32 ++++++++++------- keyboards/s60-x/s60-x.h | 17 +++++++++ keyboards/s60-x/s60-x_precompiled.zip | Bin 0 -> 276106 bytes 14 files changed, 115 insertions(+), 92 deletions(-) create mode 100644 keyboards/s60-x/s60-x_precompiled.zip diff --git a/keyboards/s60-x/keymaps/custom/keymap.c b/keyboards/s60-x/keymaps/custom/keymap.c index 59361241fa..fb2a40b85e 100644 --- a/keyboards/s60-x/keymaps/custom/keymap.c +++ b/keyboards/s60-x/keymaps/custom/keymap.c @@ -1,4 +1,4 @@ -#include "keymap_common.h" +#include "s60-x.h" /* Main layer: Test layout, using all keys. @@ -16,9 +16,9 @@ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ */ -const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* 0: ANSI qwerty */ - KEYMAP(GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, PGUP, BSPC, \ + LEGACY_KEYMAP(GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, PGUP, BSPC, \ TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, BSLS, \ CAPS, A, S, D, F, G, H, J, K, L, SCLN, QUOT, PGDN, ENT , \ LSFT, HOME, Z, X, C, V, B, N, M, COMM, DOT, SLSH, END, RSFT, UP, \ diff --git a/keyboards/s60-x/keymaps/default/keymap.c b/keyboards/s60-x/keymaps/default/keymap.c index be7a71aff0..eb0c6b056e 100644 --- a/keyboards/s60-x/keymaps/default/keymap.c +++ b/keyboards/s60-x/keymaps/default/keymap.c @@ -1,4 +1,4 @@ -#include "keymap_common.h" +#include "s60-x.h" /* 0: Main layer β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” @@ -14,9 +14,9 @@ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ */ -const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* 0: ANSI qwerty */ - KEYMAP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ + LEGACY_KEYMAP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, BSLS, \ CAPS, A, S, D, F, G, H, J, K, L, SCLN, QUOT, NO, ENT , \ LSFT, NO, Z, X, C, V, B, N, M, COMM, DOT, SLSH, NO, RSFT, NO, \ @@ -35,7 +35,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ */ - KEYMAP( + LEGACY_KEYMAP( GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, TRNS, \ TRNS, TRNS, UP, TRNS, TRNS, TRNS, TRNS, TRNS, PGUP, PGDN, PSCR, SLCK, PAUS, TRNS, \ TRNS, LEFT, DOWN, RGHT, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ diff --git a/keyboards/s60-x/keymaps/hasu/keymap.c b/keyboards/s60-x/keymaps/hasu/keymap.c index 46ea81fea2..cbeaae0281 100644 --- a/keyboards/s60-x/keymaps/hasu/keymap.c +++ b/keyboards/s60-x/keymaps/hasu/keymap.c @@ -1,9 +1,9 @@ -#include "keymap_common.h" +#include "s60-x.h" /* * Hasu */ -const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 0: Default Layer β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” β”‚ Esc β”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ - β”‚ = β”‚β–’β–’β–’β–’β–’β”‚BKSPCβ”‚ @@ -17,7 +17,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { β”‚LCTRLβ”‚L_WINβ”‚L_ALTβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ SPC β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚R_ALTβ”‚ Fn3 β”‚ Fn3 β”‚ Fn0 β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ */ - KEYMAP( + LEGACY_KEYMAP( ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, BSLS, \ CAPS, A, S, D, F, G, H, J, K, L, FN2, QUOT, NO, ENT, \ @@ -36,7 +36,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { β”‚LCTRLβ”‚L_WINβ”‚L_ALTβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ SPC β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚R_ALTβ”‚R_WINβ”‚ APP β”‚ Fn0 β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ */ - KEYMAP( + LEGACY_KEYMAP( GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ TAB, Q, W, F, P, G, J, L, U, Y, SCLN, LBRC, RBRC, BSLS, \ BSPC, A, R, S, T, D, H, N, E, I, O, QUOT, NO, ENT, \ @@ -55,7 +55,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { β”‚LCTRLβ”‚L_WINβ”‚L_ALTβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ SPC β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚R_ALTβ”‚R_WINβ”‚ APP β”‚ FN0 β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ */ - KEYMAP( + LEGACY_KEYMAP( GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, LBRC, RBRC, NO, BSPC, \ TAB, QUOT, COMM, DOT, P, Y, F, G, C, R, L, SLSH, EQL, BSLS, \ CAPS, A, O, E, U, I, D, H, T, N, S, MINS, NO, ENT, \ @@ -74,7 +74,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { β”‚LCTRLβ”‚L_WINβ”‚L_ALTβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ SPC β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚R_ALTβ”‚R_WINβ”‚ APP β”‚ FN0 β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ */ - KEYMAP( + LEGACY_KEYMAP( GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ TAB, Q, D, R, W, B, J, F, U, P, SCLN, LBRC, RBRC, BSLS, \ BSPC, A, S, H, T, G, Y, N, E, O, I, QUOT, NO, ENT, \ @@ -93,7 +93,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { β”‚LCTRLβ”‚L_GUIβ”‚L_ALTβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚Spaceβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚R_ALTβ”‚R_GUIβ”‚ App β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ */ - KEYMAP( + LEGACY_KEYMAP( GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, DEL, \ CAPS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, PSCR, SLCK, PAUS, UP, TRNS, INS, \ LCTL, VOLD, VOLU, MUTE, TRNS, TRNS, PAST, PSLS, HOME, PGUP, LEFT, RGHT, TRNS, ENT, \ @@ -112,7 +112,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { β”‚LCTRLβ”‚L_GUIβ”‚L_ALTβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚Spaceβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚R_ALTβ”‚R_GUIβ”‚ APP β”‚RCTRLβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ */ - KEYMAP( + LEGACY_KEYMAP( GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, BSPC, \ TAB, HOME, PGDN, UP, PGUP, END, HOME, PGDN, PGUP, END, TRNS, TRNS, TRNS, TRNS, \ LCTL, TRNS, LEFT, DOWN, RGHT, TRNS, LEFT, DOWN, UP, RGHT, TRNS, TRNS, TRNS, ENT, \ @@ -132,7 +132,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel */ - KEYMAP( + LEGACY_KEYMAP( GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, BSPC, \ TAB, TRNS, TRNS, TRNS, TRNS, TRNS, WH_L, WH_D, WH_U, WH_R, TRNS, TRNS, TRNS, TRNS, \ LCTL, TRNS, ACL0, ACL1, ACL2, TRNS, MS_L, MS_D, MS_U, MS_R, TRNS, TRNS, TRNS, ENT, \ @@ -157,7 +157,7 @@ Ld: set Dvorak layout Lw: set Workman layout */ - KEYMAP( + LEGACY_KEYMAP( FN5, FN6, FN7, FN8, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ TRNS, FN5, FN8, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ TRNS, TRNS, TRNS, FN7, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ diff --git a/keyboards/s60-x/keymaps/hhkb/keymap.c b/keyboards/s60-x/keymaps/hhkb/keymap.c index a6e5b3279a..9afd1247f8 100644 --- a/keyboards/s60-x/keymaps/hhkb/keymap.c +++ b/keyboards/s60-x/keymaps/hhkb/keymap.c @@ -1,9 +1,9 @@ -#include "keymap_common.h" +#include "s60-x.h" /* * HHKB Layout */ -const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* 0: Default layer β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” β”‚ Esc β”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ - β”‚ = β”‚ \ β”‚ ` β”‚ @@ -17,12 +17,12 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { β”‚β–’β–’β–’β–’β–’β”‚ Gui β”‚ Alt β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚Spaceβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–’β–’β–’β–’β–’β”‚ Alt β”‚ Gui β”‚β–’β–’β–’β–’β–’β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ */ - KEYMAP( - ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, BSLS, GRV, \ - TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, BSPC, \ + LEGACY_KEYMAP( + ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, BSLS, GRV, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, BSPC, \ LCTL, A, S, D, F, G, H, J, K, L, SCLN, QUOT, NO, ENT, \ LSFT, NO, Z, X, C, V, B, N, M, COMM, DOT, SLSH, NO, RSFT, FN0, \ - NO, LGUI, LALT, SPC, NO, RALT, RGUI, NO), + NO, LGUI, LALT, SPC, NO, RALT, RGUI, NO), /* 1: HHKB Fn layer β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” β”‚ Pwr β”‚ F1 β”‚ F2 β”‚ F3 β”‚ F4 β”‚ F5 β”‚ F6 β”‚ F7 β”‚ F8 β”‚ F9 β”‚ F10 β”‚ F11 β”‚ F12 β”‚ Ins β”‚ Del β”‚ @@ -36,12 +36,12 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { β”‚β–’β–’β–’β–’β–’β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–’β–’β–’β–’β–’β”‚ β”‚ β”‚β–’β–’β–’β–’β–’β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ */ - KEYMAP( - PWR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \ - CAPS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, PSCR, SLCK, PAUS, UP, TRNS, TRNS, \ - TRNS, VOLD, VOLU, MUTE, EJCT, TRNS, PAST, PSLS, HOME, PGUP, LEFT, RGHT, NO, PENT, \ - TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, PPLS, PMNS, END, PGDN, DOWN, NO, TRNS, TRNS, \ - TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), + LEGACY_KEYMAP( + PWR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \ + CAPS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, PSCR, SLCK, PAUS, UP, TRNS, TRNS, \ + TRNS, VOLD, VOLU, MUTE, EJCT, TRNS, PAST, PSLS, HOME, PGUP, LEFT, RGHT, NO, PENT, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, PPLS, PMNS, END, PGDN, DOWN, NO, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), }; /* diff --git a/keyboards/s60-x/keymaps/iso/keymap.c b/keyboards/s60-x/keymaps/iso/keymap.c index ad597cd7d4..43a9c48b05 100644 --- a/keyboards/s60-x/keymaps/iso/keymap.c +++ b/keyboards/s60-x/keymaps/iso/keymap.c @@ -1,4 +1,4 @@ -#include "keymap_common.h" +#include "s60-x.h" /* 0: Main layer β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” @@ -14,9 +14,9 @@ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ */ -const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* 0: ANSI qwerty */ - KEYMAP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ + LEGACY_KEYMAP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, NO, \ CAPS, A, S, D, F, G, H, J, K, L, SCLN, QUOT, NUHS, ENT , \ LSFT, BSLS, Z, X, C, V, B, N, M, COMM, DOT, SLSH, NO, RSFT, NO, \ @@ -35,7 +35,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ */ - KEYMAP( + LEGACY_KEYMAP( GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, TRNS, \ TRNS, TRNS, UP, TRNS, TRNS, TRNS, TRNS, TRNS, PGUP, PGDN, PSCR, SLCK, PAUS, TRNS, \ TRNS, LEFT, DOWN, RGHT, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ diff --git a/keyboards/s60-x/keymaps/jpec/keymap.c b/keyboards/s60-x/keymaps/jpec/keymap.c index 3b680c3072..c8fc133288 100644 --- a/keyboards/s60-x/keymaps/jpec/keymap.c +++ b/keyboards/s60-x/keymaps/jpec/keymap.c @@ -30,7 +30,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Fn1 |Gui |Alt | SpaceFn |Alt |Gui |App |Ctrl| * `-----------------------------------------------------------' */ - KEYMAP( + LEGACY_KEYMAP( GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, BSPC, BSPC, \ TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, BSLS, \ LCTL, A, S, D, F, G, H, J, K, L, SCLN, QUOT, NUHS, ENT, \ @@ -50,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | * `-----------------------------------------------------------' */ - KEYMAP( + LEGACY_KEYMAP( ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, DEL, \ TRNS, MPRV, MPLY, MNXT, MSTP, TRNS, TRNS, PGUP, UP, PGDN, TRNS, SLCK, PAUS, INS, \ TRNS, VOLD, MUTE, VOLU, TRNS, TRNS, HOME, LEFT, DOWN, RGHT, END, TRNS, TRNS, PENT, \ diff --git a/keyboards/s60-x/keymaps/plain/keymap.c b/keyboards/s60-x/keymaps/plain/keymap.c index 0f0cdee2a4..790ac88e73 100644 --- a/keyboards/s60-x/keymaps/plain/keymap.c +++ b/keyboards/s60-x/keymaps/plain/keymap.c @@ -1,4 +1,4 @@ -#include "keymap_common.h" +#include "s60-x.h" /* Main layer: β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” @@ -14,9 +14,9 @@ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ */ -const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* 0: qwerty */ - KEYMAP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ + LEGACY_KEYMAP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, BSLS, \ CAPS, A, S, D, F, G, H, J, K, L, SCLN, QUOT, NO, ENT, \ LSFT, NO, Z, X, C, V, B, N, M, COMM, DOT, SLSH, NO, RSFT, NO, \ diff --git a/keyboards/s60-x/keymaps/poker/keymap.c b/keyboards/s60-x/keymaps/poker/keymap.c index 5fc970a040..0a8691792a 100644 --- a/keyboards/s60-x/keymaps/poker/keymap.c +++ b/keyboards/s60-x/keymaps/poker/keymap.c @@ -1,6 +1,6 @@ -#include "keymap_common.h" +#include "s60-x.h" -const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* 0: qwerty β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” β”‚GRAVEβ”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ - β”‚ = β”‚β–’β–’β–’β–’β–’β”‚BKSPCβ”‚ @@ -14,7 +14,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { β”‚LCTRLβ”‚L_WINβ”‚L_ALTβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ SPC β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn0 β”‚R_WINβ”‚ APP β”‚RCTRLβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ */ - KEYMAP( + LEGACY_KEYMAP( GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, BSLS, \ CAPS, A, S, D, F, G, H, J, K, L, SCLN, QUOT, NO, ENT, \ @@ -33,7 +33,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { β”‚LCTRLβ”‚L_WINβ”‚L_ALTβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ SPC β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn0 β”‚R_WINβ”‚ APP β”‚RCTRLβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ */ - KEYMAP( + LEGACY_KEYMAP( GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ TAB, Q, W, F, P, G, J, L, U, Y, SCLN, LBRC, RBRC, BSLS, \ BSPC, A, R, S, T, D, H, N, E, I, O, QUOT, NO, ENT, \ @@ -52,7 +52,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { β”‚LCTRLβ”‚L_WINβ”‚L_ALTβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ SPC β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn0 β”‚R_WINβ”‚ APP β”‚RCTRLβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ */ - KEYMAP( + LEGACY_KEYMAP( GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, LBRC, RBRC, NO, BSPC, \ TAB, QUOT, COMM, DOT, P, Y, F, G, C, R, L, SLSH, EQL, BSLS, \ CAPS, A, O, E, U, I, D, H, T, N, S, MINS, NO, ENT, \ @@ -71,7 +71,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { β”‚LCTRLβ”‚L_WINβ”‚L_ALTβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ SPC β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn0 β”‚R_WINβ”‚ APP β”‚RCTRLβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ */ - KEYMAP( + LEGACY_KEYMAP( GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ TAB, Q, D, R, W, B, J, F, U, P, SCLN, LBRC, RBRC, BSLS, \ BSPC, A, S, H, T, G, Y, N, E, O, I, QUOT, NO, ENT, \ @@ -90,7 +90,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚Left β”‚Down β”‚Rightβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ */ - KEYMAP( + LEGACY_KEYMAP( TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ @@ -109,12 +109,12 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ */ - KEYMAP( + LEGACY_KEYMAP( ESC, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ - TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ - TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ - TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ - TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), /* 6: Poker Fn β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” β”‚ Esc β”‚ F1 β”‚ F2 β”‚ F3 β”‚ F4 β”‚ F5 β”‚ F6 β”‚ F7 β”‚ F8 β”‚ F9 β”‚ F10 β”‚ F11 β”‚ F12 β”‚β–’β–’β–’β–’β–’β”‚ β”‚ @@ -134,8 +134,8 @@ FnQ: toggle Esc overlay FnS: toggle Arrow overlay */ - KEYMAP( - ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, TRNS, \ + LEGACY_KEYMAP( + ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, TRNS, \ TRNS, FN2, UP, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, CALC, TRNS, HOME, INS, FN4, \ TRNS, LEFT, DOWN, RGHT, TRNS, TRNS, PSCR, SLCK, PAUS, TRNS, FN3, END, TRNS, TRNS, \ TRNS, TRNS, DEL, TRNS, WHOM, MUTE, VOLU, VOLD, TRNS, PGUP, PGDN, DEL, TRNS, TRNS, TRNS, \ @@ -159,12 +159,12 @@ Ld: set Dvorak layout Lw: set Workman layout */ - KEYMAP( - FN5, FN6, FN7, FN8, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ - TRNS, FN5, FN8, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ - TRNS, TRNS, TRNS, FN7, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ - TRNS, TRNS, TRNS, TRNS, FN6, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ - TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), + LEGACY_KEYMAP( + FN5, FN6, FN7, FN8, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, FN5, FN8, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, FN7, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, FN6, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), }; const uint16_t PROGMEM fn_actions[] = { /* Poker Layout */ diff --git a/keyboards/s60-x/keymaps/poker_bit/keymap.c b/keyboards/s60-x/keymaps/poker_bit/keymap.c index 4a4cfd1be8..7626038f42 100644 --- a/keyboards/s60-x/keymaps/poker_bit/keymap.c +++ b/keyboards/s60-x/keymaps/poker_bit/keymap.c @@ -1,9 +1,9 @@ -#include "keymap_common.h" +#include "s60-x.h" // Poker fix with toggle and bit operation // Fn + Esc = ` // Fn + {left, down, up, right} = {home, pgdown, pgup, end} -const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* 0: qwerty β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” β”‚GRAVEβ”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ - β”‚ = β”‚β–’β–’β–’β–’β–’β”‚BKSPCβ”‚ @@ -17,7 +17,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { β”‚LCTRLβ”‚L_WINβ”‚L_ALTβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ SPC β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn0 β”‚R_WINβ”‚ APP β”‚RCTRLβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ */ - KEYMAP( + LEGACY_KEYMAP( GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, BSLS, \ LCTL, A, S, D, F, G, H, J, K, L, SCLN, QUOT, NO, ENT, \ @@ -36,7 +36,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn1 β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ */ - [4] = KEYMAP( + [4] = LEGACY_KEYMAP( TRNS, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, TRNS, \ CAPS, FN2, UP, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, CALC, TRNS, HOME, INS, TRNS, \ TRNS, LEFT, DOWN, RGHT, TRNS, TRNS, PSCR, SLCK, PAUS, TRNS, FN4, END, TRNS, TRNS, \ @@ -55,7 +55,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn3 β”‚Home β”‚PgDwnβ”‚ End β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ */ - KEYMAP( + LEGACY_KEYMAP( TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ @@ -74,7 +74,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ */ - KEYMAP( + LEGACY_KEYMAP( ESC, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ @@ -93,7 +93,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚Left β”‚Down β”‚Rightβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ */ - KEYMAP( + LEGACY_KEYMAP( TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ diff --git a/keyboards/s60-x/keymaps/poker_set/keymap.c b/keyboards/s60-x/keymaps/poker_set/keymap.c index 0c1ef1a9b9..09423e75b3 100644 --- a/keyboards/s60-x/keymaps/poker_set/keymap.c +++ b/keyboards/s60-x/keymaps/poker_set/keymap.c @@ -1,9 +1,9 @@ -#include "keymap_common.h" +#include "s60-x.h" // Poker fix with set(state transition) // Fn + Esc = ` // Fn + {left, down, up, right} = {home, pgdown, pgup, end} -const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* 0: qwerty β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” β”‚GRAVEβ”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ - β”‚ = β”‚β–’β–’β–’β–’β–’β”‚BKSPCβ”‚ @@ -17,7 +17,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { β”‚LCTRLβ”‚L_WINβ”‚L_ALTβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ SPC β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn0 β”‚R_WINβ”‚ APP β”‚RCTRLβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ */ - KEYMAP( + LEGACY_KEYMAP( GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, BSLS, \ LCTL, A, S, D, F, G, H, J, K, L, SCLN, QUOT, NO, ENT, \ @@ -36,7 +36,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn1 β”‚Left β”‚Down β”‚Rightβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ */ - KEYMAP( + LEGACY_KEYMAP( TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ @@ -55,7 +55,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn2 β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ */ - KEYMAP( + LEGACY_KEYMAP( ESC, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ @@ -74,7 +74,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn3 β”‚Left β”‚Down β”‚Rightβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ */ - KEYMAP( + LEGACY_KEYMAP( ESC, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ @@ -93,7 +93,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn5 β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn4 β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ */ - KEYMAP( + LEGACY_KEYMAP( ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, TRNS, \ TRNS, FN6, UP, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, CALC, TRNS, HOME, INS, TRNS, \ TRNS, LEFT, DOWN, RGHT, TRNS, TRNS, PSCR, SLCK, PAUS, TRNS, FN8, END, TRNS, TRNS, \ @@ -112,7 +112,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn4 β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn5 β”‚Home β”‚PgDwnβ”‚ End β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ */ - KEYMAP( + LEGACY_KEYMAP( ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, TRNS, \ TRNS, FN7, UP, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, CALC, TRNS, HOME, INS, TRNS, \ TRNS, LEFT, DOWN, RGHT, TRNS, TRNS, PSCR, SLCK, PAUS, TRNS, FN8, END, TRNS, TRNS, \ @@ -131,7 +131,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn7 β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn6 β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ */ - KEYMAP( + LEGACY_KEYMAP( GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, TRNS, \ TRNS, FN4, UP, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, CALC, TRNS, HOME, INS, TRNS, \ TRNS, LEFT, DOWN, RGHT, TRNS, TRNS, PSCR, SLCK, PAUS, TRNS, FN8, END, TRNS, TRNS, \ @@ -150,7 +150,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn6 β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Fn7 β”‚Home β”‚PgDwnβ”‚ End β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ */ - KEYMAP( + LEGACY_KEYMAP( GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, TRNS, \ TRNS, FN5, UP, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, CALC, TRNS, HOME, INS, TRNS, \ TRNS, LEFT, DOWN, RGHT, TRNS, TRNS, PSCR, SLCK, PAUS, TRNS, FN8, END, TRNS, TRNS, \ diff --git a/keyboards/s60-x/keymaps/spacefn/keymap.c b/keyboards/s60-x/keymaps/spacefn/keymap.c index c930705320..b6dc7ca7eb 100644 --- a/keyboards/s60-x/keymaps/spacefn/keymap.c +++ b/keyboards/s60-x/keymaps/spacefn/keymap.c @@ -1,10 +1,10 @@ -#include "keymap_common.h" +#include "s60-x.h" /* * SpaceFN * http://geekhack.org/index.php?topic=51069.0 */ -const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 0: Default Layer β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” β”‚ ESC β”‚ 1 β”‚ 2 β”‚ 3 β”‚ 4 β”‚ 5 β”‚ 6 β”‚ 7 β”‚ 8 β”‚ 9 β”‚ 0 β”‚ - β”‚ = β”‚β–’β–’β–’β–’β–’β”‚BKSPCβ”‚ @@ -18,7 +18,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { β”‚LCTRLβ”‚L_GUIβ”‚L_ALTβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆSpc/Fn0β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚R_ALTβ”‚R_GUIβ”‚ APP β”‚RCTRLβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ */ - KEYMAP( + LEGACY_KEYMAP( ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, BSLS, \ CAPS, A, S, D, F, G, H, J, K, L, SCLN, QUOT, NO, ENT, \ @@ -38,7 +38,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚ β”‚ β”‚ β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ */ - KEYMAP( + LEGACY_KEYMAP( GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, DEL, \ TRNS, TRNS, TRNS, ESC, TRNS, TRNS, TRNS, HOME, UP, END, PSCR, SLCK, PAUS, INS, \ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, PGUP, LEFT, DOWN, RGHT, TRNS, TRNS, TRNS, TRNS, \ diff --git a/keyboards/s60-x/readme.md b/keyboards/s60-x/readme.md index 1509625651..4bba4b68fa 100644 --- a/keyboards/s60-x/readme.md +++ b/keyboards/s60-x/readme.md @@ -5,19 +5,10 @@ DIY compact keyboard designed by VinnyCordeiro for Sentraq. Most of the keymaps ## S60X Resources - [Massdrop page](https://www.massdrop.com/buy/sentraq-60-diy-keyboard-kit?mode=guest_open) -## Quantum MK Firmware - -For the full Quantum feature list, see [the parent readme.md](/readme.md). - -## Keymap -Several versions of keymaps are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `keymap_.c` and see keymap document (you can find in top README.md) and existent keymap files. - -To build firmware binary hex file with a certain keymap just run `make` with the `keymap` option like: - - $ make keymap=[custom|poker|poker_set|poker_bit|plain|hasu|spacefn|hhkb|] - -File [S60-X_pre-compiled_firmwares.zip](S60-X_pre-compiled_firmwares.zip) contains pre-compiled firmwares for all keymaps available. Not all of them are tested. +## Quickstart +If you just want to test a few layouts, the archive [s60-x_precompiled.zip](s60-x_precompiled.zip) contains pre-compiled .hex-files for all available keymaps. Not all of them are tested. +You only need to flash them onto your keyboard, which is explained below, there's no need to setup a build environment. For a full list ## Flashing your keyboard The recommended programs for flashing your keyboard are [Atmel FLIP](http://www.atmel.com/tools/FLIP.aspx) (Windows) and [dfu-programmer](http://dfu-programmer.sourceforge.net/) (Linux/Windows). @@ -29,7 +20,7 @@ The recommended programs for flashing your keyboard are [Atmel FLIP](http://www. **Programming the firmware (Windows)** 1. download and install FLIP (http://www.atmel.com/tools/FLIP.aspx) -2. connect the keyboard, press the program button (S1) and wait until it enumerates +2. connect the keyboard, press the program button on the underside of the board (S1) and wait until it enumerates (you'll hear the "disconnect" and "connect" sound) 3. go to device manager, find the atmega32u4 chip and click "update driver" 4. choose location manually: folder named "usb" inside the installation directory of FLIP 5. once the driver is installed, run flip @@ -49,6 +40,21 @@ The recommended programs for flashing your keyboard are [Atmel FLIP](http://www. 3. `sudo dfu-programmer atmega32u4 start` 3. The keyboard should start working. If it doesn't, reconnect the cable. +## Building the firmware + +To build firmware binary hex file with a certain keymap just run `make` with the `keymap` option like: + + $ make keymap=[custom|poker|poker_set|poker_bit|plain|hasu|spacefn|hhkb|] + +For a more detailed explanation of the build process and the environment setup, see the ["Getting Started" section](/readme.md#getting-started). + +## List of included Keymaps + +Several versions of keymaps are available in advance but you are recommended to define your favorite layout yourself. +To define your own keymap, copy the [default keymap template](/quantum/template/keymaps/default) directory into the `keymaps` directory and start modifying the `keymap.c` file. Some options might require you to change the `config.h` or `Makefile` as well, refer to the main documentation for more information on those. +If you want to later merge your finalised keymap into this repository to make it available for everyone, make sure to also modify the `readme.md` in your keymap directory to show a visual version of your keymap. + +Here's a list of the standard layouts that are provided with the precompiled .hex-files. ### 0 Initial explanations The β–ˆβ–ˆβ–ˆβ–ˆβ–ˆ blocks on the layouts hides the switch positions that do not exist physically on the PCB. If you feel like hacking the keyboard and adding new keys, those are the positions that can be used. You'll have to modify the [keymap_common.h](keymap_common.h) file for that. diff --git a/keyboards/s60-x/s60-x.h b/keyboards/s60-x/s60-x.h index 91e7b67f31..29a2a27b22 100644 --- a/keyboards/s60-x/s60-x.h +++ b/keyboards/s60-x/s60-x.h @@ -49,4 +49,21 @@ along with this program. If not, see . { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, KC_NO } \ } +/*This special definition is used for S60-X keymaps that were ported from TMK + * QMK has a lot of keycodes that don't start with KC_, so using the regular KEYMAP macro is recommended + */ +#define LEGACY_KEYMAP( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, K41, K42, K46, K4A, K4B, K4C, K4D \ +) { \ + { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0A, KC_##K0B, KC_##K0C, KC_##K0D, KC_##K0E }, \ + { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D, KC_NO }, \ + { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D, KC_NO }, \ + { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D, KC_##K3E }, \ + { KC_##K40, KC_##K41, KC_##K42, KC_NO, KC_NO, KC_NO, KC_##K46, KC_NO, KC_NO, KC_NO, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D, KC_NO } \ +} + #endif diff --git a/keyboards/s60-x/s60-x_precompiled.zip b/keyboards/s60-x/s60-x_precompiled.zip new file mode 100644 index 0000000000000000000000000000000000000000..00d99ca8a15040294f7a6e2c3dbe997c2d947c5e GIT binary patch literal 276106 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

2&q3Cif2b+0-Y3!UfDR?ww3EVo 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 z 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 Date: Sun, 14 Aug 2016 20:25:52 -0700 Subject: [PATCH 08/34] Setup the bottom-row modifiers to be mac-like in their arrangement. --- keyboards/phantom/keymaps/xyverz/keymap.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/keyboards/phantom/keymaps/xyverz/keymap.c b/keyboards/phantom/keymaps/xyverz/keymap.c index aa6af18b1d..4a15226386 100644 --- a/keyboards/phantom/keymaps/xyverz/keymap.c +++ b/keyboards/phantom/keymaps/xyverz/keymap.c @@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN}, {KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, XXXXXXX, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX}, {KC_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, XXXXXXX, KC_RSFT, XXXXXXX, KC_UP, XXXXXXX}, - {KC_LCTL, KC_LGUI, KC_LALT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, XXXXXXX, XXXXXXX, KC_RALT, KC_RGUI, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT} + {KC_LCTL, KC_LALT, KC_LGUI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, XXXXXXX, XXXXXXX, KC_RGUI, KC_RALT, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT} }, [_DV] = { /* Layer 1: Dvorak */ @@ -43,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSLS, KC_DEL, KC_END, KC_PGDN}, {KC_CAPS, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, XXXXXXX, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX}, {KC_LSFT, XXXXXXX, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, XXXXXXX, KC_RSFT, XXXXXXX, KC_UP, XXXXXXX}, - {KC_LCTL, KC_LGUI, KC_LALT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, XXXXXXX, XXXXXXX, KC_RALT, KC_RGUI, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT} + {KC_LCTL, KC_LALT, KC_LGUI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, XXXXXXX, XXXXXXX, KC_RGUI, KC_RALT, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT} }, [_CM] = { /* Layer 2: Colemak */ @@ -52,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN}, {KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, XXXXXXX, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX}, {KC_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, XXXXXXX, KC_RSFT, XXXXXXX, KC_UP, XXXXXXX}, - {KC_LCTL, KC_LGUI, KC_LALT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, XXXXXXX, XXXXXXX, KC_RALT, KC_RGUI, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT} + {KC_LCTL, KC_LALT, KC_LGUI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, XXXXXXX, XXXXXXX, KC_RGUI, KC_RALT, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT} }, [_FL] = { /* Layer 3: Functions */ From 8e2d69d5a27adfb3ec1e288e8099a408ac72bc84 Mon Sep 17 00:00:00 2001 From: Xyverz Date: Mon, 15 Aug 2016 06:28:39 -0700 Subject: [PATCH 09/34] Adding u/treasuredfrog's hack to use LT() with the RAISE and LOWER macros. --- keyboards/planck/keymaps/xyverz/keymap.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/keyboards/planck/keymaps/xyverz/keymap.c b/keyboards/planck/keymaps/xyverz/keymap.c index 90529428da..6d10083fee 100644 --- a/keyboards/planck/keymaps/xyverz/keymap.c +++ b/keyboards/planck/keymaps/xyverz/keymap.c @@ -27,8 +27,8 @@ enum planck_keycodes { COLEMAK, DVORAK, PLOVER, - LOWER, - RAISE, + LOWER = LT(_LOWER, KC_BSPC), + RAISE = LT(_RAISE, KC_ENT), BACKLIT, EXT_PLV }; @@ -89,7 +89,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_DVORAK] = { {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH}, {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS}, - {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_T(KC_ENT)}, + {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT}, {KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, LOWER, KC_BSPC, KC_SPC, RAISE, KC_UP, KC_DOWN, KC_RGUI, KC_ENT } }, @@ -225,7 +225,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { layer_off(_LOWER); update_tri_layer(_LOWER, _RAISE, _ADJUST); } - return false; + //return false; break; case RAISE: if (record->event.pressed) { @@ -235,7 +235,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { layer_off(_RAISE); update_tri_layer(_LOWER, _RAISE, _ADJUST); } - return false; + //return false; break; case BACKLIT: if (record->event.pressed) { @@ -311,4 +311,4 @@ void music_scale_user(void) PLAY_NOTE_ARRAY(music_scale, false, 0); } -#endif \ No newline at end of file +#endif From 5c5c3e626b7f2e4a5835988c069c7154f347c4ca Mon Sep 17 00:00:00 2001 From: Xyverz Date: Mon, 15 Aug 2016 06:57:24 -0700 Subject: [PATCH 10/34] Adding KC_BSPC to the LT() macro for LOWER resulted in a backspace stroke being sent if the LOWER key was used too quickly. Switching back to original LOWER macro, but keeping the new RAISE macro. --- keyboards/planck/keymaps/xyverz/keymap.c | 62 ++------------------- keyboards/planck/keymaps/xyverz/makefile.mk | 4 +- 2 files changed, 7 insertions(+), 59 deletions(-) diff --git a/keyboards/planck/keymaps/xyverz/keymap.c b/keyboards/planck/keymaps/xyverz/keymap.c index 6d10083fee..e57746e6ac 100644 --- a/keyboards/planck/keymaps/xyverz/keymap.c +++ b/keyboards/planck/keymaps/xyverz/keymap.c @@ -19,18 +19,15 @@ extern keymap_config_t keymap_config; #define _DVORAK 2 #define _LOWER 3 #define _RAISE 4 -#define _PLOVER 5 #define _ADJUST 16 enum planck_keycodes { QWERTY = SAFE_RANGE, COLEMAK, DVORAK, - PLOVER, - LOWER = LT(_LOWER, KC_BSPC), + LOWER, RAISE = LT(_RAISE, KC_ENT), - BACKLIT, - EXT_PLV + BACKLIT }; // Fillers to make layering more clear @@ -129,30 +126,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {BACKLIT, _______, KC_HOME, KC_END, _______, KC_DEL, KC_INS, _______, KC_PGUP, KC_PGDN, _______, _______} }, -/* 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_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC}, - {XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, - {EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX} -}, - /* Adjust (Lower + Raise) * ,-----------------------------------------------------------------------------------. * | | Reset| | | | | | | | | | Del | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| | + * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | * |------+------+------+------+------+------|------+------+------+------+------+------| * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | | * |------+------+------+------+------+------+------+------+------+------+------+------| @@ -161,7 +139,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_ADJUST] = { {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, - {_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______}, + {_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______}, {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} } @@ -175,8 +153,6 @@ float tone_startup[][2] = SONG(STARTUP_SOUND); float tone_qwerty[][2] = SONG(QWERTY_SOUND); float tone_dvorak[][2] = SONG(DVORAK_SOUND); float tone_colemak[][2] = SONG(COLEMAK_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); @@ -225,7 +201,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { layer_off(_LOWER); update_tri_layer(_LOWER, _RAISE, _ADJUST); } - //return false; + return false; break; case RAISE: if (record->event.pressed) { @@ -248,34 +224,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } 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; } return true; } diff --git a/keyboards/planck/keymaps/xyverz/makefile.mk b/keyboards/planck/keymaps/xyverz/makefile.mk index 0f4953888d..93a89bb4ab 100644 --- a/keyboards/planck/keymaps/xyverz/makefile.mk +++ b/keyboards/planck/keymaps/xyverz/makefile.mk @@ -9,10 +9,10 @@ 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 +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 = yes # Enable keyboard backlight functionality MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = yes # Audio output on port C6 +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. From faa3fd48aefb6b9386852b23eb433bafb413755b Mon Sep 17 00:00:00 2001 From: Felix Uhl Date: Mon, 15 Aug 2016 22:57:26 +0200 Subject: [PATCH 11/34] Minor changes to felix keymap --- keyboards/s60-x/keymaps/felix/Makefile | 8 ++--- keyboards/s60-x/keymaps/felix/config.h | 14 ++++++++ keyboards/s60-x/keymaps/felix/keymap.c | 49 +++++++++++++++++++------- 3 files changed, 54 insertions(+), 17 deletions(-) create mode 100644 keyboards/s60-x/keymaps/felix/config.h diff --git a/keyboards/s60-x/keymaps/felix/Makefile b/keyboards/s60-x/keymaps/felix/Makefile index 251e4631d3..6a078bcc3f 100644 --- a/keyboards/s60-x/keymaps/felix/Makefile +++ b/keyboards/s60-x/keymaps/felix/Makefile @@ -2,12 +2,12 @@ # 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 = yes # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) +CONSOLE_ENABLE = yes # Console for debug(+400) COMMAND_ENABLE = yes # Commands for debug and configuration -NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # 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 = no # Audio output on port C6 diff --git a/keyboards/s60-x/keymaps/felix/config.h b/keyboards/s60-x/keymaps/felix/config.h new file mode 100644 index 0000000000..6c01d579f8 --- /dev/null +++ b/keyboards/s60-x/keymaps/felix/config.h @@ -0,0 +1,14 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +// keymap needs oneshot functionality +#undef NO_ACTION_ONESHOT + +#undef IS_COMMAND +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +#endif \ No newline at end of file diff --git a/keyboards/s60-x/keymaps/felix/keymap.c b/keyboards/s60-x/keymaps/felix/keymap.c index 9c620527b0..6e40d4839f 100644 --- a/keyboards/s60-x/keymaps/felix/keymap.c +++ b/keyboards/s60-x/keymaps/felix/keymap.c @@ -20,6 +20,26 @@ along with this program. If not, see . #define _______ KC_TRNS #define XXXXXXX KC_NO +#define ONESHOT_TAP_TOGGLE 2 +#define ONESHOT_TIMEOUT 1 + +//Special keycodes for better readability +//SpaceFN +//OneShot LeftShift +//GamingMode Lock (disables SpaceFn and OneShot LShift) +//Function +#define KC_SPACEFN KC_FN0 +#define KC_OSLS KC_FN3 +#define KC_GMLK KC_FN1 +#define KC_FUNC KC_FN2 + +enum function_codes { + F_SPACEFN = 0, + F_OSLS = 3, + F_GMLK = 1, + F_FUNC = 2 +}; + enum layer_names { DEFAULT, GAMING, @@ -52,7 +72,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-----------------------------------------------------------| * |Ctrl | A| S| D| F| G| H| J| K| L| ;| '|Return | * |-----------------------------------------------------------| - * |Shift | Y| X| C| V| B| N| M| ,| .| /| Up |RSft| + * |Shift OS| Y| X| C| V| B| N| M| ,| .| /| Up |RSft| * |-----------------------------------------------------------| * |Fn2 |Gui |Alt | SpaceFn |Alt |Left|Down|Right| * `-----------------------------------------------------------' @@ -61,8 +81,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL, \ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Z, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, \ - KC_LSFT, KC_NUBS, KC_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_UP, KC_RSFT, \ - KC_FN2, KC_LGUI, KC_LALT, KC_FN0, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT), + KC_OSLS, KC_NUBS, KC_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_UP, KC_RSFT, \ + KC_FUNC, KC_LGUI, KC_LALT, KC_SPACEFN, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT + ), /* Layout 1: Gaming Layer, SpaceFn disabled * ,-----------------------------------------------------------. @@ -72,7 +93,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-----------------------------------------------------------| * | | | | | | | | | | | | | | * |-----------------------------------------------------------| - * | | | | | | | | | | | | |Fn1 | + * |SFTnonOS| | | | | | | | | | | |Fn1 | * |-----------------------------------------------------------| * | | NOP| | Space | | | | | * `-----------------------------------------------------------' @@ -81,8 +102,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_FN1, \ - _______, XXXXXXX, _______, KC_SPC, _______, _______, _______, _______), + KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_GMLK, \ + _______, XXXXXXX, _______, KC_SPC, _______, _______, _______, _______ + ), /* Layout 2: Function Layer * ,-----------------------------------------------------------. @@ -92,7 +114,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-----------------------------------------------------------| * | | Δ | ί | |Vl-|Mut|Vl+| | | | | |PEnt | * |-----------------------------------------------------------| - * | | | | | |Cal| | | | |Pau |PUp |Fn1 | + * | CpsLck | | | | |Cal| | | | |Pau |PUp |Fn1 | * |-----------------------------------------------------------| * | | | | | |Home|PDn |End | * `-----------------------------------------------------------' @@ -101,17 +123,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, RESET, \ _______, _______, KC_C_WM, KC_C_EM, KC_MPRV, KC_MPLY, KC_MNXT, KC_C_UM, KC_C_IM, KC_C_OM, _______, KC_PSCR, KC_SLCK, KC_PAUS, \ _______, KC_C_AM, KC_C_SM, _______, KC_VOLD, KC_MUTE, KC_VOLU, _______, _______, _______, _______, _______, _______, KC_PENT, \ - _______, KC_C_YM, _______, _______, _______, _______, KC_CALC, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_FN1, \ - _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END), + KC_CAPS, KC_C_YM, _______, _______, _______, _______, KC_CALC, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_GMLK, \ + _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END + ), }; /* * Fn action definition */ const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_LAYER_TAP_KEY(2, KC_SPACE), /* SpaceFn layout 1 */ - [1] = ACTION_LAYER_TOGGLE(1), /* Disable SpaceFn */ - [2] = ACTION_LAYER_MOMENTARY(2) /* SpaceFn layout 1 */ + [F_SPACEFN] = ACTION_LAYER_TAP_KEY(2, KC_SPACE), // SpaceFn layout 1 + [F_GMLK] = ACTION_LAYER_TOGGLE(1), // Disable SpaceFn and Oneshot Shift + [F_FUNC] = ACTION_LAYER_MOMENTARY(2), // SpaceFn layout 1 + [F_OSLS] = ACTION_MODS_ONESHOT(MOD_LSFT) // Oneshot Leftshift }; const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) @@ -119,7 +143,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) return MACRO_NONE; }; - void matrix_init_user(void) { } From e3486caf870b4e4adf915f490e3905d4e24ce2ac Mon Sep 17 00:00:00 2001 From: Xyverz Date: Wed, 17 Aug 2016 14:54:05 -0700 Subject: [PATCH 12/34] Create readme.md --- keyboards/ergodox/keymaps/xyverz/readme.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 keyboards/ergodox/keymaps/xyverz/readme.md diff --git a/keyboards/ergodox/keymaps/xyverz/readme.md b/keyboards/ergodox/keymaps/xyverz/readme.md new file mode 100644 index 0000000000..9cb22bde6a --- /dev/null +++ b/keyboards/ergodox/keymaps/xyverz/readme.md @@ -0,0 +1,5 @@ +# PLEASE NOTE + +## This keymap is optomised for the EZ and Original ergodox. + +It will need modification in order to work on the Infinity. From ef95c10c6659ecc5e23b126d9ac4f3b2d169efb2 Mon Sep 17 00:00:00 2001 From: Xyverz Date: Wed, 17 Aug 2016 14:55:01 -0700 Subject: [PATCH 13/34] Update readme.md --- keyboards/ergodox/keymaps/xyverz/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/ergodox/keymaps/xyverz/readme.md b/keyboards/ergodox/keymaps/xyverz/readme.md index 9cb22bde6a..22e771b091 100644 --- a/keyboards/ergodox/keymaps/xyverz/readme.md +++ b/keyboards/ergodox/keymaps/xyverz/readme.md @@ -2,4 +2,4 @@ ## This keymap is optomised for the EZ and Original ergodox. -It will need modification in order to work on the Infinity. +It will need **substantial** modification in order to work on the Infinity. From 47beb763e824341c82ad2f9e23b57ecbd4e38308 Mon Sep 17 00:00:00 2001 From: Xyverz Date: Thu, 18 Aug 2016 00:05:24 -0700 Subject: [PATCH 14/34] Returned RAISE and LOWER buttons to their original functions - too many inopportune ENTER inputs. :-( --- keyboards/planck/keymaps/xyverz/keymap.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/keyboards/planck/keymaps/xyverz/keymap.c b/keyboards/planck/keymaps/xyverz/keymap.c index e57746e6ac..192933b181 100644 --- a/keyboards/planck/keymaps/xyverz/keymap.c +++ b/keyboards/planck/keymaps/xyverz/keymap.c @@ -26,7 +26,7 @@ enum planck_keycodes { COLEMAK, DVORAK, LOWER, - RAISE = LT(_RAISE, KC_ENT), + RAISE, BACKLIT }; @@ -86,7 +86,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_DVORAK] = { {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH}, {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS}, - {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT}, + {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_T(KC_ENT)}, {KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, LOWER, KC_BSPC, KC_SPC, RAISE, KC_UP, KC_DOWN, KC_RGUI, KC_ENT } }, @@ -211,7 +211,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { layer_off(_RAISE); update_tri_layer(_LOWER, _RAISE, _ADJUST); } - //return false; + return false; break; case BACKLIT: if (record->event.pressed) { From 035290b7d84e1f2c4d473d585b66e1dde9b3bdee Mon Sep 17 00:00:00 2001 From: Xyverz Date: Thu, 18 Aug 2016 00:22:56 -0700 Subject: [PATCH 15/34] Added a readme, tidied up comments in the keymap. --- keyboards/ergodox/keymaps/xyverz/keymap.c | 53 +++++---- keyboards/ergodox/keymaps/xyverz/readme.md | 123 ++++++++++++++++++++- 2 files changed, 147 insertions(+), 29 deletions(-) diff --git a/keyboards/ergodox/keymaps/xyverz/keymap.c b/keyboards/ergodox/keymaps/xyverz/keymap.c index c5ce99dd22..7a16367bfa 100644 --- a/keyboards/ergodox/keymaps/xyverz/keymap.c +++ b/keyboards/ergodox/keymaps/xyverz/keymap.c @@ -1,4 +1,10 @@ /* + * PLEASE NOTE: This keymap will NOT work with the Infinity ErgoDox due to the fact that the mappings are + * based on the Matrix Layout in the ez.h file. If you want to use this for the infinity, you'll need to + * figure out where the keys are in the matrix and redo the layout arrays below. + * + * About this keymap: + * * The Dvorak layout shown herestems from my early Kinesis years, using the Contour PS/2 with a Dvorak * software layout. Because of this, the RBRC and LBRC were on opposite sides of the board in the corner * keys. I've decided to continue using this layout with my ErgoDox. @@ -33,8 +39,9 @@ extern keymap_config_t keymap_config; #define COLEMAK M(_CM) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* Keymap 0: Dvorak layer - * + +[_DV] = { // layer 0 : Dvorak +/* * ,--------------------------------------------------. ,--------------------------------------------------. * | ] | 1 | 2 | 3 | 4 | 5 | ESC | | ESC | 6 | 7 | 8 | 9 | 0 | [ | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| @@ -55,9 +62,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `--------------------' `--------------------' * */ -// If it accepts an argument (i.e, is a function), it doesn't need KC_. -// Otherwise, it needs KC_* -[_DV] = { // layer 0 : Dvorak // left hand {KC_RBRC, KC_TAB, KC_CAPS, KC_LSFT, KC_LGUI, KC_NO }, {KC_1, KC_QUOT, KC_A, KC_SCLN, KC_GRV, KC_END }, @@ -77,8 +81,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_LBRC, KC_BSLS, KC_MINS, KC_RSFT, KC_RGUI, KC_NO } }, -/* Keymap 1: QWERTY layer - * + +[_QW] = { // layer 1 : QWERTY +/* * ,--------------------------------------------------. ,--------------------------------------------------. * | = | 1 | 2 | 3 | 4 | 5 | ESC | | ESC | 6 | 7 | 8 | 9 | 0 | - | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| @@ -98,9 +103,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | End | | PgDn | | | * `--------------------' `--------------------' */ -// If it accepts an argument (i.e, is a function), it doesn't need KC_. -// Otherwise, it needs KC_* -[_QW] = { // layer 1 : QWERTY // left hand {KC_EQL, KC_TAB, KC_CAPS, KC_LSFT, KC_LGUI, KC_NO }, {KC_1, KC_Q, KC_A, KC_Z, KC_GRV, KC_END }, @@ -120,8 +122,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_MINS, KC_BSLS, KC_QUOT, KC_RSFT, KC_RGUI, KC_NO } }, -/* Keymap 2: Colemak layer - * + +[_CM] = { // layer 2 : Colemak +/* * ,--------------------------------------------------. ,--------------------------------------------------. * | = | 1 | 2 | 3 | 4 | 5 | ESC | | ESC | 6 | 7 | 8 | 9 | 0 | - | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| @@ -141,9 +144,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | End | | PgDn | | | * `--------------------' `--------------------' */ -// If it accepts an argument (i.e, is a function), it doesn't need KC_. -// Otherwise, it needs KC_* -[_CM] = { // layer 2 : Colemak // left hand {KC_EQL, KC_TAB, KC_BSPC, KC_LSFT, KC_LGUI, KC_NO }, {KC_1, KC_Q, KC_A, KC_Z, KC_GRV, KC_END }, @@ -163,15 +163,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_MINS, KC_BSLS, KC_QUOT, KC_RSFT, KC_RGUI, KC_NO } }, -/* Keymap 3: Symbol Layer - * + +[_MD] = { // layer 3 : Media layer +/* * ,--------------------------------------------------. ,--------------------------------------------------. * | TEENSY | F1 | F2 | F3 | F4 | F5 | F11 | | F12 | F6 | F7 | F8 | F9 | F10 | | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | | PrSc | ScLk | Paus | | FN4 | | FN5 | | Mute | Vol- | Vol+ | | | + * | | | PrSc | ScLk | Paus | | | | | | Mute | Vol- | Vol+ | | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | | | | | | |------| |------| Stop | Prev | Play | Next | Sel | | - * |--------+------+------+------+------+------| FN4 | | FN5 |------+------+------+------+------+--------| + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | | |Dvorak|Qwerty|Colemk| | | | | | | | | | | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' * | | | | | | | | | | | | @@ -184,8 +185,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | * `--------------------' `--------------------' */ -// Media Layer -[_MD] = { // layer 3 : Media layer // left hand {RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO }, {KC_F1, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}, @@ -205,15 +204,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO } }, -/* Keymap 4: Keypad layer - * + +[_KP] = { // layer 4 : Keypad layer +/* * ,--------------------------------------------------. ,--------------------------------------------------. * | Power | | | | | | | | | | NmLk | KP / | KP * | KP - | | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | Sleep | | | | | | FN5 | | FN4 | | KP 7 | KP 8 | KP 9 | KP + | | + * | Sleep | | | | | | | | | | KP 7 | KP 8 | KP 9 | KP + | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | Wake | | | | | |------| |------| | KP 4 | KP 5 | KP 6 | KP + | | - * |--------+------+------+------+------+------| FN5 | | FN4 |------+------+------+------+------+--------| + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | | | | | | | | | | | KP 1 | KP 2 | KP 3 |KP Ent| | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' * | | | | | | | KP 0 | | KP . |KP Ent| | @@ -226,8 +226,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | * `--------------------' `--------------------' */ -// Keypad Layer -[_KP] = { // layer 4 : Keypad layer // left hand {KC_PWR, KC_SLEP, KC_WAKE, KC_TRNS, KC_TRNS, KC_NO }, {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}, @@ -247,6 +245,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO } }, + }; const uint16_t PROGMEM fn_actions[] = { diff --git a/keyboards/ergodox/keymaps/xyverz/readme.md b/keyboards/ergodox/keymaps/xyverz/readme.md index 22e771b091..42ae8fe539 100644 --- a/keyboards/ergodox/keymaps/xyverz/readme.md +++ b/keyboards/ergodox/keymaps/xyverz/readme.md @@ -1,5 +1,124 @@ -# PLEASE NOTE +# Xyverz's ErgoDox EZ Keymap -## This keymap is optomised for the EZ and Original ergodox. +## Please Note: It will need **substantial** modification in order to work on the Infinity. + +PLEASE NOTE: This keymap will NOT work with the Infinity ErgoDox due to the fact that the mappings are based on the Matrix Layout in the ez.h file. If you want to use this for the infinity, you'll need to figure out where the keys are in the matrix and redo the layout arrays below. + +## About this keymap: + +The Dvorak layout shown herestems from my early Kinesis years, using the Contour PS/2 with a Dvorak software layout. Because of this, the RBRC and LBRC were on opposite sides of the board in the corner keys. I've decided to continue using this layout with my ErgoDox. + +The QWERTY layout shown here is based entirely on the Kinesis Advantage layout, with the additional keys as shown in the diagrams. The Colemak layout is merely an adaptation of that. + +I've enabled persistent keymaps for Qwerty, Dvorak and Colemak layers, similar to the default Planck layouts. + +For a better explanation of the layout matrices shown below, take a look at ../../ez/ez.h where the keymap is defined, beginning on line 81. + +### Layer 0: Dvorak layer + +,--------------------------------------------------. ,--------------------------------------------------. +| ] | 1 | 2 | 3 | 4 | 5 | ESC | | ESC | 6 | 7 | 8 | 9 | 0 | [ | +|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| +| Tab | ' | , | . | Y | Y | | | | F | G | C | R | L | \ | +|--------+------+------+------+------+------| | | |------+------+------+------+------+--------| +| CapsLk | A | O | E | U | I |------| |------| D | H | T | N | S | - | +|--------+------+------+------+------+------| _MD | | _KP |------+------+------+------+------+--------| +| LShift | Z | X | C | V | X | | | | B | M | W | V | Z | RShift | +`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + | LGUI | ` | INS | Left | Rght | | Up | Dn | / | = | RGUI | + `----------------------------------' `----------------------------------' + ,-------------. ,-------------. + | LCtr | LAlt | | Ralt | RCtr | + ,------|------|------| |------+------+------. + | | | Home | | PgUp | | | + | BkSp | Del |------| |------| Enter| Space| + | | | End | | PgDn | | | + `--------------------' `--------------------' + +### Layer 1: QWERTY layer + +,--------------------------------------------------. ,--------------------------------------------------. +| = | 1 | 2 | 3 | 4 | 5 | ESC | | ESC | 6 | 7 | 8 | 9 | 0 | - | +|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| +| Tab | Q | W | E | R | T | | | | Y | U | I | O | P | \ | +|--------+------+------+------+------+------| | | |------+------+------+------+------+--------| +| CapsLk | A | S | D | F | G |------| |------| H | J | K | L | ; | ' | +|--------+------+------+------+------+------| _MD | | _KP |------+------+------+------+------+--------| +| LShift | Z | X | C | V | B | | | | N | M | , | . | / | RShift | +`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + | LGUI | ` | INS | Left | Rght | | Up | Dn | [ | ] | RGUI | + `----------------------------------' `----------------------------------' + ,-------------. ,-------------. + | LCtr | LAlt | | Ralt | RCtr | + ,------|------|------| |------+------+------. + | | | Home | | PgUp | | | + | BkSp | Del |------| |------| Enter| Space| + | | | End | | PgDn | | | + `--------------------' `--------------------' + +### Keymap 2: Colemak layer + +,--------------------------------------------------. ,--------------------------------------------------. +| = | 1 | 2 | 3 | 4 | 5 | ESC | | ESC | 6 | 7 | 8 | 9 | 0 | - | +|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| +| Tab | Q | W | F | P | G | | | | J | L | U | Y | ; | \ | +|--------+------+------+------+------+------| | | |------+------+------+------+------+--------| +| BkSpc | A | R | S | T | D |------| |------| H | N | E | I | O | ' | +|--------+------+------+------+------+------| _MD | | _KP |------+------+------+------+------+--------| +| LShift | Z | X | C | V | B | | | | K | M | , | . | / | RShift | +`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + | LGUI | ` | INS | Left | Rght | | Up | Dn | [ | ] | RGUI | + `----------------------------------' `----------------------------------' + ,-------------. ,-------------. + | LCtr | LAlt | | Ralt | RCtr | + ,------|------|------| |------+------+------. + | | | Home | | PgUp | | | + | BkSp | Del |------| |------| Enter| Space| + | | | End | | PgDn | | | + `--------------------' `--------------------' + +### layer 3 : Media layer + +,--------------------------------------------------. ,--------------------------------------------------. +| TEENSY | F1 | F2 | F3 | F4 | F5 | F11 | | F12 | F6 | F7 | F8 | F9 | F10 | | +|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| +| | | PrSc | ScLk | Paus | | | | | | Mute | Vol- | Vol+ | | | +|--------+------+------+------+------+------| | | |------+------+------+------+------+--------| +| | | | | | |------| |------| Stop | Prev | Play | Next | Sel | | +|--------+------+------+------+------+------| | | |------+------+------+------+------+--------| +| | |Dvorak|Qwerty|Colemk| | | | | | | | | | | +`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + | | | | | | | | | | | | + `----------------------------------' `----------------------------------' + ,-------------. ,-------------. + | | | | | | + ,------|------|------| |------+------+------. + | | | | | | | | + | | |------| |------| | | + | | | | | | | | + `--------------------' `--------------------' + + + +### Keymap 4: Keypad layer + +,--------------------------------------------------. ,--------------------------------------------------. +| Power | | | | | | | | | | NmLk | KP / | KP| KP - | | +|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| +| Sleep | | | | | | | | | | KP 7 | KP 8 | KP 9 | KP + | | +|--------+------+------+------+------+------| | | |------+------+------+------+------+--------| +| Wake | | | | | |------| |------| | KP 4 | KP 5 | KP 6 | KP + | | +|--------+------+------+------+------+------| | | |------+------+------+------+------+--------| +| | | | | | | | | | | KP 1 | KP 2 | KP 3 |KP Ent| | +`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + | | | | | | | KP 0 | | KP . |KP Ent| | + `----------------------------------' `----------------------------------' + ,-------------. ,-------------. + | | | | | | + ,------|------|------| |------+------+------. + | | | | | | | | + | | |------| |------| | | + | | | | | | | | + `--------------------' `--------------------' From 4dd641a128aa93f9decec3387b7c34a01007eb4a Mon Sep 17 00:00:00 2001 From: Xyverz Date: Thu, 18 Aug 2016 00:27:54 -0700 Subject: [PATCH 16/34] Hopefully this fixes the layout diagrams. --- keyboards/ergodox/keymaps/xyverz/readme.md | 182 ++++++++++----------- 1 file changed, 91 insertions(+), 91 deletions(-) diff --git a/keyboards/ergodox/keymaps/xyverz/readme.md b/keyboards/ergodox/keymaps/xyverz/readme.md index 42ae8fe539..8bcf5b3035 100644 --- a/keyboards/ergodox/keymaps/xyverz/readme.md +++ b/keyboards/ergodox/keymaps/xyverz/readme.md @@ -18,107 +18,107 @@ For a better explanation of the layout matrices shown below, take a look at ../. ### Layer 0: Dvorak layer -,--------------------------------------------------. ,--------------------------------------------------. -| ] | 1 | 2 | 3 | 4 | 5 | ESC | | ESC | 6 | 7 | 8 | 9 | 0 | [ | -|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| -| Tab | ' | , | . | Y | Y | | | | F | G | C | R | L | \ | -|--------+------+------+------+------+------| | | |------+------+------+------+------+--------| -| CapsLk | A | O | E | U | I |------| |------| D | H | T | N | S | - | -|--------+------+------+------+------+------| _MD | | _KP |------+------+------+------+------+--------| -| LShift | Z | X | C | V | X | | | | B | M | W | V | Z | RShift | -`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - | LGUI | ` | INS | Left | Rght | | Up | Dn | / | = | RGUI | - `----------------------------------' `----------------------------------' - ,-------------. ,-------------. - | LCtr | LAlt | | Ralt | RCtr | - ,------|------|------| |------+------+------. - | | | Home | | PgUp | | | - | BkSp | Del |------| |------| Enter| Space| - | | | End | | PgDn | | | - `--------------------' `--------------------' + ,--------------------------------------------------. ,--------------------------------------------------. + | ] | 1 | 2 | 3 | 4 | 5 | ESC | | ESC | 6 | 7 | 8 | 9 | 0 | [ | + |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + | Tab | ' | , | . | Y | Y | | | | F | G | C | R | L | \ | + |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + | CapsLk | A | O | E | U | I |------| |------| D | H | T | N | S | - | + |--------+------+------+------+------+------| _MD | | _KP |------+------+------+------+------+--------| + | LShift | Z | X | C | V | X | | | | B | M | W | V | Z | RShift | + `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + | LGUI | ` | INS | Left | Rght | | Up | Dn | / | = | RGUI | + `----------------------------------' `----------------------------------' + ,-------------. ,-------------. + | LCtr | LAlt | | Ralt | RCtr | + ,------|------|------| |------+------+------. + | | | Home | | PgUp | | | + | BkSp | Del |------| |------| Enter| Space| + | | | End | | PgDn | | | + `--------------------' `--------------------' ### Layer 1: QWERTY layer -,--------------------------------------------------. ,--------------------------------------------------. -| = | 1 | 2 | 3 | 4 | 5 | ESC | | ESC | 6 | 7 | 8 | 9 | 0 | - | -|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| -| Tab | Q | W | E | R | T | | | | Y | U | I | O | P | \ | -|--------+------+------+------+------+------| | | |------+------+------+------+------+--------| -| CapsLk | A | S | D | F | G |------| |------| H | J | K | L | ; | ' | -|--------+------+------+------+------+------| _MD | | _KP |------+------+------+------+------+--------| -| LShift | Z | X | C | V | B | | | | N | M | , | . | / | RShift | -`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - | LGUI | ` | INS | Left | Rght | | Up | Dn | [ | ] | RGUI | - `----------------------------------' `----------------------------------' - ,-------------. ,-------------. - | LCtr | LAlt | | Ralt | RCtr | - ,------|------|------| |------+------+------. - | | | Home | | PgUp | | | - | BkSp | Del |------| |------| Enter| Space| - | | | End | | PgDn | | | - `--------------------' `--------------------' - + ,--------------------------------------------------. ,--------------------------------------------------. + | = | 1 | 2 | 3 | 4 | 5 | ESC | | ESC | 6 | 7 | 8 | 9 | 0 | - | + |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + | Tab | Q | W | E | R | T | | | | Y | U | I | O | P | \ | + |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + | CapsLk | A | S | D | F | G |------| |------| H | J | K | L | ; | ' | + |--------+------+------+------+------+------| _MD | | _KP |------+------+------+------+------+--------| + | LShift | Z | X | C | V | B | | | | N | M | , | . | / | RShift | + `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + | LGUI | ` | INS | Left | Rght | | Up | Dn | [ | ] | RGUI | + `----------------------------------' `----------------------------------' + ,-------------. ,-------------. + | LCtr | LAlt | | Ralt | RCtr | + ,------|------|------| |------+------+------. + | | | Home | | PgUp | | | + | BkSp | Del |------| |------| Enter| Space| + | | | End | | PgDn | | | + `--------------------' `--------------------' + ### Keymap 2: Colemak layer -,--------------------------------------------------. ,--------------------------------------------------. -| = | 1 | 2 | 3 | 4 | 5 | ESC | | ESC | 6 | 7 | 8 | 9 | 0 | - | -|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| -| Tab | Q | W | F | P | G | | | | J | L | U | Y | ; | \ | -|--------+------+------+------+------+------| | | |------+------+------+------+------+--------| -| BkSpc | A | R | S | T | D |------| |------| H | N | E | I | O | ' | -|--------+------+------+------+------+------| _MD | | _KP |------+------+------+------+------+--------| -| LShift | Z | X | C | V | B | | | | K | M | , | . | / | RShift | -`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - | LGUI | ` | INS | Left | Rght | | Up | Dn | [ | ] | RGUI | - `----------------------------------' `----------------------------------' - ,-------------. ,-------------. - | LCtr | LAlt | | Ralt | RCtr | - ,------|------|------| |------+------+------. - | | | Home | | PgUp | | | - | BkSp | Del |------| |------| Enter| Space| - | | | End | | PgDn | | | - `--------------------' `--------------------' + ,--------------------------------------------------. ,--------------------------------------------------. + | = | 1 | 2 | 3 | 4 | 5 | ESC | | ESC | 6 | 7 | 8 | 9 | 0 | - | + |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + | Tab | Q | W | F | P | G | | | | J | L | U | Y | ; | \ | + |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + | BkSpc | A | R | S | T | D |------| |------| H | N | E | I | O | ' | + |--------+------+------+------+------+------| _MD | | _KP |------+------+------+------+------+--------| + | LShift | Z | X | C | V | B | | | | K | M | , | . | / | RShift | + `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + | LGUI | ` | INS | Left | Rght | | Up | Dn | [ | ] | RGUI | + `----------------------------------' `----------------------------------' + ,-------------. ,-------------. + | LCtr | LAlt | | Ralt | RCtr | + ,------|------|------| |------+------+------. + | | | Home | | PgUp | | | + | BkSp | Del |------| |------| Enter| Space| + | | | End | | PgDn | | | + `--------------------' `--------------------' ### layer 3 : Media layer -,--------------------------------------------------. ,--------------------------------------------------. -| TEENSY | F1 | F2 | F3 | F4 | F5 | F11 | | F12 | F6 | F7 | F8 | F9 | F10 | | -|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| -| | | PrSc | ScLk | Paus | | | | | | Mute | Vol- | Vol+ | | | -|--------+------+------+------+------+------| | | |------+------+------+------+------+--------| -| | | | | | |------| |------| Stop | Prev | Play | Next | Sel | | -|--------+------+------+------+------+------| | | |------+------+------+------+------+--------| -| | |Dvorak|Qwerty|Colemk| | | | | | | | | | | -`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - | | | | | | | | | | | | - `----------------------------------' `----------------------------------' - ,-------------. ,-------------. - | | | | | | - ,------|------|------| |------+------+------. - | | | | | | | | - | | |------| |------| | | - | | | | | | | | - `--------------------' `--------------------' + ,--------------------------------------------------. ,--------------------------------------------------. + | TEENSY | F1 | F2 | F3 | F4 | F5 | F11 | | F12 | F6 | F7 | F8 | F9 | F10 | | + |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + | | | PrSc | ScLk | Paus | | | | | | Mute | Vol- | Vol+ | | | + |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + | | | | | | |------| |------| Stop | Prev | Play | Next | Sel | | + |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + | | |Dvorak|Qwerty|Colemk| | | | | | | | | | | + `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + | | | | | | | | | | | | + `----------------------------------' `----------------------------------' + ,-------------. ,-------------. + | | | | | | + ,------|------|------| |------+------+------. + | | | | | | | | + | | |------| |------| | | + | | | | | | | | + `--------------------' `--------------------' ### Keymap 4: Keypad layer -,--------------------------------------------------. ,--------------------------------------------------. -| Power | | | | | | | | | | NmLk | KP / | KP| KP - | | -|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| -| Sleep | | | | | | | | | | KP 7 | KP 8 | KP 9 | KP + | | -|--------+------+------+------+------+------| | | |------+------+------+------+------+--------| -| Wake | | | | | |------| |------| | KP 4 | KP 5 | KP 6 | KP + | | -|--------+------+------+------+------+------| | | |------+------+------+------+------+--------| -| | | | | | | | | | | KP 1 | KP 2 | KP 3 |KP Ent| | -`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - | | | | | | | KP 0 | | KP . |KP Ent| | - `----------------------------------' `----------------------------------' - ,-------------. ,-------------. - | | | | | | - ,------|------|------| |------+------+------. - | | | | | | | | - | | |------| |------| | | - | | | | | | | | - `--------------------' `--------------------' + ,--------------------------------------------------. ,--------------------------------------------------. + | Power | | | | | | | | | | NmLk | KP / | KP| KP - | | + |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + | Sleep | | | | | | | | | | KP 7 | KP 8 | KP 9 | KP + | | + |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + | Wake | | | | | |------| |------| | KP 4 | KP 5 | KP 6 | KP + | | + |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + | | | | | | | | | | | KP 1 | KP 2 | KP 3 |KP Ent| | + `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + | | | | | | | KP 0 | | KP . |KP Ent| | + `----------------------------------' `----------------------------------' + ,-------------. ,-------------. + | | | | | | + ,------|------|------| |------+------+------. + | | | | | | | | + | | |------| |------| | | + | | | | | | | | + `--------------------' `--------------------' From 118ad691c46454df8d8aa810190cfa4e21f8952b Mon Sep 17 00:00:00 2001 From: Xyverz Date: Thu, 18 Aug 2016 00:34:22 -0700 Subject: [PATCH 17/34] more formatting changes --- keyboards/ergodox/keymaps/xyverz/readme.md | 180 ++++++++++----------- 1 file changed, 90 insertions(+), 90 deletions(-) diff --git a/keyboards/ergodox/keymaps/xyverz/readme.md b/keyboards/ergodox/keymaps/xyverz/readme.md index 8bcf5b3035..32e569b38c 100644 --- a/keyboards/ergodox/keymaps/xyverz/readme.md +++ b/keyboards/ergodox/keymaps/xyverz/readme.md @@ -18,107 +18,107 @@ For a better explanation of the layout matrices shown below, take a look at ../. ### Layer 0: Dvorak layer - ,--------------------------------------------------. ,--------------------------------------------------. - | ] | 1 | 2 | 3 | 4 | 5 | ESC | | ESC | 6 | 7 | 8 | 9 | 0 | [ | - |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - | Tab | ' | , | . | Y | Y | | | | F | G | C | R | L | \ | - |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - | CapsLk | A | O | E | U | I |------| |------| D | H | T | N | S | - | - |--------+------+------+------+------+------| _MD | | _KP |------+------+------+------+------+--------| - | LShift | Z | X | C | V | X | | | | B | M | W | V | Z | RShift | - `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - | LGUI | ` | INS | Left | Rght | | Up | Dn | / | = | RGUI | - `----------------------------------' `----------------------------------' - ,-------------. ,-------------. - | LCtr | LAlt | | Ralt | RCtr | - ,------|------|------| |------+------+------. - | | | Home | | PgUp | | | - | BkSp | Del |------| |------| Enter| Space| - | | | End | | PgDn | | | - `--------------------' `--------------------' + ,--------------------------------------------------.,--------------------------------------------------. + | ] | 1 | 2 | 3 | 4 | 5 | ESC || ESC | 6 | 7 | 8 | 9 | 0 | [ | + |--------+------+------+------+------+-------------||------+------+------+------+------+------+--------| + | Tab | ' | , | . | Y | Y | || | F | G | C | R | L | \ | + |--------+------+------+------+------+------| || |------+------+------+------+------+--------| + | CapsLk | A | O | E | U | I |------||------| D | H | T | N | S | - | + |--------+------+------+------+------+------| _MD || _KP |------+------+------+------+------+--------| + | LShift | Z | X | C | V | X | || | B | M | W | V | Z | RShift | + `--------+------+------+------+------+-------------'`-------------+------+------+------+------+--------' + | LGUI | ` | INS | Left | Rght | | Up | Dn | / | = | RGUI | + `----------------------------------' `----------------------------------' + ,-------------.,-------------. + | LCtr | LAlt || Ralt | RCtr | + ,------|------|------||------+------+------. + | | | Home || PgUp | | | + | BkSp | Del |------||------| Enter| Space| + | | | End || PgDn | | | + `--------------------'`--------------------' ### Layer 1: QWERTY layer - ,--------------------------------------------------. ,--------------------------------------------------. - | = | 1 | 2 | 3 | 4 | 5 | ESC | | ESC | 6 | 7 | 8 | 9 | 0 | - | - |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - | Tab | Q | W | E | R | T | | | | Y | U | I | O | P | \ | - |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - | CapsLk | A | S | D | F | G |------| |------| H | J | K | L | ; | ' | - |--------+------+------+------+------+------| _MD | | _KP |------+------+------+------+------+--------| - | LShift | Z | X | C | V | B | | | | N | M | , | . | / | RShift | - `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - | LGUI | ` | INS | Left | Rght | | Up | Dn | [ | ] | RGUI | - `----------------------------------' `----------------------------------' - ,-------------. ,-------------. - | LCtr | LAlt | | Ralt | RCtr | - ,------|------|------| |------+------+------. - | | | Home | | PgUp | | | - | BkSp | Del |------| |------| Enter| Space| - | | | End | | PgDn | | | - `--------------------' `--------------------' + ,--------------------------------------------------.,--------------------------------------------------. + | = | 1 | 2 | 3 | 4 | 5 | ESC || ESC | 6 | 7 | 8 | 9 | 0 | - | + |--------+------+------+------+------+-------------||------+------+------+------+------+------+--------| + | Tab | Q | W | E | R | T | || | Y | U | I | O | P | \ | + |--------+------+------+------+------+------| || |------+------+------+------+------+--------| + | CapsLk | A | S | D | F | G |------||------| H | J | K | L | ; | ' | + |--------+------+------+------+------+------| _MD || _KP |------+------+------+------+------+--------| + | LShift | Z | X | C | V | B | || | N | M | , | . | / | RShift | + `--------+------+------+------+------+-------------'`-------------+------+------+------+------+--------' + | LGUI | ` | INS | Left | Rght | | Up | Dn | [ | ] | RGUI | + `----------------------------------' `----------------------------------' + ,-------------.,-------------. + | LCtr | LAlt || Ralt | RCtr | + ,------|------|------||------+------+------. + | | | Home || PgUp | | | + | BkSp | Del |------||------| Enter| Space| + | | | End || PgDn | | | + `--------------------'`--------------------' ### Keymap 2: Colemak layer - ,--------------------------------------------------. ,--------------------------------------------------. - | = | 1 | 2 | 3 | 4 | 5 | ESC | | ESC | 6 | 7 | 8 | 9 | 0 | - | - |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - | Tab | Q | W | F | P | G | | | | J | L | U | Y | ; | \ | - |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - | BkSpc | A | R | S | T | D |------| |------| H | N | E | I | O | ' | - |--------+------+------+------+------+------| _MD | | _KP |------+------+------+------+------+--------| - | LShift | Z | X | C | V | B | | | | K | M | , | . | / | RShift | - `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - | LGUI | ` | INS | Left | Rght | | Up | Dn | [ | ] | RGUI | - `----------------------------------' `----------------------------------' - ,-------------. ,-------------. - | LCtr | LAlt | | Ralt | RCtr | - ,------|------|------| |------+------+------. - | | | Home | | PgUp | | | - | BkSp | Del |------| |------| Enter| Space| - | | | End | | PgDn | | | - `--------------------' `--------------------' + ,--------------------------------------------------.,--------------------------------------------------. + | = | 1 | 2 | 3 | 4 | 5 | ESC || ESC | 6 | 7 | 8 | 9 | 0 | - | + |--------+------+------+------+------+-------------||------+------+------+------+------+------+--------| + | Tab | Q | W | F | P | G | || | J | L | U | Y | ; | \ | + |--------+------+------+------+------+------| || |------+------+------+------+------+--------| + | BkSpc | A | R | S | T | D |------||------| H | N | E | I | O | ' | + |--------+------+------+------+------+------| _MD || _KP |------+------+------+------+------+--------| + | LShift | Z | X | C | V | B | || | K | M | , | . | / | RShift | + `--------+------+------+------+------+-------------'`-------------+------+------+------+------+--------' + | LGUI | ` | INS | Left | Rght | | Up | Dn | [ | ] | RGUI | + `----------------------------------' `----------------------------------' + ,-------------.,-------------. + | LCtr | LAlt || Ralt | RCtr | + ,------|------|------||------+------+------. + | | | Home || PgUp | | | + | BkSp | Del |------||------| Enter| Space| + | | | End || PgDn | | | + `--------------------'`--------------------' ### layer 3 : Media layer - ,--------------------------------------------------. ,--------------------------------------------------. - | TEENSY | F1 | F2 | F3 | F4 | F5 | F11 | | F12 | F6 | F7 | F8 | F9 | F10 | | - |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - | | | PrSc | ScLk | Paus | | | | | | Mute | Vol- | Vol+ | | | - |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - | | | | | | |------| |------| Stop | Prev | Play | Next | Sel | | - |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - | | |Dvorak|Qwerty|Colemk| | | | | | | | | | | - `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - | | | | | | | | | | | | - `----------------------------------' `----------------------------------' - ,-------------. ,-------------. - | | | | | | - ,------|------|------| |------+------+------. - | | | | | | | | - | | |------| |------| | | - | | | | | | | | - `--------------------' `--------------------' + ,--------------------------------------------------.,--------------------------------------------------. + | TEENSY | F1 | F2 | F3 | F4 | F5 | F11 || F12 | F6 | F7 | F8 | F9 | F10 | | + |--------+------+------+------+------+-------------||------+------+------+------+------+------+--------| + | | | PrSc | ScLk | Paus | | || | | Mute | Vol- | Vol+ | | | + |--------+------+------+------+------+------| || |------+------+------+------+------+--------| + | | | | | | |------||------| Stop | Prev | Play | Next | Sel | | + |--------+------+------+------+------+------| || |------+------+------+------+------+--------| + | | |Dvorak|Qwerty|Colemk| | || | | | | | | | + `--------+------+------+------+------+-------------'`-------------+------+------+------+------+--------' + | | | | | | | | | | | | + `----------------------------------' `----------------------------------' + ,-------------.,-------------. + | | || | | + ,------|------|------||------+------+------. + | | | || | | | + | | |------||------| | | + | | | || | | | + `--------------------'`--------------------' ### Keymap 4: Keypad layer - ,--------------------------------------------------. ,--------------------------------------------------. - | Power | | | | | | | | | | NmLk | KP / | KP| KP - | | - |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - | Sleep | | | | | | | | | | KP 7 | KP 8 | KP 9 | KP + | | - |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - | Wake | | | | | |------| |------| | KP 4 | KP 5 | KP 6 | KP + | | - |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - | | | | | | | | | | | KP 1 | KP 2 | KP 3 |KP Ent| | - `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - | | | | | | | KP 0 | | KP . |KP Ent| | - `----------------------------------' `----------------------------------' - ,-------------. ,-------------. - | | | | | | - ,------|------|------| |------+------+------. - | | | | | | | | - | | |------| |------| | | - | | | | | | | | - `--------------------' `--------------------' + ,--------------------------------------------------.,--------------------------------------------------. + | Power | | | | | | || | | NmLk | KP / | KP| KP - | | + |--------+------+------+------+------+-------------||------+------+------+------+------+------+--------| + | Sleep | | | | | | || | | KP 7 | KP 8 | KP 9 | KP + | | + |--------+------+------+------+------+------| || |------+------+------+------+------+--------| + | Wake | | | | | |------||------| | KP 4 | KP 5 | KP 6 | KP + | | + |--------+------+------+------+------+------| || |------+------+------+------+------+--------| + | | | | | | | || | | KP 1 | KP 2 | KP 3 |KP Ent| | + `--------+------+------+------+------+-------------'`-------------+------+------+------+------+--------' + | | | | | | | KP 0 | | KP . |KP Ent| | + `----------------------------------' `----------------------------------' + ,-------------.,-------------. + | | || | | + ,------|------|------||------+------+------. + | | | || | | | + | | |------||------| | | + | | | || | | | + `--------------------'`--------------------' \ No newline at end of file From eb81978ecbeaa203c20df70c0c4fc56cb816ab6c Mon Sep 17 00:00:00 2001 From: Xyverz Date: Thu, 18 Aug 2016 00:35:32 -0700 Subject: [PATCH 18/34] One last formatting change --- keyboards/ergodox/keymaps/xyverz/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/ergodox/keymaps/xyverz/readme.md b/keyboards/ergodox/keymaps/xyverz/readme.md index 32e569b38c..89ac8cb044 100644 --- a/keyboards/ergodox/keymaps/xyverz/readme.md +++ b/keyboards/ergodox/keymaps/xyverz/readme.md @@ -105,7 +105,7 @@ For a better explanation of the layout matrices shown below, take a look at ../. ### Keymap 4: Keypad layer ,--------------------------------------------------.,--------------------------------------------------. - | Power | | | | | | || | | NmLk | KP / | KP| KP - | | + | Power | | | | | | || | | NmLk | KP / | KP * | KP - | | |--------+------+------+------+------+-------------||------+------+------+------+------+------+--------| | Sleep | | | | | | || | | KP 7 | KP 8 | KP 9 | KP + | | |--------+------+------+------+------+------| || |------+------+------+------+------+--------| From aa37a57e0f55694291290f9db61d8ff352d42454 Mon Sep 17 00:00:00 2001 From: Xyverz Date: Thu, 18 Aug 2016 00:38:25 -0700 Subject: [PATCH 19/34] One last change to the readme. --- keyboards/ergodox/keymaps/xyverz/readme.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/keyboards/ergodox/keymaps/xyverz/readme.md b/keyboards/ergodox/keymaps/xyverz/readme.md index 89ac8cb044..2557493239 100644 --- a/keyboards/ergodox/keymaps/xyverz/readme.md +++ b/keyboards/ergodox/keymaps/xyverz/readme.md @@ -2,9 +2,7 @@ ## Please Note: -It will need **substantial** modification in order to work on the Infinity. - -PLEASE NOTE: This keymap will NOT work with the Infinity ErgoDox due to the fact that the mappings are based on the Matrix Layout in the ez.h file. If you want to use this for the infinity, you'll need to figure out where the keys are in the matrix and redo the layout arrays below. +This keymap will probably **not** work with the Infinity ErgoDox. It will need **substantial** modification in order to work on the Infinity. This is due to the fact that the mappings are based on the matrix positions in the keymap definition in the ez.h file. If you want to use this for the infinity, you'll need to figure out where the keys are in the matrix and redo the layout arrays below. ## About this keymap: From 07924511f33599267209b1f0d1ebddf400f7987d Mon Sep 17 00:00:00 2001 From: Felix Uhl Date: Thu, 18 Aug 2016 10:01:46 +0200 Subject: [PATCH 20/34] Small changes, renamed keymap Added MicMute Revived all dead keys Removed OS Shift --- .../keymaps/{felix => ansi_qwertz}/Makefile | 0 .../keymaps/{felix => ansi_qwertz}/config.h | 0 keyboards/s60-x/keymaps/ansi_qwertz/keymap.c | 236 ++++++++++++++++++ keyboards/s60-x/keymaps/felix/keymap.c | 213 ---------------- 4 files changed, 236 insertions(+), 213 deletions(-) rename keyboards/s60-x/keymaps/{felix => ansi_qwertz}/Makefile (100%) rename keyboards/s60-x/keymaps/{felix => ansi_qwertz}/config.h (100%) create mode 100644 keyboards/s60-x/keymaps/ansi_qwertz/keymap.c delete mode 100644 keyboards/s60-x/keymaps/felix/keymap.c diff --git a/keyboards/s60-x/keymaps/felix/Makefile b/keyboards/s60-x/keymaps/ansi_qwertz/Makefile similarity index 100% rename from keyboards/s60-x/keymaps/felix/Makefile rename to keyboards/s60-x/keymaps/ansi_qwertz/Makefile diff --git a/keyboards/s60-x/keymaps/felix/config.h b/keyboards/s60-x/keymaps/ansi_qwertz/config.h similarity index 100% rename from keyboards/s60-x/keymaps/felix/config.h rename to keyboards/s60-x/keymaps/ansi_qwertz/config.h diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/keymap.c b/keyboards/s60-x/keymaps/ansi_qwertz/keymap.c new file mode 100644 index 0000000000..9f59f12fa8 --- /dev/null +++ b/keyboards/s60-x/keymaps/ansi_qwertz/keymap.c @@ -0,0 +1,236 @@ +/* +Copyright 2016 Julien Pecqueur +Copyright 2016 Felix Uhl + +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 . +*/ + +#include "s60-x.h" + +//make keymap a little easier to read +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +#define ONESHOT_TAP_TOGGLE 2 +#define ONESHOT_TIMEOUT 1 + +//uncomment to activate dead keys +//#define DONT_REVIVE_DEADKEYS 1 + +//Function keycodes for better readability +//SpaceFN +//OneShot LeftShift +//GamingMode Lock (disables SpaceFn and OneShot LShift) +//Function +//Mute microphone +#define KC_SPACEFN KC_FN0 +#define KC_OSLS KC_FN3 +#define KC_GMLK KC_FN1 +#define KC_FUNC KC_FN2 +#define MICMUTE RCTL(KC_LCTL) + +enum function_codes { + F_SPACEFN = 0, + F_OSLS = 3, + F_GMLK = 1, + F_FUNC = 2 +}; + +enum layer_names { + DEFAULT, + GAMING, + FUNCTION +}; + +enum languages { + GERMAN +}; + +#define LANGUAGE GERMAN + +enum custom_keycodes { + KC_CM_A = SAFE_RANGE, +// KC_CM_B, + KC_CM_C, +// KC_CM_D, + KC_CM_E, +// KC_CM_F, + KC_CM_G, +// KC_CM_H, + KC_CM_I, +// KC_CM_J, + KC_CM_K, + KC_CM_L, + KC_CM_M, + KC_CM_N, + KC_CM_O, + KC_CM_P, +// KC_CM_Q, + KC_CM_R, + KC_CM_S, +// KC_CM_T, + KC_CM_U, +// KC_CM_V, + KC_CM_W, +// KC_CM_X, +// KC_CM_Y, + KC_CM_Z +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Layout 0: Default Layer + * ,-----------------------------------------------------------. + * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \|Del| + * |-----------------------------------------------------------| + * |Tab | Q| W| E| R| T| Z| U| I| O| P| [| ]|BckSp| + * |-----------------------------------------------------------| + * |Ctrl | A| S| D| F| G| H| J| K| L| ;| '|Return | + * |-----------------------------------------------------------| + * |Shift | Y| X| C| V| B| N| M| ,| .| /| Up |RSft| + * |-----------------------------------------------------------| + * |Fn2 |Gui |Alt | SpaceFn |Alt |Left|Down|Right| + * `-----------------------------------------------------------' + */ + [DEFAULT] = KEYMAP( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Z, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \ + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, \ + KC_LSFT, KC_NUBS, KC_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_UP, KC_RSFT, \ + KC_FUNC, KC_LGUI, KC_LALT, KC_SPACEFN, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* Layout 1: Gaming Layer, SpaceFn disabled + * ,-----------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |-----------------------------------------------------------| + * | | | | | | | | | | | | | | | + * |-----------------------------------------------------------| + * | | | | | | | | | | | | | | + * |-----------------------------------------------------------| + * | | | | | | | | | | | | |Fn1 | + * |-----------------------------------------------------------| + * | |RSft| | Space | | | | | + * `-----------------------------------------------------------' + */ + [GAMING] = KEYMAP( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_GMLK, \ + _______, KC_RSFT, _______, KC_SPC, _______, _______, _______, _______ + ), + + /* Layout 2: Function Layer + * MicMute requires special software to be installed. Check readme.md for more information + * ,-----------------------------------------------------------. + * |` | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|RES| + * |-----------------------------------------------------------| + * | | | | |Prv|Ply|Nxt| ά | | Φ | |Prt|Slk|Pau | + * |-----------------------------------------------------------| + * | | Δ | ί | |Vl-|Mut|Vl+| | | | | |PEnt | + * |-----------------------------------------------------------| + * | | | | |MicMut|Cal| | | | |Pau |PUp |Fn1 | + * |-----------------------------------------------------------| + * | | | | | |Home|PDn |End | + * `-----------------------------------------------------------' + */ + [FUNCTION] = KEYMAP( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, RESET, \ + _______, _______, KC_CM_W, KC_CM_E, KC_MPRV, KC_MPLY, KC_MNXT, KC_CM_U, KC_CM_I, KC_CM_O, KC_CM_P KC_PSCR, KC_SLCK, KC_PAUS, \ + _______, KC_CM_A, KC_CM_S, _______, KC_VOLD, KC_MUTE, KC_VOLU, _______, KC_CM_K, KC_CM_L, _______, _______, _______, KC_PENT, \ + _______, _______, KC_CM_Y, _______, KC_CM_C, MICMUTE, KC_CALC, KC_CM_N, KC_CM_M, _______, _______, _______, _______, KC_PGUP, KC_GMLK, \ + _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END + ), +}; + +/* +* Fn action definition +*/ +const uint16_t PROGMEM fn_actions[] = { + [F_SPACEFN] = ACTION_LAYER_TAP_KEY(2, KC_SPACE), // SpaceFn layout 1 + [F_GMLK] = ACTION_LAYER_TOGGLE(1), // Disable SpaceFn and Oneshot Shift + [F_FUNC] = ACTION_LAYER_MOMENTARY(2), // SpaceFn layout 1 + [F_OSLS] = ACTION_MODS_ONESHOT(MOD_LSFT) // Oneshot Leftshift +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + return MACRO_NONE; +}; + +void matrix_init_user(void) { + +} + +void matrix_scan_user(void) { + +} + +bool process_german(uint16_t keycode, keyrecord_t *record) { + uint16_t send_code = 0; + if (record->event.pressed) { + switch (keycode) { + case KC_C_AM: + send_code = KC_Q; + break; + case KC_C_OM: + send_code = KC_P; + break; + case KC_C_UM: + send_code = KC_Y; + break; + case KC_C_SM: + send_code = KC_S; + break; + } + + if (send_code == 0) { + return true; + } + else { + register_code(KC_RALT); + register_code(send_code); + unregister_code(send_code); + unregister_code(KC_RALT); + return false; + } + } +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + //revive dead keys +#ifndef DONT_REVIVE_DEADKEYS + bool shift_active = keyboard_report->mods & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_LSFT)); + bool altgr_active = keyboard_report->mods & (MOD_BIT(KC_RALT)); + if ((keycode == KC_QUOT && !altgr_active) || + keycode == KC_GRV || + (keycode == KC_6 && shift_active)) + { + if (record->event.pressed) { + register_code(keycode); + unregister_code(keycode); + register_code(KC_SPACE); + unregister_code(KC_SPACE); + } + return false; + } +#endif +#if LANGUAGE == GERMAN + return process_german(keycode, record); +#else + return true; +#endif +} + +void led_set_user(uint8_t usb_led) { + +} \ No newline at end of file diff --git a/keyboards/s60-x/keymaps/felix/keymap.c b/keyboards/s60-x/keymaps/felix/keymap.c deleted file mode 100644 index 6e40d4839f..0000000000 --- a/keyboards/s60-x/keymaps/felix/keymap.c +++ /dev/null @@ -1,213 +0,0 @@ -/* -Copyright 2016 Julien Pecqueur -Copyright 2016 Felix Uhl - -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 . -*/ - -#include "s60-x.h" - -//make keymap a little easier to read -#define _______ KC_TRNS -#define XXXXXXX KC_NO - -#define ONESHOT_TAP_TOGGLE 2 -#define ONESHOT_TIMEOUT 1 - -//Special keycodes for better readability -//SpaceFN -//OneShot LeftShift -//GamingMode Lock (disables SpaceFn and OneShot LShift) -//Function -#define KC_SPACEFN KC_FN0 -#define KC_OSLS KC_FN3 -#define KC_GMLK KC_FN1 -#define KC_FUNC KC_FN2 - -enum function_codes { - F_SPACEFN = 0, - F_OSLS = 3, - F_GMLK = 1, - F_FUNC = 2 -}; - -enum layer_names { - DEFAULT, - GAMING, - FUNCTION -}; - -enum languages { - GERMAN -}; - -#define LANGUAGE GERMAN - -enum custom_keycodes { - KC_C_AM = SAFE_RANGE, - KC_C_EM, - KC_C_IM, - KC_C_OM, - KC_C_UM, - KC_C_SM, - KC_C_YM, - KC_C_WM -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Layout 0: Default Layer - * ,-----------------------------------------------------------. - * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \|Del| - * |-----------------------------------------------------------| - * |Tab | Q| W| E| R| T| Z| U| I| O| P| [| ]|BckSp| - * |-----------------------------------------------------------| - * |Ctrl | A| S| D| F| G| H| J| K| L| ;| '|Return | - * |-----------------------------------------------------------| - * |Shift OS| Y| X| C| V| B| N| M| ,| .| /| Up |RSft| - * |-----------------------------------------------------------| - * |Fn2 |Gui |Alt | SpaceFn |Alt |Left|Down|Right| - * `-----------------------------------------------------------' - */ - [DEFAULT] = KEYMAP( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL, \ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Z, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \ - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, \ - KC_OSLS, KC_NUBS, KC_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_UP, KC_RSFT, \ - KC_FUNC, KC_LGUI, KC_LALT, KC_SPACEFN, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT - ), - - /* Layout 1: Gaming Layer, SpaceFn disabled - * ,-----------------------------------------------------------. - * | | | | | | | | | | | | | | | | - * |-----------------------------------------------------------| - * | | | | | | | | | | | | | | | - * |-----------------------------------------------------------| - * | | | | | | | | | | | | | | - * |-----------------------------------------------------------| - * |SFTnonOS| | | | | | | | | | | |Fn1 | - * |-----------------------------------------------------------| - * | | NOP| | Space | | | | | - * `-----------------------------------------------------------' - */ - [GAMING] = KEYMAP( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_GMLK, \ - _______, XXXXXXX, _______, KC_SPC, _______, _______, _______, _______ - ), - - /* Layout 2: Function Layer - * ,-----------------------------------------------------------. - * |` | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|RES| - * |-----------------------------------------------------------| - * | | | | |Prv|Ply|Nxt| ά | | Φ | |Prt|Slk|Pau | - * |-----------------------------------------------------------| - * | | Δ | ί | |Vl-|Mut|Vl+| | | | | |PEnt | - * |-----------------------------------------------------------| - * | CpsLck | | | | |Cal| | | | |Pau |PUp |Fn1 | - * |-----------------------------------------------------------| - * | | | | | |Home|PDn |End | - * `-----------------------------------------------------------' - */ - [FUNCTION] = KEYMAP( - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, RESET, \ - _______, _______, KC_C_WM, KC_C_EM, KC_MPRV, KC_MPLY, KC_MNXT, KC_C_UM, KC_C_IM, KC_C_OM, _______, KC_PSCR, KC_SLCK, KC_PAUS, \ - _______, KC_C_AM, KC_C_SM, _______, KC_VOLD, KC_MUTE, KC_VOLU, _______, _______, _______, _______, _______, _______, KC_PENT, \ - KC_CAPS, KC_C_YM, _______, _______, _______, _______, KC_CALC, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_GMLK, \ - _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END - ), -}; - -/* -* Fn action definition -*/ -const uint16_t PROGMEM fn_actions[] = { - [F_SPACEFN] = ACTION_LAYER_TAP_KEY(2, KC_SPACE), // SpaceFn layout 1 - [F_GMLK] = ACTION_LAYER_TOGGLE(1), // Disable SpaceFn and Oneshot Shift - [F_FUNC] = ACTION_LAYER_MOMENTARY(2), // SpaceFn layout 1 - [F_OSLS] = ACTION_MODS_ONESHOT(MOD_LSFT) // Oneshot Leftshift -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - return MACRO_NONE; -}; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_german(uint16_t keycode, keyrecord_t *record) { - uint16_t send_code = 0; - switch (keycode) { - case KC_C_AM: - if (record->event.pressed) { - send_code = KC_Q; - } - break; - - case KC_C_OM: - if (record->event.pressed) { - send_code = KC_P; - } - break; - - case KC_C_UM: - if (record->event.pressed) { - send_code = KC_Y; - } - break; - - case KC_C_SM: - if (record->event.pressed) { - send_code = KC_S; - } - break; - } - - if (send_code == 0) { - return true; - } - else { - register_code(KC_RALT); - register_code(send_code); - unregister_code(send_code); - unregister_code(KC_RALT); - return false; - } -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (keycode == KC_QUOT) { - if (record->event.pressed) { - register_code(KC_QUOT); - unregister_code(KC_QUOT); - register_code(KC_SPACE); - unregister_code(KC_SPACE); - } - return false; - } -#if LANGUAGE == GERMAN - return process_german(keycode, record); -#else - return true; -#endif -} - -void led_set_user(uint8_t usb_led) { - -} \ No newline at end of file From 2618260b34acade9e3239e6116a94bcfc726c00a Mon Sep 17 00:00:00 2001 From: Felix Uhl Date: Thu, 18 Aug 2016 10:37:32 +0200 Subject: [PATCH 21/34] Documentation overhaul. --- .../docs/KB_US-International-Alternative.png | Bin 0 -> 54748 bytes .../docs/KB_US-International-Alternative.svg | 1046 ++++++++++++++++ ...-Alternative.svg.2016_08_18_09_06_36.0.svg | 1049 +++++++++++++++++ .../ansi_qwertz/docs/KB_US-International.png | Bin 0 -> 54041 bytes .../ansi_qwertz/docs/KB_US-International.svg | 935 +++++++++++++++ .../keymaps/ansi_qwertz/docs/base_layer.PNG | Bin 0 -> 29411 bytes .../ansi_qwertz/docs/function_layer.PNG | Bin 0 -> 25567 bytes .../keymaps/ansi_qwertz/docs/gaming_layer.PNG | Bin 0 -> 17895 bytes keyboards/s60-x/keymaps/ansi_qwertz/readme.md | 108 ++ keyboards/s60-x/keymaps/felix/readme.md | 9 - 10 files changed, 3138 insertions(+), 9 deletions(-) create mode 100644 keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.png create mode 100644 keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.svg create mode 100644 keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.svg.2016_08_18_09_06_36.0.svg create mode 100644 keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International.png create mode 100644 keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International.svg create mode 100644 keyboards/s60-x/keymaps/ansi_qwertz/docs/base_layer.PNG create mode 100644 keyboards/s60-x/keymaps/ansi_qwertz/docs/function_layer.PNG create mode 100644 keyboards/s60-x/keymaps/ansi_qwertz/docs/gaming_layer.PNG create mode 100644 keyboards/s60-x/keymaps/ansi_qwertz/readme.md delete mode 100644 keyboards/s60-x/keymaps/felix/readme.md diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.png b/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.png new file mode 100644 index 0000000000000000000000000000000000000000..168780c824cdbb7b5b9e9dbc248f2db140c6fc0e GIT binary patch literal 54748 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

3rXc0DgqI@`Y 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Shift + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ˝ + Β― + Λ› + ˘ + o + . + Λ‡ + Λ™ + + + diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.svg.2016_08_18_09_06_36.0.svg b/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.svg.2016_08_18_09_06_36.0.svg new file mode 100644 index 0000000000..2304b2a4c3 --- /dev/null +++ b/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.svg.2016_08_18_09_06_36.0.svg @@ -0,0 +1,1049 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Shift + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ˝ + Β― + Λ› + ˘ + o + . + Λ‡ + Λ™ + + + diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International.png b/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International.png new file mode 100644 index 0000000000000000000000000000000000000000..875eb3652f6a60d56e4d345b4de60a88bb3d772a GIT binary patch literal 54041 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 B?#loG literal 0 HcmV?d00001 diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International.svg b/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International.svg new file mode 100644 index 0000000000..1ca6a9c872 --- /dev/null +++ b/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International.svg @@ -0,0 +1,935 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Shift + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/docs/base_layer.PNG b/keyboards/s60-x/keymaps/ansi_qwertz/docs/base_layer.PNG new file mode 100644 index 0000000000000000000000000000000000000000..c730c2d65a8d2cf9129e2b6fe7726a094740971b GIT binary patch literal 29411 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 literal 0 HcmV?d00001 diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/docs/function_layer.PNG b/keyboards/s60-x/keymaps/ansi_qwertz/docs/function_layer.PNG new file mode 100644 index 0000000000000000000000000000000000000000..fae2439cab4d442c8b8d47d8ea53397e6e5c9c49 GIT binary patch literal 25567 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 literal 0 HcmV?d00001 diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/docs/gaming_layer.PNG b/keyboards/s60-x/keymaps/ansi_qwertz/docs/gaming_layer.PNG new file mode 100644 index 0000000000000000000000000000000000000000..59b202be2bd3e59a5b336550f5759edf48e3a6e6 GIT binary patch literal 17895 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 R%USd`Z}f1@`qKA@{{egUA1(j@ literal 0 HcmV?d00001 diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/readme.md b/keyboards/s60-x/keymaps/ansi_qwertz/readme.md new file mode 100644 index 0000000000..050040e23c --- /dev/null +++ b/keyboards/s60-x/keymaps/ansi_qwertz/readme.md @@ -0,0 +1,108 @@ +# ANSI_QWERTZ + +This keymap was specifically designed to support keycaps with ANSI layout and legends, while retaining the possibility of inputting characters +with diacritics that are normally not used in the english language. + +It currently relies on the US-International keyboard layout, which can be installed in any current operating system without the use of third party hardware. + +##Features + +* Input of letters with diacritics on familiar QWERTZ layout +* Support for ANSI-legend keycaps +* Option to "revive" all dead keys +* SpaceFN for easy access to Function keys and diacritic input +* Locking "Gaming Mode" that disables SpaceFN and allows to bind GUI key in Games +* Reset key binding, no need to press hardware reset button to program +* Microphone Mute key (requires 3rd-party software, see below) + +###Languages + +The US-International Layout is currently required for the support of non-english languages. This keymap swaps Y and Z to provide the familiar QWERTZ position for characters. +All diacritic characters are input by either holding the Spacebar or the Fn key and pressing the corresponding key. For languages that aren't yet supported explicitly, +one can also use AltGr to input the characters as intended by the US-Intl layout or the dead keys, if they're kept from being [revived](#Revive-Dead-Keys). + +The illustration below shows the "US International" layout available in the Language settings of Windows, Linux and Mac OS. + +![KB_US-International](docs/KB_US-International.png) + +Not all languages are supported by this layout. Linux also offers the "US International Alternative" layout, +which contains more dead keys to input pretty much every diacritic character in a language using latin letters. + +![KB_US-International-Alternative](docs/KB_US-International-Alternative.png) + +####Explicitly Supported Languages + +* German + +####Implicitly Supported Languages + +This list only applys to Windows. Linux systems support all languages, see above. + +This list might be incomplete! Please add your language if you find it's supported. + +* French + +###SpaceFN + +SpaceFN basically means that Space acts as a normal spacebar when tapped, but acts as a layer-key when held down. +This means that you can't hold space to output multiple spaces consecutively and that space only registers once released. +The advantage is that the spacebar is easier to reach than any other Fn-key could be. + +###"Gaming Mode" + +To alleviate the problems SpaceFN would cause when gaming, the Gaming Mode is pretty much a layer that can be turned on by pressing Fn+RShift. +This will turn the double-role Spacebar into a normal one, so the Fn-layer (and thus function and media keys) can only be accessed with the Fn-key. +It also turns the GUI-key (aka Win-key aka Super-key) into Right Shift, so it can be bound in Games. This is especially useful when playing with ESDF instead of WASD. + +###Mute Microphone + +The function layer has a "Mute Microphone"-key. As this is not an existing media key and you can't normally set a shortcut to this function, +you need to set this up in software before using it, see below. This key is bound to `Right Control` + `Left Control`, a keycombination that +no other program in existence uses for anything, at least to my knowledge. It also can't be pressed with this keymap in any other way. + +####Linux + +Follow [these instructions](http://askubuntu.com/a/13364). + +#####Windows (Requires 3rd Party Software) + +*DISCLAIMER: I take no responsibility for any potential harm caused by third party applications!* + +You'll need a utility called "MicMute". It is available on [Sourceforge](https://sourceforge.net/projects/micmute/). +After installing and running the tool, you only need to use the "Setup Shortcut" option to bind the key to muting the microphone +and check whether your microphone is selected under "Devices". + +###Revive Dead Keys + +Some diacritics that are commonly used are dead keys on the international layouts, for example `` ` ``, `'`, or `"`. +The dead keys on the regular international layout (shown in red [here](#Languages)) are revived with this keymap by automatically inserting a space if one of those characters is typed. +If you don't want this to be the case, uncomment the following line in `keymap.c` prior to compiling: + +``` +//#define DONT_REVIVE_DEADKEYS 1 +``` + +##Layers + +###Base Layer + +The base layer is shown here for ANSI keys and an HHKB-style right shift. +Again, the Y and Z keys are swapped, so you get the QWERTZ-positions of Y and Z when using the US-International layout. + +![base_layer](docs/base_layer.png) + +###Gaming layer + +To turn this layer on, please use the combination Fn+RShift, not Space+Rshift. If you do the latter, the Function layer + +![gaming_layer](docs/gaming_layer.png) + +###Function Layer + +This is the function layer for German diacritics. It can be accessed via the Fn-key or by holding space on the base layer. + +![function_layer](docs/function_layer.png) + + + + diff --git a/keyboards/s60-x/keymaps/felix/readme.md b/keyboards/s60-x/keymaps/felix/readme.md deleted file mode 100644 index 7f083dfd08..0000000000 --- a/keyboards/s60-x/keymaps/felix/readme.md +++ /dev/null @@ -1,9 +0,0 @@ -# A non-US ANSI QWERTZ keymap - -This keymap was specifically designed to support ANSI keycaps while retaining the possibility of inputting characters with diacritics that are normally not used in the english language. - -It relies on the US-International keyboard layout, which can be installed in any current operating system without the use of third party hardware. - -Currently, it explicitly supports the following languages, though other languages are readily useable using the AltGr modifier. -- German - From a8659955958a0a7eb94c904469767b6cf5241ccc Mon Sep 17 00:00:00 2001 From: Felix Uhl Date: Thu, 18 Aug 2016 11:11:42 +0200 Subject: [PATCH 22/34] Fixed pictures and links --- keyboards/s60-x/keymaps/ansi_qwertz/readme.md | 28 +++++++++---------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/readme.md b/keyboards/s60-x/keymaps/ansi_qwertz/readme.md index 050040e23c..f46c28795b 100644 --- a/keyboards/s60-x/keymaps/ansi_qwertz/readme.md +++ b/keyboards/s60-x/keymaps/ansi_qwertz/readme.md @@ -17,9 +17,9 @@ It currently relies on the US-International keyboard layout, which can be instal ###Languages -The US-International Layout is currently required for the support of non-english languages. This keymap swaps Y and Z to provide the familiar QWERTZ position for characters. -All diacritic characters are input by either holding the Spacebar or the Fn key and pressing the corresponding key. For languages that aren't yet supported explicitly, -one can also use AltGr to input the characters as intended by the US-Intl layout or the dead keys, if they're kept from being [revived](#Revive-Dead-Keys). +The US-International Layout is currently required for the support of non-english languages. This keymap swaps Y and Z to provide the familiar QWERTZ position for characters when using that layout. +All diacritic characters are input by either holding `Space` or `Fn` and pressing the corresponding key. For languages that aren't yet supported explicitly, +one can also use AltGr to input the characters as intended by the US-Intl layout or the dead keys, if they're kept from being [revived](readme.md#Revive-Dead-Keys). The illustration below shows the "US International" layout available in the Language settings of Windows, Linux and Mac OS. @@ -36,17 +36,15 @@ which contains more dead keys to input pretty much every diacritic character in ####Implicitly Supported Languages -This list only applys to Windows. Linux systems support all languages, see above. - -This list might be incomplete! Please add your language if you find it's supported. +This list only applies to Windows. Linux systems support all languages, see above. This list might be incomplete! Please add your language if you find it's supported. * French ###SpaceFN -SpaceFN basically means that Space acts as a normal spacebar when tapped, but acts as a layer-key when held down. +SpaceFN basically means that `Space` acts as a normal spacebar when tapped, but acts as a layer-key when held down. This means that you can't hold space to output multiple spaces consecutively and that space only registers once released. -The advantage is that the spacebar is easier to reach than any other Fn-key could be. +The advantage is that the spacebar is easier to reach than any other `Fn`-key could be. ###"Gaming Mode" @@ -75,7 +73,7 @@ and check whether your microphone is selected under "Devices". ###Revive Dead Keys Some diacritics that are commonly used are dead keys on the international layouts, for example `` ` ``, `'`, or `"`. -The dead keys on the regular international layout (shown in red [here](#Languages)) are revived with this keymap by automatically inserting a space if one of those characters is typed. +The dead keys on the regular international layout (shown in red [here](readme.md#Languages)) are revived with this keymap by automatically inserting a space if one of those characters is typed. If you don't want this to be the case, uncomment the following line in `keymap.c` prior to compiling: ``` @@ -86,22 +84,22 @@ If you don't want this to be the case, uncomment the following line in `keymap.c ###Base Layer -The base layer is shown here for ANSI keys and an HHKB-style right shift. +The base layer is shown here for ANSI keysm, HHKB-style right shift and split backspace. If you use a 2U backspace key there, `Del` will not be available. Again, the Y and Z keys are swapped, so you get the QWERTZ-positions of Y and Z when using the US-International layout. -![base_layer](docs/base_layer.png) +![base_layer](docs/base_layer.PNG) ###Gaming layer -To turn this layer on, please use the combination Fn+RShift, not Space+Rshift. If you do the latter, the Function layer +To turn this layer on, please use the combination `Fn+RShift`, not `Space+RShift`. If you do the latter, the Function layer will become stuck. You can press `Fn` once to unstick it if this happens to you. A solution is being worked on. -![gaming_layer](docs/gaming_layer.png) +![gaming_layer](docs/gaming_layer.PNG) ###Function Layer -This is the function layer for German diacritics. It can be accessed via the Fn-key or by holding space on the base layer. +This is the function layer for German diacritics. It can be accessed via the `Fn` or by holding `Space` on the base layer. -![function_layer](docs/function_layer.png) +![function_layer](docs/function_layer.PNG) From c5f13e5836563dc546edea1f14ea74dc3b94fa3f Mon Sep 17 00:00:00 2001 From: Felix Uhl Date: Thu, 18 Aug 2016 11:16:10 +0200 Subject: [PATCH 23/34] Fixed links again --- keyboards/s60-x/keymaps/ansi_qwertz/readme.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/readme.md b/keyboards/s60-x/keymaps/ansi_qwertz/readme.md index f46c28795b..0938e49c81 100644 --- a/keyboards/s60-x/keymaps/ansi_qwertz/readme.md +++ b/keyboards/s60-x/keymaps/ansi_qwertz/readme.md @@ -1,5 +1,7 @@ # ANSI_QWERTZ +[Click here to go to the layers directly.](readme.md#layers) + This keymap was specifically designed to support keycaps with ANSI layout and legends, while retaining the possibility of inputting characters with diacritics that are normally not used in the english language. @@ -19,7 +21,7 @@ It currently relies on the US-International keyboard layout, which can be instal The US-International Layout is currently required for the support of non-english languages. This keymap swaps Y and Z to provide the familiar QWERTZ position for characters when using that layout. All diacritic characters are input by either holding `Space` or `Fn` and pressing the corresponding key. For languages that aren't yet supported explicitly, -one can also use AltGr to input the characters as intended by the US-Intl layout or the dead keys, if they're kept from being [revived](readme.md#Revive-Dead-Keys). +one can also use AltGr to input the characters as intended by the US-Intl layout or the dead keys, if they're kept from being [revived](readme.md#revive-dead-keys). The illustration below shows the "US International" layout available in the Language settings of Windows, Linux and Mac OS. @@ -55,7 +57,7 @@ It also turns the GUI-key (aka Win-key aka Super-key) into Right Shift, so it ca ###Mute Microphone The function layer has a "Mute Microphone"-key. As this is not an existing media key and you can't normally set a shortcut to this function, -you need to set this up in software before using it, see below. This key is bound to `Right Control` + `Left Control`, a keycombination that +you need to set this up in software before using it, see below. This key is bound to `RCtrl+LCtrl`, a keycombination that no other program in existence uses for anything, at least to my knowledge. It also can't be pressed with this keymap in any other way. ####Linux @@ -73,7 +75,7 @@ and check whether your microphone is selected under "Devices". ###Revive Dead Keys Some diacritics that are commonly used are dead keys on the international layouts, for example `` ` ``, `'`, or `"`. -The dead keys on the regular international layout (shown in red [here](readme.md#Languages)) are revived with this keymap by automatically inserting a space if one of those characters is typed. +The dead keys on the regular international layout (shown in red [here](readme.md#languages)) are revived with this keymap by automatically inserting a space if one of those characters is typed. If you don't want this to be the case, uncomment the following line in `keymap.c` prior to compiling: ``` From 0d28787c5cf2173d12f57b397515f91cffaa820a Mon Sep 17 00:00:00 2001 From: Gergely Nagy Date: Thu, 18 Aug 2016 11:29:53 +0200 Subject: [PATCH 24/34] Add a register/unregister_code16 pair of functions These functions register not only the 8bit keycode, but the modifiers too. It doesn't handle the full range of the upper 8bits, just the mods, but that's a good start. Changed the tap-dance pair functions to use these, so one can do: `ACTION_TAP_DANCE_DOUBLE (KC_COLN, KC_SCLN)` ...and that will do the right thing. Signed-off-by: Gergely Nagy --- quantum/process_keycode/process_tap_dance.c | 8 ++--- quantum/quantum.c | 37 +++++++++++++++++++++ quantum/quantum.h | 3 ++ 3 files changed, 44 insertions(+), 4 deletions(-) diff --git a/quantum/process_keycode/process_tap_dance.c b/quantum/process_keycode/process_tap_dance.c index e152f23508..07de3ecb8f 100644 --- a/quantum/process_keycode/process_tap_dance.c +++ b/quantum/process_keycode/process_tap_dance.c @@ -8,9 +8,9 @@ void qk_tap_dance_pair_finished (qk_tap_dance_state_t *state, void *user_data) { qk_tap_dance_pair_t *pair = (qk_tap_dance_pair_t *)user_data; if (state->count == 1) { - register_code (pair->kc1); + register_code16 (pair->kc1); } else if (state->count == 2) { - register_code (pair->kc2); + register_code16 (pair->kc2); } } @@ -18,9 +18,9 @@ void qk_tap_dance_pair_reset (qk_tap_dance_state_t *state, void *user_data) { qk_tap_dance_pair_t *pair = (qk_tap_dance_pair_t *)user_data; if (state->count == 1) { - unregister_code (pair->kc1); + unregister_code16 (pair->kc1); } else if (state->count == 2) { - unregister_code (pair->kc2); + unregister_code16 (pair->kc2); } } diff --git a/quantum/quantum.c b/quantum/quantum.c index cb1ba04ffb..e3a20f43e0 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -1,5 +1,42 @@ #include "quantum.h" +static void do_code16 (uint16_t code, void (*f) (uint8_t)) { + switch (code) { + case QK_MODS ... QK_MODS_MAX: + break; + default: + return; + } + + if (code & QK_LCTL) + f(KC_LCTL); + if (code & QK_LSFT) + f(KC_LSFT); + if (code & QK_LALT) + f(KC_LALT); + if (code & QK_LGUI) + f(KC_LGUI); + + if (code & QK_RCTL) + f(KC_RCTL); + if (code & QK_RSFT) + f(KC_RSFT); + if (code & QK_RALT) + f(KC_RALT); + if (code & QK_RGUI) + f(KC_RGUI); +} + +void register_code16 (uint16_t code) { + do_code16 (code, register_code); + register_code (code); +} + +void unregister_code16 (uint16_t code) { + unregister_code (code); + do_code16 (code, unregister_code); +} + __attribute__ ((weak)) bool process_action_kb(keyrecord_t *record) { return true; diff --git a/quantum/quantum.h b/quantum/quantum.h index 6e3fbcc792..0c60466495 100644 --- a/quantum/quantum.h +++ b/quantum/quantum.h @@ -83,6 +83,9 @@ void reset_keyboard(void); void startup_user(void); void shutdown_user(void); +void register_code16 (uint16_t code); +void unregister_code16 (uint16_t code); + #ifdef BACKLIGHT_ENABLE void backlight_init_ports(void); From 738151d12a6fe947096b974b34e70a8ab62f953c Mon Sep 17 00:00:00 2001 From: Felix Uhl Date: Thu, 18 Aug 2016 11:38:04 +0200 Subject: [PATCH 25/34] Minor documentation changes --- keyboards/s60-x/keymaps/ansi_qwertz/readme.md | 42 +++++++------------ keyboards/s60-x/readme.md | 7 ++++ 2 files changed, 21 insertions(+), 28 deletions(-) diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/readme.md b/keyboards/s60-x/keymaps/ansi_qwertz/readme.md index 0938e49c81..50651896fd 100644 --- a/keyboards/s60-x/keymaps/ansi_qwertz/readme.md +++ b/keyboards/s60-x/keymaps/ansi_qwertz/readme.md @@ -1,27 +1,26 @@ # ANSI_QWERTZ -[Click here to go to the layers directly.](readme.md#layers) +[Click here to go to the layers directly.](readme.md#1.0-layers) This keymap was specifically designed to support keycaps with ANSI layout and legends, while retaining the possibility of inputting characters with diacritics that are normally not used in the english language. It currently relies on the US-International keyboard layout, which can be installed in any current operating system without the use of third party hardware. -##Features - +##0. Features * Input of letters with diacritics on familiar QWERTZ layout * Support for ANSI-legend keycaps * Option to "revive" all dead keys +* Dedicated arrow cluster * SpaceFN for easy access to Function keys and diacritic input * Locking "Gaming Mode" that disables SpaceFN and allows to bind GUI key in Games * Reset key binding, no need to press hardware reset button to program * Microphone Mute key (requires 3rd-party software, see below) -###Languages - +###0.0 Languages The US-International Layout is currently required for the support of non-english languages. This keymap swaps Y and Z to provide the familiar QWERTZ position for characters when using that layout. All diacritic characters are input by either holding `Space` or `Fn` and pressing the corresponding key. For languages that aren't yet supported explicitly, -one can also use AltGr to input the characters as intended by the US-Intl layout or the dead keys, if they're kept from being [revived](readme.md#revive-dead-keys). +one can also use AltGr to input the characters as intended by the US-Intl layout or the dead keys, if they're kept from being [revived](readme.md#0.4-revive-dead-keys). The illustration below shows the "US International" layout available in the Language settings of Windows, Linux and Mac OS. @@ -32,73 +31,60 @@ which contains more dead keys to input pretty much every diacritic character in ![KB_US-International-Alternative](docs/KB_US-International-Alternative.png) -####Explicitly Supported Languages - +####0.0.0 Explicitly Supported Languages * German -####Implicitly Supported Languages - +####0.0.1 Implicitly Supported Languages This list only applies to Windows. Linux systems support all languages, see above. This list might be incomplete! Please add your language if you find it's supported. * French -###SpaceFN - +###0.1 SpaceFN SpaceFN basically means that `Space` acts as a normal spacebar when tapped, but acts as a layer-key when held down. This means that you can't hold space to output multiple spaces consecutively and that space only registers once released. The advantage is that the spacebar is easier to reach than any other `Fn`-key could be. -###"Gaming Mode" - +###0.2 "Gaming Mode" To alleviate the problems SpaceFN would cause when gaming, the Gaming Mode is pretty much a layer that can be turned on by pressing Fn+RShift. This will turn the double-role Spacebar into a normal one, so the Fn-layer (and thus function and media keys) can only be accessed with the Fn-key. It also turns the GUI-key (aka Win-key aka Super-key) into Right Shift, so it can be bound in Games. This is especially useful when playing with ESDF instead of WASD. -###Mute Microphone - +###0.3 Mute Microphone The function layer has a "Mute Microphone"-key. As this is not an existing media key and you can't normally set a shortcut to this function, you need to set this up in software before using it, see below. This key is bound to `RCtrl+LCtrl`, a keycombination that no other program in existence uses for anything, at least to my knowledge. It also can't be pressed with this keymap in any other way. -####Linux - +####0.3.0 Linux Follow [these instructions](http://askubuntu.com/a/13364). -#####Windows (Requires 3rd Party Software) - +#####0.3.1 Windows (Requires 3rd Party Software) *DISCLAIMER: I take no responsibility for any potential harm caused by third party applications!* You'll need a utility called "MicMute". It is available on [Sourceforge](https://sourceforge.net/projects/micmute/). After installing and running the tool, you only need to use the "Setup Shortcut" option to bind the key to muting the microphone and check whether your microphone is selected under "Devices". -###Revive Dead Keys - +###0.4 Revive Dead Keys Some diacritics that are commonly used are dead keys on the international layouts, for example `` ` ``, `'`, or `"`. -The dead keys on the regular international layout (shown in red [here](readme.md#languages)) are revived with this keymap by automatically inserting a space if one of those characters is typed. +The dead keys on the regular international layout (shown in red [here](readme.md#0.1-languages)) are revived with this keymap by automatically inserting a space if one of those characters is typed. If you don't want this to be the case, uncomment the following line in `keymap.c` prior to compiling: - ``` //#define DONT_REVIVE_DEADKEYS 1 ``` ##Layers - ###Base Layer - The base layer is shown here for ANSI keysm, HHKB-style right shift and split backspace. If you use a 2U backspace key there, `Del` will not be available. Again, the Y and Z keys are swapped, so you get the QWERTZ-positions of Y and Z when using the US-International layout. ![base_layer](docs/base_layer.PNG) ###Gaming layer - To turn this layer on, please use the combination `Fn+RShift`, not `Space+RShift`. If you do the latter, the Function layer will become stuck. You can press `Fn` once to unstick it if this happens to you. A solution is being worked on. ![gaming_layer](docs/gaming_layer.PNG) ###Function Layer - This is the function layer for German diacritics. It can be accessed via the `Fn` or by holding `Space` on the base layer. ![function_layer](docs/function_layer.PNG) diff --git a/keyboards/s60-x/readme.md b/keyboards/s60-x/readme.md index 4bba4b68fa..0c4dc10f80 100644 --- a/keyboards/s60-x/readme.md +++ b/keyboards/s60-x/readme.md @@ -251,3 +251,10 @@ The custom keymap is where I tested all the switches, not being concerned with a β”œβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€ β”‚Ctrl β”‚ Gui β”‚ Alt β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚Spaceβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Alt β”‚ Gui β”‚ App β”‚Ctrl β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ + +### 9. [ANSI_QWERTZ](keymap/ansi_qwertz/keymap.c) + +This keymap was designed for inputting characters with diacritics with ANSI keycaps. +It provides toggleable SpaceFn functionality, a dedicated arrow cluster and a microphone mute key on the function layer as well as a bootloader reset key. + +For more info, [check here](keymap/ansi_qwertz). \ No newline at end of file From d34c0a2fc1f4da162a06afa76d98e57d864da22c Mon Sep 17 00:00:00 2001 From: Felix Uhl Date: Thu, 18 Aug 2016 11:40:05 +0200 Subject: [PATCH 26/34] Fixed dead link --- keyboards/s60-x/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/s60-x/readme.md b/keyboards/s60-x/readme.md index 0c4dc10f80..4bf0930e70 100644 --- a/keyboards/s60-x/readme.md +++ b/keyboards/s60-x/readme.md @@ -257,4 +257,4 @@ The custom keymap is where I tested all the switches, not being concerned with a This keymap was designed for inputting characters with diacritics with ANSI keycaps. It provides toggleable SpaceFn functionality, a dedicated arrow cluster and a microphone mute key on the function layer as well as a bootloader reset key. -For more info, [check here](keymap/ansi_qwertz). \ No newline at end of file +For more info, [check here](keymap/ansi_qwertz/readme.md). From aa71ebfbba49727bed275ba07d09f74917a2a6ca Mon Sep 17 00:00:00 2001 From: Felix Uhl Date: Thu, 18 Aug 2016 11:41:52 +0200 Subject: [PATCH 27/34] Fixed links again Note to self: check before commiting. --- keyboards/s60-x/readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/s60-x/readme.md b/keyboards/s60-x/readme.md index 4bf0930e70..099d586991 100644 --- a/keyboards/s60-x/readme.md +++ b/keyboards/s60-x/readme.md @@ -252,9 +252,9 @@ The custom keymap is where I tested all the switches, not being concerned with a β”‚Ctrl β”‚ Gui β”‚ Alt β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚Spaceβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ Alt β”‚ Gui β”‚ App β”‚Ctrl β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜ -### 9. [ANSI_QWERTZ](keymap/ansi_qwertz/keymap.c) +### 9. [ANSI_QWERTZ](keymaps/ansi_qwertz/keymap.c) This keymap was designed for inputting characters with diacritics with ANSI keycaps. It provides toggleable SpaceFn functionality, a dedicated arrow cluster and a microphone mute key on the function layer as well as a bootloader reset key. -For more info, [check here](keymap/ansi_qwertz/readme.md). +For more info, [check here](keymaps/ansi_qwertz/readme.md). From 406ae1a2eb8ee6e90c2585c522d4fbf26d94e363 Mon Sep 17 00:00:00 2001 From: Felix Uhl Date: Thu, 18 Aug 2016 11:43:32 +0200 Subject: [PATCH 28/34] More link fixing --- keyboards/s60-x/keymaps/ansi_qwertz/readme.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/readme.md b/keyboards/s60-x/keymaps/ansi_qwertz/readme.md index 50651896fd..47e4049c38 100644 --- a/keyboards/s60-x/keymaps/ansi_qwertz/readme.md +++ b/keyboards/s60-x/keymaps/ansi_qwertz/readme.md @@ -1,13 +1,13 @@ # ANSI_QWERTZ -[Click here to go to the layers directly.](readme.md#1.0-layers) +[Click here to go to the layers directly.](readme.md#1-layers) This keymap was specifically designed to support keycaps with ANSI layout and legends, while retaining the possibility of inputting characters with diacritics that are normally not used in the english language. It currently relies on the US-International keyboard layout, which can be installed in any current operating system without the use of third party hardware. -##0. Features +##0 Features * Input of letters with diacritics on familiar QWERTZ layout * Support for ANSI-legend keycaps * Option to "revive" all dead keys @@ -72,19 +72,19 @@ If you don't want this to be the case, uncomment the following line in `keymap.c //#define DONT_REVIVE_DEADKEYS 1 ``` -##Layers -###Base Layer +##1 Layers +###1.0 Base Layer The base layer is shown here for ANSI keysm, HHKB-style right shift and split backspace. If you use a 2U backspace key there, `Del` will not be available. Again, the Y and Z keys are swapped, so you get the QWERTZ-positions of Y and Z when using the US-International layout. ![base_layer](docs/base_layer.PNG) -###Gaming layer +###1.1 Gaming layer To turn this layer on, please use the combination `Fn+RShift`, not `Space+RShift`. If you do the latter, the Function layer will become stuck. You can press `Fn` once to unstick it if this happens to you. A solution is being worked on. ![gaming_layer](docs/gaming_layer.PNG) -###Function Layer +###1.2 Function Layer This is the function layer for German diacritics. It can be accessed via the `Fn` or by holding `Space` on the base layer. ![function_layer](docs/function_layer.PNG) From a72dc6da70923aa6f5127e719529e9631bce20f0 Mon Sep 17 00:00:00 2001 From: Felix Uhl Date: Thu, 18 Aug 2016 11:45:56 +0200 Subject: [PATCH 29/34] Final link fix --- keyboards/s60-x/keymaps/ansi_qwertz/readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/readme.md b/keyboards/s60-x/keymaps/ansi_qwertz/readme.md index 47e4049c38..2ed1af1e06 100644 --- a/keyboards/s60-x/keymaps/ansi_qwertz/readme.md +++ b/keyboards/s60-x/keymaps/ansi_qwertz/readme.md @@ -20,7 +20,7 @@ It currently relies on the US-International keyboard layout, which can be instal ###0.0 Languages The US-International Layout is currently required for the support of non-english languages. This keymap swaps Y and Z to provide the familiar QWERTZ position for characters when using that layout. All diacritic characters are input by either holding `Space` or `Fn` and pressing the corresponding key. For languages that aren't yet supported explicitly, -one can also use AltGr to input the characters as intended by the US-Intl layout or the dead keys, if they're kept from being [revived](readme.md#0.4-revive-dead-keys). +one can also use AltGr to input the characters as intended by the US-Intl layout or the dead keys, if they're kept from being [revived](readme.md#04-revive-dead-keys). The illustration below shows the "US International" layout available in the Language settings of Windows, Linux and Mac OS. @@ -66,7 +66,7 @@ and check whether your microphone is selected under "Devices". ###0.4 Revive Dead Keys Some diacritics that are commonly used are dead keys on the international layouts, for example `` ` ``, `'`, or `"`. -The dead keys on the regular international layout (shown in red [here](readme.md#0.1-languages)) are revived with this keymap by automatically inserting a space if one of those characters is typed. +The dead keys on the regular international layout (shown in red [here](readme.md#00-languages)) are revived with this keymap by automatically inserting a space if one of those characters is typed. If you don't want this to be the case, uncomment the following line in `keymap.c` prior to compiling: ``` //#define DONT_REVIVE_DEADKEYS 1 From 73f13c8f26f7f3777cec9d3036628a7dd6021ee9 Mon Sep 17 00:00:00 2001 From: Felix Uhl Date: Thu, 18 Aug 2016 11:56:44 +0200 Subject: [PATCH 30/34] Bugfixes --- keyboards/s60-x/keymaps/ansi_qwertz/keymap.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/keymap.c b/keyboards/s60-x/keymaps/ansi_qwertz/keymap.c index 9f59f12fa8..317a245bef 100644 --- a/keyboards/s60-x/keymaps/ansi_qwertz/keymap.c +++ b/keyboards/s60-x/keymaps/ansi_qwertz/keymap.c @@ -82,7 +82,7 @@ enum custom_keycodes { // KC_CM_V, KC_CM_W, // KC_CM_X, -// KC_CM_Y, + KC_CM_Y, KC_CM_Z }; @@ -145,7 +145,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [FUNCTION] = KEYMAP( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, RESET, \ - _______, _______, KC_CM_W, KC_CM_E, KC_MPRV, KC_MPLY, KC_MNXT, KC_CM_U, KC_CM_I, KC_CM_O, KC_CM_P KC_PSCR, KC_SLCK, KC_PAUS, \ + _______, _______, KC_CM_W, KC_CM_E, KC_MPRV, KC_MPLY, KC_MNXT, KC_CM_U, KC_CM_I, KC_CM_O, KC_CM_P, KC_PSCR, KC_SLCK, KC_PAUS, \ _______, KC_CM_A, KC_CM_S, _______, KC_VOLD, KC_MUTE, KC_VOLU, _______, KC_CM_K, KC_CM_L, _______, _______, _______, KC_PENT, \ _______, _______, KC_CM_Y, _______, KC_CM_C, MICMUTE, KC_CALC, KC_CM_N, KC_CM_M, _______, _______, _______, _______, KC_PGUP, KC_GMLK, \ _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END @@ -179,16 +179,16 @@ bool process_german(uint16_t keycode, keyrecord_t *record) { uint16_t send_code = 0; if (record->event.pressed) { switch (keycode) { - case KC_C_AM: + case KC_CM_A: send_code = KC_Q; break; - case KC_C_OM: + case KC_CM_O: send_code = KC_P; break; - case KC_C_UM: + case KC_CM_U: send_code = KC_Y; break; - case KC_C_SM: + case KC_CM_S: send_code = KC_S; break; } @@ -204,6 +204,7 @@ bool process_german(uint16_t keycode, keyrecord_t *record) { return false; } } + return true; } bool process_record_user(uint16_t keycode, keyrecord_t *record) { From dbfb27326bce824ea922410ab02f9f7f54a639ba Mon Sep 17 00:00:00 2001 From: Felix Uhl Date: Thu, 18 Aug 2016 12:15:10 +0200 Subject: [PATCH 31/34] Added info to docs --- keyboards/s60-x/keymaps/ansi_qwertz/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/readme.md b/keyboards/s60-x/keymaps/ansi_qwertz/readme.md index 2ed1af1e06..b220106121 100644 --- a/keyboards/s60-x/keymaps/ansi_qwertz/readme.md +++ b/keyboards/s60-x/keymaps/ansi_qwertz/readme.md @@ -27,7 +27,7 @@ The illustration below shows the "US International" layout available in the Lang ![KB_US-International](docs/KB_US-International.png) Not all languages are supported by this layout. Linux also offers the "US International Alternative" layout, -which contains more dead keys to input pretty much every diacritic character in a language using latin letters. +which contains more dead keys to input pretty much every diacritic character in a language using latin letters. More information can be found [here](http://web.archive.org/web/20160818101234/http://dry.sailingissues.com/us-international-keyboard-layout.html). ![KB_US-International-Alternative](docs/KB_US-International-Alternative.png) From 0d9d4b8658e27f54188bfd9952b43b384f53a257 Mon Sep 17 00:00:00 2001 From: Gergely Nagy Date: Thu, 18 Aug 2016 13:20:25 +0200 Subject: [PATCH 32/34] planck/circuit: Update after the latest tap-dance change Fixes #653. Signed-off-by: Gergely Nagy --- keyboards/planck/keymaps/circuit/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/planck/keymaps/circuit/keymap.c b/keyboards/planck/keymaps/circuit/keymap.c index 5096decb9b..63e01f389a 100644 --- a/keyboards/planck/keymaps/circuit/keymap.c +++ b/keyboards/planck/keymaps/circuit/keymap.c @@ -43,7 +43,7 @@ enum planck_keycodes { // Tap Dance Definitions #ifdef TAP_DANCE_ENABLE -const qk_tap_dance_action_t tap_dance_actions[] = { +qk_tap_dance_action_t tap_dance_actions[] = { [0] = ACTION_TAP_DANCE_DOUBLE(KC_LSFT, KC_CAPS) }; #endif From a5e6da7aa8173bb4cac8569d01b64ea2839474af Mon Sep 17 00:00:00 2001 From: Damien Date: Thu, 18 Aug 2016 22:25:13 +0200 Subject: [PATCH 33/34] Added dbroqua layout for planck keyboard --- keyboards/planck/keymaps/dbroqua/keymap.c | 314 ++++++++++++++++++++++ 1 file changed, 314 insertions(+) create mode 100644 keyboards/planck/keymaps/dbroqua/keymap.c diff --git a/keyboards/planck/keymaps/dbroqua/keymap.c b/keyboards/planck/keymaps/dbroqua/keymap.c new file mode 100644 index 0000000000..775f1d56fa --- /dev/null +++ b/keyboards/planck/keymaps/dbroqua/keymap.c @@ -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 _QWERTY 0 +#define _COLEMAK 1 +#define _DVORAK 2 +#define _LOWER 3 +#define _RAISE 4 +#define _PLOVER 5 +#define _ADJUST 16 + +enum planck_keycodes { + QWERTY = SAFE_RANGE, + COLEMAK, + DVORAK, + PLOVER, + LOWER, + RAISE, + BACKLIT, + EXT_PLV +}; + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* 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 | GUI | | Alt |Lower | Space |Raise |AltGr | [ | ] | \ | + * `-----------------------------------------------------------------------------------' + */ +[_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_LGUI, _______, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_RALT, KC_LBRC, KC_RBRC, KC_BSLS} +}, + +/* Colemak + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_COLEMAK] = { + {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, + {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, + {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Dvorak + * ,-----------------------------------------------------------------------------------. + * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | O | E | U | I | D | H | T | N | S | / | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_DVORAK] = { + {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, + {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH}, + {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT }, + {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | | | | | Home | PgDwn| PgUp | End | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | | | | | |Insert| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| | | | | | | | | | Del | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = { + {KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12}, + {_______,_______,_______,_______,_______,_______,KC_HOME,KC_PGDN,KC_PGUP,KC_END,_______,_______}, + {_______, _______, _______, _______, _______, _______, _______,_______,_______,_______, _______, KC_INS}, + {BACKLIT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL} +}, + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | - | = | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | | | | | Left | Down | Up | Right| | ` | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | Mute | Vol+ | Vol- | | | |Insert| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Prev | Play | Next | Del | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = { + {KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL}, + {_______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, KC_GRV}, + {_______, _______, _______, _______, _______, KC_MUTE, KC_VOLU, KC_VOLD, _______, _______, _______, KC_INS}, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_DEL} +}, + +/* 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_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC}, + {XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX} +}, + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | | Reset| | | | | | | | | | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = { + {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, + {_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, 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_dvorak[][2] = SONG(DVORAK_SOUND); +float tone_colemak[][2] = SONG(COLEMAK_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 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 COLEMAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_colemak, false, 0); + #endif + persistant_default_layer_set(1UL<<_COLEMAK); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_dvorak, false, 0); + #endif + persistant_default_layer_set(1UL<<_DVORAK); + } + 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 BACKLIT: + if (record->event.pressed) { + register_code(KC_RSFT); + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif + } else { + unregister_code(KC_RSFT); + } + 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; + } + 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 From ea7115534afb23571f11af38c19b4835e1699c7e Mon Sep 17 00:00:00 2001 From: Wojciech Siewierski Date: Fri, 19 Aug 2016 00:17:57 +0200 Subject: [PATCH 34/34] Improve the dynamic macro documentation --- readme.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/readme.md b/readme.md index 119995a5cb..37f140839d 100644 --- a/readme.md +++ b/readme.md @@ -721,7 +721,7 @@ Below these two modifications include the `dynamic_macro.h` header: #include "dynamic_macro.h"` -Then define the `_DYN` layer with the following keys: `DYN_REC_START1`, `DYN_REC_PLAY1`,`DYN_REC_START2` and `DYN_REC_PLAY2`. It may also contain other keys, it doesn't matter apart from the fact that you won't be able to record these keys in the dynamic macros. +Then define the `_DYN` layer with the following keys: `DYN_REC_START1`, `DYN_MACRO_PLAY1`,`DYN_REC_START2` and `DYN_MACRO_PLAY2`. It may also contain other keys, it doesn't matter apart from the fact that you won't be able to record these keys in the dynamic macros. [_DYN]= { {_______, DYN_REC_START1, DYN_MACRO_PLAY1, _______, _______, _______, _______, _______, _______, _______, _______, _______}, @@ -736,7 +736,11 @@ Add the following code to the very beginning of your `process_record_user()` fun return false; } -The usage should be pretty self-explanatory. For the details, please read the comments in the `dynamic_macro.h` header. +To start recording the macro, press either `DYN_REC_START1` or `DYN_REC_START2`. To finish the recording, press the `_DYN` layer button. The handler awaits specifically for the `MO(_DYN)` keycode as the "stop signal" so please don't use any fancy ways to access this layer, use the regular `MO()` modifier. To replay the macro, press either `DYN_MACRO_PLAY1` or `DYN_MACRO_PLAY2`. + +If the LED-s start blinking during the recording with each keypress, it means there is no more space for the macro in the macro buffer. To fit the macro in, either make the other macro shorter (they share the same buffer) or increase the buffer size by setting the `DYNAMIC_MACRO_SIZE` preprocessor macro (default value: 256; please read the comments for it in the header). + +For the details about the internals of the dynamic macros, please read the comments in the `dynamic_macro.h` header. ## Additional keycode aliases for software-implemented layouts (Colemak, Dvorak, etc)