From aa1a90af66df6ab12a371416e23094315c4a43b3 Mon Sep 17 00:00:00 2001 From: Felix Uhl Date: Thu, 11 Aug 2016 00:54:55 +0200 Subject: [PATCH 01/33] 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/33] 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/33] 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/33] 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/33] 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/33] 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/33] 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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℘okN8xqmv@~{ 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
x0x&XRdq5ZpUrdBsZV}< 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 L!vtd%1_lNIG?Kg; literal 0 HcmV?d00001 From faa3fd48aefb6b9386852b23eb433bafb413755b Mon Sep 17 00:00:00 2001 From: Felix Uhl Date: Mon, 15 Aug 2016 22:57:26 +0200 Subject: [PATCH 08/33] 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 64ecb1531067f7711a8c48e821eab546f1129757 Mon Sep 17 00:00:00 2001 From: Toni Date: Thu, 18 Aug 2016 09:56:11 +0200 Subject: [PATCH 09/33] corrected the split rshift key to reality fixed my keymap in the process to adjust to that --- .../satan/keymaps/iso_split_rshift/keymap.c | 16 ++++++++-------- keyboards/satan/satan.h | 4 +++- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/keyboards/satan/keymaps/iso_split_rshift/keymap.c b/keyboards/satan/keymaps/iso_split_rshift/keymap.c index bc5bfe2e63..cf938e07d5 100644 --- a/keyboards/satan/keymaps/iso_split_rshift/keymap.c +++ b/keyboards/satan/keymaps/iso_split_rshift/keymap.c @@ -52,11 +52,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------' LEFT DWN RIGHT */ [_DEF] = KEYMAP_ISO_SPLITRSHIFT( - KC_GRV, 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_BSPC, \ - TABDUAL, 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, \ - CAPSDUAL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, ENTERDUAL, \ - KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, TG(_SFX), ARRUP, \ - KC_LCTL, KC_LGUI, KC_LALT, SPACEDUAL, KC_RALT, ARRLEFT, ARRDOWN, ARRRIGHT), + KC_GRV, 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_BSPC, \ + TABDUAL, 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, \ + CAPSDUAL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, ENTERDUAL, \ + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, ARRUP, TG(_SFX), \ + KC_LCTL, KC_LGUI, KC_LALT, SPACEDUAL, KC_RALT, ARRLEFT, ARRDOWN, ARRRIGHT), /* Keymap 1: F-and-vim Layer, modified with Space (by holding space) * ,-----------------------------------------------------------. @@ -75,7 +75,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_PSCR, 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_DEL, \ _______, KC_PAUS, KC_UP, GER_BRC_L, GER_BRC_R, _______, _______, GER_PAR_L, GER_PAR_R, _______, _______, _______, _______, _______, \ _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, KC_MPLY, \ - _______, _______, _______, _______, GER_ANG_L, GER_ANG_R, KC_SPACE, M(0), _______, _______, _______, _______, _______, KC_VOLU, \ + _______, _______, _______, _______, GER_ANG_L, GER_ANG_R, KC_SPACE, M(0), _______, _______, _______, _______, KC_VOLU, _______, \ _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT), /* Keymap 2: Tab Layer w/ vim pageup, modified with Tab (by holding tab) @@ -95,7 +95,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_WAKE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, \ _______, _______, _______, _______, _______, _______, _______, GER_CUR_L, GER_CUR_R, _______, _______, _______, _______, _______, \ _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______, _______, KC_ENT, \ - _______, _______, _______, _______, _______, _______, _______, M(1), _______, _______, _______, _______, _______, KC_PGUP, \ + _______, _______, _______, _______, _______, _______, _______, M(1), _______, _______, _______, _______, KC_PGUP, _______, \ _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END), /* Keymap 3: Split right shift Numpad toggle Layer (by tapping the split rshift key) @@ -115,7 +115,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { RESET, _______, _______, _______, _______, _______, _______, KC_7, KC_8, KC_9, _______, _______, _______, KC_BSPC, \ _______, _______, _______, _______, _______, _______, _______, KC_4, KC_5, KC_6, _______, _______, _______, KC_BSLS, \ _______, F(2), F(3), _______, _______, _______, _______, KC_1, KC_2, KC_3, _______, _______, XXXXXXX, KC_ENT, \ - _______, F(4), F(5), F(6), F(7), F(8), F(9), _______, _______, KC_0, _______, KC_SLSH, _______, KC_UP, \ + _______, F(4), F(5), F(6), F(7), F(8), F(9), _______, _______, KC_0, _______, KC_SLSH, KC_UP, _______, \ _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT), }; diff --git a/keyboards/satan/satan.h b/keyboards/satan/satan.h index cbc8c91bd3..6b45c955b8 100644 --- a/keyboards/satan/satan.h +++ b/keyboards/satan/satan.h @@ -74,12 +74,14 @@ * |-----------------------------------------------------------| * | 40 | 41 | 42 | 45 | 4a | 4b | 4c | 4d | * `-----------------------------------------------------------' + + swap 3c and 3d. 3c is right of 3d in reality */ #define KEYMAP_ISO_SPLITRSHIFT( \ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ 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, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3c, \ k40, k41, k42, k45, k4a, k4b, k4c, k4d \ ) \ { \ From 07924511f33599267209b1f0d1ebddf400f7987d Mon Sep 17 00:00:00 2001 From: Felix Uhl Date: Thu, 18 Aug 2016 10:01:46 +0200 Subject: [PATCH 10/33] 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 864e26f4399e3531f3672b6494d4f47548829b88 Mon Sep 17 00:00:00 2001 From: Toni Date: Thu, 18 Aug 2016 10:06:13 +0200 Subject: [PATCH 11/33] cleanup, readability , shift swap in ISO_SPLIT_RSHIFT --- keyboards/satan/satan.h | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/keyboards/satan/satan.h b/keyboards/satan/satan.h index 6b45c955b8..33a10292c4 100644 --- a/keyboards/satan/satan.h +++ b/keyboards/satan/satan.h @@ -3,6 +3,9 @@ #include "quantum.h" +// readability +#define XXX KC_NO + /* Satan GH60 matrix layout * ,-----------------------------------------------------------. * | 00 |01| 02| 03| 04| 05| 06| 07| 08| 09| 0a| 0b| 0c| 0d | @@ -26,11 +29,11 @@ k40, k41, k42, k45, k4a, k4b, k4c, k4d \ ) \ { \ - {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \ - {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, KC_NO, k2d}, \ - {k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, KC_NO, k3d}, \ - {k40, k41, k42, KC_NO, KC_NO, k45, KC_NO, KC_NO, KC_NO, KC_NO, k4a, k4b, k4c, k4d} \ + {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \ + {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, XXX, k2d}, \ + {k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d}, \ + {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d} \ } /* Satan HHKB matrix layout @@ -51,15 +54,15 @@ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k49, \ 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, k2d, \ - k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3c, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3c, \ k40, k41, k42, k45, k4a, k4b, k4c, k4d \ ) \ { \ - {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \ - {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, KC_NO, k2d}, \ - {k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d}, \ - {k40, k41, k42, KC_NO, KC_NO, k45, KC_NO, KC_NO, KC_NO, k49, k4a, k4b, k4c, k4d} \ + {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \ + {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, XXX, k2d}, \ + {k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d}, \ + {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d} \ } /* ISO w/ split right shift key matrix layout @@ -70,7 +73,7 @@ * |-----------------------------------------------------------| * | 20 | 21| 22| 23| 24| 25| 26| 27| 28| 29| 2a| 2b| 2c|2d | * |-----------------------------------------------------------| - * | 30 | 31| 32| 33| 34| 35| 36| 37| 38| 39| 3a| 3b| 3c| 3d | + * | 30 | 31| 32| 33| 34| 35| 36| 37| 38| 39| 3a| 3b| 3d | 3c| * |-----------------------------------------------------------| * | 40 | 41 | 42 | 45 | 4a | 4b | 4c | 4d | * `-----------------------------------------------------------' @@ -85,11 +88,11 @@ k40, k41, k42, k45, k4a, k4b, k4c, k4d \ ) \ { \ - {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \ - {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}, \ - {k40, k41, k42, KC_NO, KC_NO, k45, KC_NO, KC_NO, KC_NO, KC_NO, k4a, k4b, k4c, k4d} \ + {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \ + {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}, \ + {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d} \ } void matrix_init_user(void); From 2618260b34acade9e3239e6116a94bcfc726c00a Mon Sep 17 00:00:00 2001 From: Felix Uhl Date: Thu, 18 Aug 2016 10:37:32 +0200 Subject: [PATCH 12/33] 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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%0A;aO(*h@ z`Td&7S-;zOr6pE$UrAEXjXpG0`{e#oyYrgKUR!c!@42_T{Mx6vpkbJ8n)*|mMRc`V ze)HQ2Fv>f8VfQNWUg|x4S?%v{RkzQaJ*yeN&t|SwDR@!XKEaI}H-e^4d)*G_@Be#j zRp{yq873{Qt)S^KP$mEB>T1x8T+-35FK=&$zl)ZUm96~yYwMb$bL?uZQ49FBE<& z@X6bOx)=pNKczZ3JAeG};lSfW)Wg2HDV2qVC18n%U`$L5sPm^_ zVsU$We)`Etsw`}5L2IK-t;*k>VNjL%WYnqE@WjB1QN=E9##9NZRUds-JP+NyJ2!v- z-!M6c(6v!hWv$CJ-i27z?&|n8No=Z?X4Dk9bLY-ksHa|&Hp`L7zP?UXQL&MgTTDYK zVQs9okKUg@M`~Avdh^_y`XT${moF>}s=mIGu_$O@X6Ivgar5@OdwXZ!-kxuqd&^{R zd9-gj|u+4u9k{m1_SUcvhk z53^OWt#|L2i}YGCRqpn7_4Vp19E|(2u0F9ld?SJ*Zn9eE0hzhh-3M#Z{wjp8i_zqk z*IfLh@xyNkqZE!wDu(s{{^)QjD9qcu<=FqYxI-qNr^kO0o?7>Fsf3U3Je@_?(pwFa zk0qq09^HPwZgu*+iz|cG*TwEuvz|OnC(RS`@K#vTN0W2F9x9pRca2Uan=X{4C3NwwbT7}ZqyUX6ncv^qd1C?@~na{pIX#B)<;>1MdRB6Xvx8~KWweA0W zXkNt3Ej!b6@(C^Nur(9TR^5}C^8L-t;BBE-Gpna8aAf{lBjmMEnCtJ~zaPJU_y0WO za65nTj}M7%{c^b%+J9VBHr)K?jn0`U9i1cFj`trulhY}bv{Nd0vnHn!~cJOcUFJb(~sY`BxtFZh;CGfS>?s7tyfN{_wkyUnTcqJ`G|?VzqfaF z`1dJ{iT6tS&hk&u4%a(taNdinBeQmLmzb}Z!>uiXb_#8eo;{m(>ifgokaaPUdl7Ru2!~x;5+V?d_M{Iy2wK zJiD;adDF55zO&7$woTHMH7GW!D-ByYuW#?=$H)7hTHGruD-+R=v$@(}zIlqa`jwl! zQYyb6PtjHvlU?e4`2Rn3AEv1Sc4=p4sj8>UGEV2q(`4Fqe^;runBAGPXE%RIe0SeI zlHul_$QjamB!fOb@f56zaPK;<8hqo%jSv5Rzb}4#j5lsi#lgev{F?KVjww8C2wQn` z|NS~)zooagsovi_LBNpNBB6n!@bB~aN!2baHnp?9YPf!XclU8pP?>LZ^lg*$+fx)w zLU^>SN*c^{6c`pRoo(d0CH>l(Gsl1U|D5-tCbDD+kM_!vxK34X7nMbqmrwR(e1AtU zYR<{Yt`$YG9v3eJO!U_^W~U{wN`^9MDjYd}{PoJOc0V34*VNQ}`1sMY^v#=_n?FzO zUAuYnW}ODmQkJdR*FlA?Ui`i_({+43|4)0PwDfb0SCE>|Y`fZBIqNeuBs&{|R!uS5 zoW>wu`(@&ueKkLeqPAwaHnZ{WD1Se1-r?Hiesec{;o*~3TjYFqul5$!`Sp4sUv#57 z92d-=|3US_&ios(r7J^L3f-^y+&iZmw3_y%-<1_lc)X|UO`ZJY8OytOhs1T3 zeqc-zdiLO8isF*e*G>8@OHvQT1O&29U}~B_e|}uk!O80W%cPH2AM26)>BS&vS7UK{ zy8iQzkB@^^Q2fgLVwZY)T56EjY|*JP3thX#YCfG*pJP$jwA_FGr45PBKEA$BKg?!0 z+9i6r=)|!_u8Gh61T|g7nZCXV+_hK3i5 z7ybSB`@JY;L_5=9s$J?d9w%si5Va&!?nhi;l^* z?CX8|ECs*EIR5(bvbnvT{rUO%&reQPU%4gE&CRXLEi2^Y?-xFqrc#M%R#jX6)fE>f zR=s+pbY|nTbE1EDdHs9-zf|o@Q%l~mH3~`D*{44~KK|2S?v1ATHJ>>5?c4YBnB-=K z#TPSfY)%Jn^OM~c%q8C|ZT{@a%HR+ag|#(%s|p@Ad90feCSa(nEZF$+lxX1^#Thea z7QVS*xc6r9+z*L)dFKwba?f0G`bHW<`TMSv>5JW#mTfaJ_CEJ2ZvQ?34~HKgB$Bk| z3p1T);Z!pBmO9wz5tLQ*eO<=)6BCn8t_cX;k`Y)_Q}e~gIQY?n2Myb|o0q=6b~feh zpKQ1I@YBt&K*!8Mi zDeUC^6;cyKa_;U5)o=1Do1mn)bJ3S~cW2+*Tb+LX=x2ua`~Ta4y8i$E{fpUI)VgAY zhK{c8&ku+B3orDZ_++>_{d`(kmE6^zJkrwAW$*5I1_TH^KQ~udM~8=-oBP%E_5NpP znTl#IPI67m5|z=JQ#<)ix<-85kptlxx;zShtU-f6Pft(ZS@Y9q;>3xd&9!2>QA@m* zO$(K?6ItdZdGg-9C7wk;e4T&1-F_d0dG-fb?Ws`odA#qZ8;`<0m6J`rf^XiwwXFMN zu|4nZqx1IvRg{#Plw7+4c9-S8y1st>3x~f)xf6{hP26y2Z*{k-cE;AIX}ZzJS~!Jw zl)Mz`m$O|Iu`$Uc`@jo!Ya;-iwGp&`gg%Y0{Ry<7hIe`C%G z=b4X9a7dtw?F;64jPk^6~`7(XP~UF~l~`}^1_;#5nMt?ySamx&RG(*HS6ZGvllO}oE%ZaWo>Q!=FOX;bq8dW)Zb0* z>hikhYI-mTv{ng%Pa1|Wy1*9!xniyY3SQzd@yH_AZnbA+u2WR(?Cza7aY7?-@kNaX zt7h6wQV|pvU#=UoqhQu9LeAo)ly-+`Rl*8kIxkqHMOkX z-d^ENn`Ihi%#i3^xl;4yU!R7Ge?^OY3kwUSdfl2gZYbm;s zvn$q9J=F5PR)@jX0{m9-G;*Hga-wjp*`K+`)m2m`Oqj61)YSCs#OMBtFFx^@|L@n= z*D^o-o~F!~la^j>XlQtHqMfat-Z>5Rdn<3;i0GX-QP9oJjdhv-bd}B-GiJz0t3SPB zEh;U&8f3_~!XU?|Pft&e>TPXxy>fA}d-s#F)KALg@9!Nwdsg@3mzS3-y(X9Z-)AT& z7`0}NkY=>myw}%VmnBsHt}s%{zP38t|I^2h7oTiB^C&Sf>e>12$IhP@VQ;rs=F7b} z=Vni>@UF7Avq19!i_cj;-8jdSiP=}eW{1TjmdnfAFK)~IVtxMS&*$?$e*fMdzcnkg zkxMObb(rqU_xt~!i~s0)|Dd~k?UW69cdZuh5!t9~6m)uT^`na`1C^)M|2I{$iRoUN zs#I3?@x4v`iwg@umH)%T?dj#An~$sxm$Lh}!$dz$!mubs<$jIuw{yjPGL}utm!~&P zpFTa1FU0Wjk6&WXX6NS^7&SdT-CS7GQ~TZ1;p{Bar40=YHoyI3ErVKaZeD9>*eI$U z_u=2~!uK}IeP^3}yu94s{NInq{lyE~B$chAoD&uZRICo|R@;xp|2-rHLZS^@v@&d%b>tT`zfetv$P_wL=h_2_8#^Rm!Ss;1f3 zdd#k6ZRK3*J^kF)bm;r7YDn1$TRcD{A-?e+gozMUm`ZhrlteYF?1t^Faedc_KfW8LD9Vpj#TZ_5`ysrlJ@|6jF9 z*?h8EYC2q8udj91)m&0BJh^01kN_ty@6zz~abI3t?Vd4X#+`M3^A;Rf@iS!7ObfwZ zUmA;^x`;gmjlt%4B~DNl(NYl-jNQp(Xjt&iCc{MOxu z&G()3nX`$1Di)gRMw^wtUdpn&th49S{=aNVL6-Hx;_UZp*>i7k=sG$onu*o@;;j1C z^7C`?ZnL)Fl|i4ZLznUJNGb`vN!@OEaGq`TjV+nNpeb=Tx1t9J7*~a_pSQPF%g4im z1GF|GEG%q_c6eXh-YU=_!t=7NBA^B0bFIsnHY6TyyR){ZX^sWs!-p3ZFs59a;U)X- z3Dd)e4vN$XwL6n*%wbfFYl8-|5j?n zpZX;snt%5#3{>7I!s6B|KOuE1FgvW|dZ;oF#JGXB)zq`Bq`t51*={JOhgg_@bFods*N&NrsFKE~*;Xp&o zx|yeL7nHKr*WcI~?30kn7RqpvQAt_(R`Z$R zaCKFvsBZDcq=l*%4Ac2iwsu$+KYQ^0J-@?rz1SDm*U!IKXKrrJG8mRT&z|+o z|Gz49wZ%M>Q+fCHSjN|Ube;Cfu)<)^f4i6+3Rd65bT^gEGy&~5++F_u+=Y#~x3{HE zVO%_0e_z9c2R*XZ+0!zL!)BOd3VnZn-@m;6;i1-*aeJ+7tG|Kv#6@bWv|Cnx)8Q7^ zJM-bAs`s>%tE)mIb-ZufVz#h2@aAUZt~1sjKYV!b-GG#gFC-Oio!F#kqOsn+;AMK7O2dot;<8rJYZ9ga6MB z&xLh#bw7Ukbm;o^>8{;kjG%=ep$wV_Rxo*(f!3^mCcOXse!oBDcT-bS#LgmB(E7=X zi(Dgr{aAMN_4OnM!D&h_ytih3ILsfpd!CBtrdI|!IzIjko<2TD4j*nlal(V)+e;{!iEA>-T=%A!(fU;N{Di>5Cm4gQ!->iK0k;`7TE5j&$AK z85b9^3aj}{V6O=a3tJPp+3o#|ZgG9kn#-T%|EDaz=u_}sPR3g8+U41~b-zr0&fvE@ z5oE~V;^HD8CB?PGUKw;e&d(Xw*T<)?oYTVMvCCzb$E1ITom^}$?`+SXuhZ~n!d1U- zvPX`q+jlS6v;M|n_x=|*HZHcgIAzj?4F+ZJ@11>jcekWfiH3IAngc4z6YVc0Ue}Yb z5LmP*=>6_eZw|H9VF#D_Dk(UHS(d&Mxp(hgzHQpUCRQF&W-= zdp19wNi%EzVe9m~v}Nno(tV<-vi*PY?EltPGlCS=_cd zeEp{M^KyRkY)Zbw^{Y?%xZT{OS{b{%b8o%8-`rETzJl7xD}$6w9<2^v z|KaoJ$=|^X4?k*tpKn?0_Ra;g)L^ELRqmU++IC(O?x=ZQ%3mD>n(?`D<3@?NzrX*{ zQ&!bsTa@>@D!yj8wm#n9!=q!5i@W>g{QGu3zOH>UcI>d=leJpnlX%l(`~T$kXC7yr zx^MAs=iTU)TRc;=uNZt&jNY_7;6&K8`3HMS4U%P3cs9M?z0qXy#v>j*sTU$Pg?L16 z;<@DH)TK0aTlM?*{rTTZ^11J>tv>y^ZtuC%H{boN>wjna{CCa#=Ra+j*_Cv4ebY8> z-~PPs{jIIu&u-NJ|GRurnY<0doVlsfudR)gYgO^_mfW*F4F< zSQI+FD>E`~yttTqkH2n|!PnIj1g7n%{i=04?_!gzc;}4ePaZ$_R;rzLb#=J2j#x2h z>U7EL_CFtw%X7v5J}%FAa?b3Hh6RsUxIbE#_4tPDsbKVQ*IgfVbP9iHuV1DAf{BZi z?s5kjeF+Z}K6vmT2RAqKfwX`8@^(FZt(y+7U9$$XL+0?cYhn!C!8f*KP7ZpzubSQC z*u<-=Pq)QtT17nnSOMBlvt3pv^<+zXJ2S&9lgvYBqdcTlFKv8#swLjDJ?`zT&;?>! z^XEUBH&(E)UZm?ZO$r>Cb&y$O6Nz`dHYAKATQ$AaBjljnEn&)S}UKk56syLZ0b+L~>cbHiX} zF%J*VhQh~gU#54pPg3XiKD4jaAxJ3N+$?S3iq_!s`+jv*e(?3VQI?d{_@YB=W&D1- zX&$Pjo<&oisG5mQ@RPl>wfpG?kL0XV@9rLK%Vp~dGR75Y0>P33m2YwGilT23+?>kD*JgQ4%|5~Rcqs0=XR0#zLWS4PcqX|Ip+5I z+S;8nGcuWa$q)A*;7QMQfy!rg3|L0z0d_AL9tJ$%n>EX&n*(XhMIObS~ zZ+LT`-{bjXFH0Sfv_mbN8T00sOq@NtJ9KrJqNXNi^|v<<&w&;keBu>!u@l#id&0Ki z*|TT!dDhP|PUqWR_w`li9&MTDza^K%=N@h|ocZI?icszeVez5Ulds*mGbcK{L_l65 z;=#q0(bHR}i?;Xi8B~`Y{I>u9raf|@A6{HkX3*)}y+~o_^cOEOW|oTtZq%qh_~t2# z=Ot5yl9!jBPJZqsU;pQap^=f1$h@6XzZLOF9WnV38#5#N$KUF22Kq~Gglo;2J6BPF zW5V?5?GGL#aI`vgxG3rEKYZ_=oTsNJ2M^DY-kNR&V`Jg%d3Tu($bEZzYisb2c`E$b zoo8+@aP+B{O4#hp6}Kw_bl}GC@9)K{*LY3UDpGZzkXww!NVYKE5+2^_noVZ8&&oclnyG&#$kadA&lT#!g<^ET>`e zWMKv|v*~l^_V)kW%*M>l7xKg0Mc}C7-+5Wr*U3(w9wC!^YfIz8g^EVT#)?9n0+NzH zZ&Z@aW8-NP=1n}f&0G6uoQ!*)%)_oPAAi<> z`a6@?t>ri~-(G%w{QhGTmEAXFURDDgf3!Mm?V+4ZbD@Qz8lTlKz6z{;eQoW;Y17!; z-QC|z_hZs%ymKdpg@r}I$SBCo)J@pq_|k6s$x9R@muPp-k8iZTad)qR|Dt$%GmG;l z6Xhms&lkNs;r-p+=1!kV^Vi4hZ1VcKF}B7|UN>sXgvyz&E-oiltkRIG`}#sKSej|Z z>3zA;+wxM6a_P0TY_Rxqz@cpZssl%kw46@Y>{)eqO4c(W zrDfnhZ-YcZ!^-a(*)<*!`|E7a&9Q9u(VTlpP}yxk;p1bgG8+^=O?+<4dZI1o)NBo% z+F#EXWi8pgsHxd?IVMXC7vA-?%ZS;odUd+w&(YuU6ORzvSjpP+;)A_ioLK87c1;6sL>5Tfwzv?OMayUnP0b{{H;j;(8%xk1o~l{@6B&ZTqW^_j>Cz zg;r_IyR>Jy%9E#0Pwt6+I=5${UF@r=;X0RM14|FOg3>W)J#ABSbGPoFNU0^izwNB{ z@}0W2cF~#I%8CjFMMcKf*Vngus2uwF`MF{7GoPdSD^hhLH?gSu&uashG=Gm(SCEWdjl|(L z-orZzAMbFqW~ll5^*UE;{NL~L3bD?wf{z~i{+?Y#^NH@ni?u&Lsp`e=JG1jm^!B{7 zbCdJ)`-7MJDVmsssF{UMl!)FKac#w?&)ShEU(c_P(CC>t^Um2CL7(|{vT|~AM!(JS z?wsH)@tjHCskBMLj?4Fo}OBz&vSieak@_QHXerH)2qYR&+}TRExRlt zs8|2x1%cE9GO2=GOUZ!<&d4oo@sgS$&-|sEG3+izCL)6px5GZ z@x$r|3C})i@J2>kgisz3S}sK=n(S zKK}DW;(Md2WET5G%q+=^&dA7^_*hd@6SRY2d+c&Q+16Vt1D(x$)a|`O*j_&K^_|J1 z!w6cMJ^O=~xA);|Yoohu{dL4nUs?9@&d$wuR(W6AYRoUIwX@^R<>i}%{aaIWMHiO6 zy|rQc_UF@%^-62!)-X7%k7K>R_s5S(>L*&96288AWWQV|{%QJuFL4&V_a5&+dj(T! zLK03*Wp|lvE7$t+!a`=ymX@bJ6;)M_*6;u4^!?r4gU>$~zPn>t^7fV}Xd``+`PnmP z3@SgR?7S`19jUafg;RJ&Om5=8U)`D$J-B}S{k8hf_p7_h^VemqQCZ`3i&-ghI^WKK zE&tlT9NrUczQAJQvgqv*g4zv|iC!WvpL+QDP19T!At5U(J5{sKrtZ(n$Y-lU8KtGC znuNBzYIU2QnVI=2a|P3db+I3rZ+~iAtlVuY-aS)m-gNN|d9jZBA_@#9%>T~!;B%Ji z{6jZyO1k&Uu`E&n6oB^Ghw&r~K!@r+S>#vB}X{6>i=fu;B zJ@x;=74J;r^d0BV&b1DIx2=tzT}+Q+5TVTYC>hM2PTQ`2LRd+4<@JUEe%<#1tDFt7qxs z@87>Vmcd}9TjrUwXD^0LveaX@wA{ox@7cN3qC>5f|K?QM9Z52C=;_wJ_hV9fLjwZ~ z3(J&>7=M5NRMtuRe!shX{CFR0O-;z95Wz2BzaD)2(IPp}NJ2$R@7gt=dyz?7^6#BV zTfG0@tX4hSx|j(HIcaPflch|uu4sVPpcNJt3UnWxVU{bEc4h{nvhrf3&0B+)`-Q%^ zsh;@I$!xWbnDP6(c0Qjwjw)IwE;G*9xISTDVQcEiNvfcwTkr1g@87e>#%G?5FpU0D)p1$+;#p~&lU2LliBEPQC5Ib~b3Fqgey)`GDI#pl1 z+EkF3D<7YKizQ~~p-*8(Ml&2geLnB7*v&`s{WITZ3#Wg0y?)ce=v9l9uAW}u@!e^P z&rSmeB_*YTP@}z}TtPuW1%Xx%f;^vu{+^JKp5E>~U2kFh{ zXW9C&u&|hU91C{*d1wD$vZp@HWJEd|;NM!(2rZ|;xreScVqTJezv*{Je|on` zjh(Tbm`*_M?>~Pc)|J1%7usQCw=v?($p@c9MVGr}s6IW!ka=kd=c{XLyM@*L95h7g zzSY>xUmtXRu95wV{Cz*!`sHj7^~qX;Iz}KRo5xIaZa6j9t^ZH*Vj4{KQ0M@6vVa)~!qGee!w#|EY5rVkA=I z4m7jzI{p6kmT`g0)ajLk|s=?$jHsjy(Q}^mvcK`=*)}Og-YC)zkE&oK7Gm&n?0u4n*uhy-=A*$c2(Mw z6BF-Ldx}=F9#s@LA*LF-!7sNnA}Z?9sj1o@zJEX7$jn~w_LixNy1H|CxcJtrt4)(9 z3#<9gY6;VtvFrWK$&v@6w;3cqdFcFYkGT<(lzAHSPx<lqQxV?S-srk~c z)U>s^e}8}P?%~0q?iYCPUE>7)d7Ygn+fST0k;JNUyhrl$$%r4W-C_&t|NonxlkoS~ z*BiUb_4n-A^F*#^TgFAFWqckXAtGgOZhVY%UgAAnFNRUSR7g~`Rle?rqlmDu^7QT{ zJ0iQ@yvccUXQy!RGM~U3j~8j_=<2%m%h_HE4B?BAE-WZG@%QEO`6ca{#SR`^S!{y}znH+;22x_ipQ5 zB`-lodaPI;EcM{V#^i{NNv?4b5fM9Q%+c0WQ&W4iWsAwqx?rV=E6&_=ogdV%)v4w? z>q*|79f9E!3pQ+0&|dvS%3pP&{HwXUQ%_F|vcIe!w}(SrU47=B)3>+hKbF=FJXZ1P z31`)p7m8Ki-rQ9Gf9T}NldfEUfBpOk+LV*^cK)J}^>MK!-`~Z~J+yO*>c>w{z1L}! zy1BI-T2+7RnE8DJ(KUzLBO6~_O3KTd_wQu;nu!wyeSCcx4W{RWg^8^SS=n^zXVdqk zGgqEJb?VUX@9#r{a@IRGvw?a7YJPJfw47a{HP0dMY6vk$x?i z73X|)Ph{627b1ZggO%uCA7llms;`h&Z<>a5O1!I7wE0dC@3mTa~d(+6%Nk;wszi7Thgg1nkP=5 zK74Yrdg?iE503-4wq}3){eJ)9Q>VB*IM_5UIl#-xK?Ex;0ZO~ZE9zM7v# zY3Jwle)&=o5fO3V+_`l(KC9gP&oFrgOMpxI9)nAYF`qtYHmjPLh+JOo@4h|nu0irK z9+RIvdT}8kB2LcEi~)r*P$vh7Elr*}O+UWx%a;<+C|*ZL$AJz(3+p(V#KOwDF#rBO3F9;#IgxcuE|7o}Xo(8A#XM=^L`GRzSx{MXb94HQz18I# zpUc|SNc2jXHcgx;2s%Eh;p*!PDnibn{hv#}bwD&{%-XWW#HR9-OPYND@nFw`9=@O< zp_G)A6K__Bt`=LfW{t@e<)@vUosIqd{Gc#h6}mcWmvvO@CAN<4Zf-tVtCqUIzZf-E z^vDVeD+_PBvL!RPV$pWfXxLhS%F4o{MKZFo7dNN-r_K)NY~`K!^73-$Xzn&aaDc|_ zF5}%>^>xzC<*Qe(p0q1_R>G4L6FK<#r{COO^RuX;vNCgp`>Ev2%uZfuvju^R-6Tx2 zrYzgNICRP_hMC6cd}=;30#uGCzr3_G{fDeZuAdW8KfGrD#Y{hT?LM{>gwz>%y?hik^J#P@WE z?oUPM@g=47sdXT6@hDCa(3j|8KH^yati{Eagt7Wm75-FkC(c|K@t zJ^R|4z`dbSvbU$4Hu%j?yZ!d|=BF1Fzd0y#G%0ME9K3wSb!A)G4V#kw z^U0q2HvRf1nX9Xr)%^?>zk1?%;0(`&tEuld?yyLB8+EmNY02wryi>KqkIghrH%L7t zay4#GkH(S-eUuGGHxVQH}3+EZ>`hPZ`n{sX(aB8dm z5|BIl*RNlou@%3$R-t*k6STt{{sh&{Pk9@acB8gW{~SYMd3pQv>EdV3p7k!>*WAp! zyd`wjE>)I~s)F+8(mm7Df}koSR<62{NV2H zNByoYA{Dl6d{b*9mo7EjZtf_+vT*N<*PG|;9pWCGF;@e%ZaF=9i6;14mPUgt&Oa z@#KwLjvCfj1T5zhkd1vXt+y|Y|34%1sde*N90gkbSXeMzU(ehtwUMR7);8gLp4hr6 z^VYq*r+KWMe@$Gd2S>nmy$KT!zI%OuG2vIq*KKc~J!`A~_mln6C6(YQ!Mn;*+p<=N z&A0345ol5nId)~r%LD&EaR>8XyqtWpdJ>CWZ0xi>Hx{#3cRqb)R2f%Yy{reEqRhX( zVqCb;$JFc4m6fXgHksDSZU*Q3RCsQj;n`6mDPiRDH+T20U5}ogp1wo-qRGFeg-h6) z6s9EIvr#+#`puas`se0OwzVr#iN3d=osBo?RAge}nPN}_BE$aKGgt1fy%Gy&?$hXQ zZ-29G?b;m1*iz8(Vi6G$53Z~X&bYY9^`^Z`hi)d4u{(gG_#+H&|KYa3vQWk*VxIQJ9kdhj(>^C1V$%;mP<2c7$_e( z&TdgXO;YLCuQL{z7aB5G`_DNM5!1>clj@5X z2Gjp^2oJCWgOQ|C61;5{>H{e4_{x_`R9-4@Bh2(EFM9v);9x`ta$~r4sQDqn1e*K>h-k<;E3LwL(v2Us%xS zaamTg|H+dlAB2R3Sgw&&Cr&(QY;J!2)cxbPx96AI)%`iKI(B#2 z%J-ZMar^7eu8-ThD`vi?_o79MN~BFP6t3rMsj9jjzi}gC&Fa;wr{3Sc+0do@*m#JEzUVmeSxLQ4YeXp*J+PW(2-!i+J z9}7NzdmBA>SLy3#CqM68vP4DJ+uK{v-+QXqqQ#3#pVs;>UAF9%grsEW*DqhTeER+U z%}wLRrAwEdxNu>^mHSKkeSGc^}$ISB|JSnt*)*P zzkaIv)Y-F7ZL7ceyekYUD%#YybLY+(=bvXk{jP6j7IyvCEh~QofsEAuTju`${{A&b zh0VN-KR-V1n)S}d(tX|k{YSgSyVK9lJG*(qhJf(;DN2?%1%7|uF2K+*Iap_wdHvs; z=XGLtg*@h*IhQJoxSw!etXQkGoYP4XJ?t-diQtA z>;E;^)oQxOubje&5+)BD<$C}ZmYxA7K!Ub zEV#YDzTUUoH5D}X^zq}zoz>sptu;9RrTqQ9g^tZ^kCrT1!u8c>ec&XC@S@wY5R#YbGD- zalE|DH}u*x50*E#*?;_I{`m3ChF6zZXV}Ra7zF(L_4@jH_q@EoM1E&y=a98gqHCkK z9}ADKU0UPJur7|Zsk!^z^N$T$p$)&jHhz1{7}~NReqW7bVq)S_tMW553@?0Aag;17 zDk^wzfN_ppt<=Sf7k_+s$gHEI18R@+NEk5et@_&3=l8RKXMOyBxynkPHJMjd1g?nN zTQ#xx(4j-1y@L!5bLYyk@ySFis|_)=E_>q;5Fo&?Abx+Hgke%kTlJU9ZMnDGzI-WR zIItn{aDc@!TXl8z{eQnnfA29jF*(9-|A(Q`VR!s_&~)gzxz;=1Ms7}9`FH#0FPhwf ze0*$idy{^zS#zU0>xsvLyx0f7N)v9GOxqu^c2?Bx#X*}k-6*zGZ?`>t_RN(l0ZB@m zFJxU|xOAzZhv&eR5L11A&41tR9~@v@;4iPBz_22u^DRFI0~>EpX0VH;>+bmlEQbys z2G3B6UtJBZjE>&6!PV*cIfs8YTvgxP*vK5b+|Sj|ukXyi8#f|i_Ew2T zZ_hh=YN|G9#%byn^Bf6dJC!^8`RCZ4p0+^2;b!^MCRXkV6DNK=S^Vbh+l_U9t4iM8 ziCno&FDBvMO8>+Z7N2=MI&nNNUTfdG_VV)bja6S?1JcnrQGx8&Fkpw zoOn}SRz9S2r+Zh5FQfsnOPraN}*SWx`@ z9O%Hm_s(*lE^Gb&zu_;xy}Pf!WB&X7>G~R-k6(OBeQ-*2>1+*A^Za`*{c^UTH7~38 zuI=GT_?mU#=+YP7zr59rjD%u$mrXUa>*?)HOipIbe0k;d_4SL3pP#Gv{cWwCBX^^XN`GTEZ}0bpSWAE=y`m+ zUs*|s2^8h!?_|Q(L@;`LdowuX<>?*kk!&{4zqew^T1MuE4vuXtEe!R4kE%>ojoHbx zCTi)VWe;AyJb5>~(EIPNuc4PGNS!==`tXLt!yg_VW@l(`Hv2_ z^MCmG(Q)Y?iN+s4Ds+C#+1;ryCFR+fnV?&l7#XUnsyH|}8fMR)-B!J{R>qPk=YHG< z+YAA2@w(4!KRz`2ntgp8UhwCs_p^t3`cIy2O#gOgXTw%g?!8glcq%?ReX|X_Ct=KX zW2f*8BUS;98^6xYbyyvCD*pEA)7+c@7lSKkM}=*aIpErnKL2#f?Mur zJbgYjV&SxD)1Dqmjk&j@;31QcurT8W$7(MxuBN6Y&^U;Ti_3!2*VnYNy>DIIRHRy+ z(Q)*^zrP3c_iNPuwa^UjYHw%%vNWm1$HxbBO%Z4)gMs^Gkl4$rlEZC`+F=a$>rO9e zy$ULLQ`sKdR((0};9&E`O{v~XmM>Q}H5J{rZ{G~t>TQ>DBcqtUecSZAjVE#5yt}(^ ze!I5T=c3QeT^ZA+P1~SMt=9EN~|nlCReyC2?r$#0sDW<+^$^1NKnCF1k> zO|p*IC|X(Ryys82ClvapJS{aU}msr->}zWdc8lv@Sn4evvP8=6DQoMRHg0jfgv-l(chvv4JCbC`!o)bs zB$G*BUq54$K*W5zT2P_@4GEUMz83oPD>F0m#-yWMJ9h6*KGq|twZATL$>H^Eyi!Lb z6&OA@tvJPS@(fF#Z1U@=+RXQBkMs0rUyty4b#}HZ`<_ohkzSX}Pfyc*abu%$PHyhb z+OxAvoxQxeih4aRZc;TU(fG`_r|M{z_PQ9(KYxrrcT8#Bo0Fd2{(j$YzUWWF+5i52 zkDn@`pt>9mShOo}v0LJk z6BCchRsZ;)_~_B23rjqOj~qLuWMd;UZQ3*mn+k)T-d;fwk(PdWd!~e)MYh%7T9z(V z4GIn}d~?I_$kC$*Po3fd-BERqyRfhjG)FCEp4S5!<~`OcJ;N+FYUbU1SLb($H#&vY z4RUXpbR12ZF?;sny1&0V`up8eQdHdfWI7uf7)-LS`N-D()#2pitoZ-0cA`pp=){Q= zL0NXmvSq8D{<>82=ZE0&etGr-NzJjbu^&G^b_bo9B*4{bQSm|H+Pc`)Lgz1UOm^7k z!Tsw?;%3igHbZ8Xgkv3>*gUSUi+wnM{*=Pc&wNdCZV2%4@f8#mfu^i4E_7y}T6Iw` zhT+_t#J09RzV4;9UpjWSn&%|wYp>k6>=vljN^iKcw>tdY`Tf<$)BY$aaecF`;dpcF z=rvZRXFnNctmy3ZJ?L}m?(S343WkP;92^`P-y*i>-96>X^s86ed`GFc_;jK3#s&rs z{c^Ua7I|x>|M~IJ$ZcQC^Yinw7nr+v=G@&S3R-fs?f;+8{$D2d$t$JosN0*c*H3oA z29HOZQs4X)k>N4PWV*8IsMBjz&W{Y*8};JmWY4^h zKOG()b66keW4A_T($uM~-{0Rq{l?hHsL4U$z(i$t(1HF3jvZq=KhO4YpS*P$&+$Il z!%eK*J3P*WGgz2Nx=gzfl-)?>+$*_$_vPso@nnQTFIH;##Q)zT=t~I;8y?tJpx~Zw? zbp3cYFE6fDp{v{UVs{;|us`_VXt%hBr)OhtFYlvAj|$%3vjs&=?yW5oGe7VD|L^cz z>+%DSKVDc9X}mNw%GlT#bYVjJ`FRW7dZjWhFXKJK_42N(tLwvabFBrsk7it77u$Jn z%AP$odRsu7z`d7+u^#W2e_j^>N~@inoIXB27Zy6Rv#_%(Yie>nKR4I;{k^?Y^SrJ8 zco{W6d3kaV>m-{ArrA?IOV#}U`yI4>Q~kY`2$!IcP}7770u|NOhmRa#S+{Q8469PD zTif&3AGy0>#;w4`4d35Ko>|$=U3~KW?c;rS_w!p=8aBI3dcR07>)M)=YnLxs;-DgQ z^68=azq3>|yo6<96i#L*1SB+U_{PN}5c(vLosCV&z+l6TgHf+m@XcDrEiPEsUw{^n#D5xzn(L6fBpXbyZhlbUeGafGByFLY~U-ixM@12olzTxogdVGE8i?qdy78zt+(U5$7?ZyoW>#{cw z*n+aJuR97lcx3Cz=btwgJanr0{dT+2b)oK~Gpx(?`eZDb+}+)O{Q9MJW%(oxnL5?I za&zo|-PvEi{}P)=kx{`rnP_tp7M1C%gWEkN+uAo5%=`TOrc39d7q4F{YiMvpZ_jI8 zzg}O?zD}puMpu`&{_j_DK3S_4)9h;+sz-l+NwaqHaOTX6q7!SQS>qRItTNshqt%3lDm|kVB^tl@#LGEQVk3Z4<2l0FZ}u{G$l1P z@%6Q}1|}v)I)&8>K0WaaSsy36Z{NNOMakGxC%?SBJaNX14!hc42d-ZiU+mUZ;HS7cU;1r0U(Z<0t5*S!MUW1);0MZfwn- z-ZN$SrX@?3Ja}_+GsBJ3URHJ$A08aMqjP3s@^On)dDoBM(?7K`7#l44zvj}>rVzzF zsTmm^H#et0zPQ*ObfRn7`+L2Khucn8EI5*62%1k*_n)V6$8T#EtNx<*`;z6F#Pu86 zcq9EfS~jgPSC?f<&dbv)pAq@>)tPQ(*`*g(1~)D`acynuZS9Ej;tzwm;`UY@ynlcH z4cB=o_P$Aap#lnlqL&v%omlEUeZs6+Q7M}JS#dje?u_|AwRT^obX!}SMeQ$>Hh%eY zZ>8<)Y!)qAWO76Mt*e!V<0Peur(6a#78`PBzbO_>n4Bu4(YX83Z;I)ty!WarKO2kSzS+_q`cd6=%@?l(FxfmDks-!^hO=f z-~Xp+rg6HGv9U0}oXvxt>4&7wD!cVOSanlPT|N2nv0l*j3ff6mS}|M7nR|Ad^J9?+hcpru|fZf(_ea&iJKOZ@%)y|Rss3`6i7DVqud zhG{A@X3RLDs?B&NcixN{9KyoFKYsmM6=VDG!a`@GN}blpXG=>;6hyct&Yan~|Np<; zM^x5aQqbL8{ZUC_syN@u=x3i?x;Tx)L2Ea9Zcj3Z?KjO5~*2e9v>X_iQ0klPE(c;CY_w=6%+FA5e zY2lKFH>bDn0gVgj-B}pByKINvT#kTqH+L4RSABWWXqJ0R!Nf%5{5)IdswykD9*M>a z7XtKFH6(br$Nc{;Z)|tx?o6Y{GYmI9U$*q*scU9=F=n+YT6|lxt{z$)zJ5dP?=rtN zDvFAXN)tJ@W?g+W#ftN)!gZMqDG%mPm=N$JA}vkr-QC^Cd3VU!R50-K^Y7TTE9u-E zOHhXUHtW*W9Mx4Got>QqMn;Dwsd|I<=Y!^y-rd<*P+s1?eY<(MzmuFw+~irN*+u%P za{b4*&Yv*hKqs-O&v8USIqB+lH-MTi34D)f3lRAGfmzG&&Wp zCK-Hl=6TP_GcKxd-v9e!qU!wh@%$zk3^BV@q}MIs+q7vDsNGR;+qU{!NOtw^^3D5& z54<~jF>vkKsnSc5%m4oUn`*OSs#a*z-o3VO-o8!D$nbb57S-@YXKBd~T?Ok#Ro$nt zaVuhXn=u@?as@PxALEfwQDIRR*m|#$b+PYkCV#g)y$g%k4U$|wUix5X$C?=a?3qr> zj1@OP2T9L9GA+)_+HH!)tiQkC@AvTab-lhWmT|+KNtc)VC;$BP^u?8x!l3oPML$!W z{Fs-7t`2+fv7)25_vqEt;i-LZZ*FG)`|IoBMXucp26I1~=idYMGdg;Dj@;Oo+`V^M ziAT#3h81CJrHqV?AHI0eao~W%j~_oC+|J+M+Sth0)YRk^^7N<3q#XyAEKzyl$$H%T z)|O41oUX14-C3;i=j-)&P`-V%blJ4EYu1480Y32Q>FJ46r>d6Mdp&x2dHJ3Hy7SMs zx3{}bbhYBq*3jV4kKY%vVr}j38SM-S%%%MOi@LXTUD{XMb$@ziCuh2YZsaBxH9h%+ zd!{cptgh0UpkG*?-uY~InPI60=f#U>egug-Efl!EKHmNOJlma&Ya1IGzt0UcJ$drL zt*r;Xykz}-tUvvyK8r!wn}~DXGw03g1GNPAS95;+`0>M+FFHmKR8PqX3k&Djs;RY| zRu<_#3c6jR{7jIjVVl&Eix&msf+CNDDq;Koe-kCCvWfDzQL zi2b>10W&*aON5Tn&u9(UT7YA_%ik|pzrMfh?JY%PW8rpwdA)D5s=vQ;-JEuI!SdzD zRg21BTwwhE?(X3W3!M{lb9j>K0+rK-0d1bJ=->z*2Z*OmRkBE>^Ke^iD(zk=n ztgk;m6D`eTJ}_DROfrK(=52BP8CMqW>5;dWd;V$jUHzCH4Q{0 zS@fzM?E?)-S3@9Kc2Rcy?)CK{q3R;wQ=kDE$+j67xHq8p)+u0f# zz9yn^$r6=2`)Z|MUt9b5+vf@!Q1#Qy#>>=yym|3rWxcpP9PaM!pq)jDTMK?nTe(v6 zm`88T?$Xz7@9yq))(~0bJKKzdpTE7inYsMVty@xi?Uav~te8=BT~1CeVsDixs2Ts` z$BzTYkFzs;HUce-KX&XGsOb6iHe8YCQO5IQeyQ(>T*Kv&|!YbPrr{^;*^Z^=i07 zx7ZqqDIQ0PG(`kgfa>I9eX^%L=N&t8B;o6;tFGrBfBt!6Yj*g?k8eIbc+c;lCogbd z%7(CYDZd{-ia4kq8Wgd_p=sSZJu&^bo|l*2ajKp?m*!nq^O?8ci$(z7sp2V`!s>oU zR)??OQ1LN|;f!$5jmfK)FJFGep)-J&jSak>>{!1%|3r_L6)RRKdEVMv{oQT4UaZL# z=c|eW9H3(?x8&Ru%FN94@bf$N;o;%Je}8@!g|lql5FS0thE?_FrOS48~H}+H-|M~Oh z!>6a-H*VivT>bssj-sbr3^#Y&(+pnb5FReRJ^#Mj-m0$#IX4VGRM>E^Fv(aHFr=TG zbFluWa%yyR^p2f7r&=&?OglSENWSUn>TvhJzrGeeJj4oW8-tn!XJ?sSTdET|*><5YhA3b{Xge#hhOY1~`#?>xO_o+u-Ty&_@wQXtBN^4*^ zur78tXjl$(AoAxjj|ZQB78DgVZQs8AQmF$&82{sEzT507jSQ06R{vMz+#9rQgVKR4 zFOh${U%!5R_`(H&tyx!{R)?+q@OJzCQ#JcVj^5ex;Js?^Ov%-(msSV{8y1&`?>n`7 z=~C723)XoUZMk>v9_Xf{J$v_pn))+iR&C3@opgDbZ^q3{s^8w;Zr`)VW~$chmCft- z{p$L>W$KiixTRjA@A6l6aZcKlbY_O(iunC@VQZsWA3R7%NlPngZUr5#m@4;t(}82h z+N#q%bNt-Q9jdxN;MHLNmb+s^itXl>i%w0d(HEjlR8d&8r51Bhxv~A35^GIVB}!=6Ufmv(5S0`Q?uM`uf`5 z@^ZW&Y_d;#(v;bgCr>VTabe+~OV2D-R88O_wDI8>hS%Y z&dogr*RHMEck=nMYj$>aAHIJ-Z(IH@rghRXLsL`H{q_I%Iqmg)`{qs2-#>p!Zg0&F zU-daSDConNm%*SxtJ2rkuAVyhvqMlhAv;_9%eQZO@xc%0DxzJ!Rmlpc-pL(IQCl)5u6q)r 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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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 R0s{jBgQu&X%Q~loCIGPH?#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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 JS?83{1OPXGyaNCL 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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 T@P1DQ1_lOCS3j3^P6 Date: Thu, 18 Aug 2016 11:11:42 +0200 Subject: [PATCH 13/33] 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 14/33] 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 15/33] 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 16/33] 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 17/33] 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 18/33] 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 19/33] 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 20/33] 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 21/33] 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 22/33] 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 387bd772e1a6f24be2239b910979c0a309425400 Mon Sep 17 00:00:00 2001 From: Toni Date: Thu, 18 Aug 2016 13:06:16 +0200 Subject: [PATCH 23/33] initial commit for the AMJ60 PCB --- keyboards/amj60/Makefile | 70 ++++++++ keyboards/amj60/amj60.c | 30 ++++ keyboards/amj60/amj60.h | 153 ++++++++++++++++++ keyboards/amj60/config.h | 94 +++++++++++ .../amj60/keymaps/iso_split_rshift/Makefile | 23 +++ .../amj60/keymaps/iso_split_rshift/build.sh | 42 +++++ .../amj60/keymaps/iso_split_rshift/keymap.c | 147 +++++++++++++++++ .../keymaps/iso_split_rshift/updatemerge.sh | 4 + 8 files changed, 563 insertions(+) create mode 100644 keyboards/amj60/Makefile create mode 100644 keyboards/amj60/amj60.c create mode 100644 keyboards/amj60/amj60.h create mode 100644 keyboards/amj60/config.h create mode 100644 keyboards/amj60/keymaps/iso_split_rshift/Makefile create mode 100755 keyboards/amj60/keymaps/iso_split_rshift/build.sh create mode 100644 keyboards/amj60/keymaps/iso_split_rshift/keymap.c create mode 100755 keyboards/amj60/keymaps/iso_split_rshift/updatemerge.sh diff --git a/keyboards/amj60/Makefile b/keyboards/amj60/Makefile new file mode 100644 index 0000000000..1f695aa4d8 --- /dev/null +++ b/keyboards/amj60/Makefile @@ -0,0 +1,70 @@ + +# 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 +# comment out to disable the options. +# +BOOTMAGIC_ENABLE ?= no # 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) +COMMAND_ENABLE ?= yes # Commands for debug and configuration +NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +RGBLIGHT_ENABLE ?= yes # Enable keyboard underlight functionality (+4870) +BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality (+1150) +MIDI_ENABLE ?= no # MIDI controls +AUDIO_ENABLE ?= no +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID + +ifndef QUANTUM_DIR + include ../../Makefile +endif diff --git a/keyboards/amj60/amj60.c b/keyboards/amj60/amj60.c new file mode 100644 index 0000000000..993a5917db --- /dev/null +++ b/keyboards/amj60/amj60.c @@ -0,0 +1,30 @@ +#include "amj60.h" +#include "led.h" + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + matrix_init_user(); + led_init_ports(); +}; + +void matrix_scan_kb(void) { + // put your looping keyboard code here + // runs every cycle (a lot) + matrix_scan_user(); +}; + +void led_init_ports(void) { + // * Set our LED pins as output + DDRB |= (1<<2); +} + +void led_set_kb(uint8_t usb_led) { + if (usb_led & (1< + +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 0x6066 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Han Chen +#define PRODUCT AMJ60 +#define DESCRIPTION qmk port of AMJ60 PCB + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +// ROWS: Top to bottom, COLS: Left to right + +#define MATRIX_ROW_PINS { F7, F6, F5, F4, D5} +#define MATRIX_COL_PINS { F1, F0, E6, C7, C6, B0, D4, B1, B7, B5, B4, D7, D6, B3} +#define UNUSED_PINS + +#define BACKLIGHT_PIN B6 + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCING_DELAY 5 + +/* 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 + +/* key combination for command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* Backlight configuration + */ +#define BACKLIGHT_LEVELS 4 + +/* Underlight configuration + */ + +#define RGB_DI_PIN E2 +#define RGBLIGHT_TIMER +#define RGBLED_NUM 8 // Number of LEDs +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 17 +#define RGBLIGHT_VAL_STEP 17 + +/* + * 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/amj60/keymaps/iso_split_rshift/Makefile b/keyboards/amj60/keymaps/iso_split_rshift/Makefile new file mode 100644 index 0000000000..0d8416bbce --- /dev/null +++ b/keyboards/amj60/keymaps/iso_split_rshift/Makefile @@ -0,0 +1,23 @@ +# 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 = no # Mouse keys(+4700) +EXTRAKEY_ENABLE = no # 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. + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif diff --git a/keyboards/amj60/keymaps/iso_split_rshift/build.sh b/keyboards/amj60/keymaps/iso_split_rshift/build.sh new file mode 100755 index 0000000000..6b4b4568f5 --- /dev/null +++ b/keyboards/amj60/keymaps/iso_split_rshift/build.sh @@ -0,0 +1,42 @@ +#!/bin/bash +# adjust for cpu +# -j 16 gave best result on a hyperthreaded quad core core i7 + +LIMIT=10 +THREADS="-j 16" +KMAP=iso_split_rshift + +echo "We need sudo later" +sudo ls 2>&1 /dev/null + +function wait_bootloader { + echo "Waiting for Bootloader..." + local STARTTIME=$(date +"%s") + local REMIND=0 + local EXEC=dfu-programmer + local TARGET=atmega32u4 + while true + do + sudo $EXEC $TARGET get > /dev/null 2>&1 + [ $? -eq 0 ] && break + ENDTIME=$(date +"%s") + DURATION=$(($ENDTIME-$STARTTIME)) + if [ $REMIND -eq 0 -a $DURATION -gt $LIMIT ] + then + echo "Did you forget to press the reset button?" + REMIND=1 + fi + sleep 1 + done +} +make clean +make KEYMAP=${KMAP} ${THREADS} +if [[ $? -eq 0 ]] +then + echo "please trigger flashing!" + wait_bootloader + sudo make KEYMAP=${KMAP} dfu ${THREADS} +else + echo "make failed" + exit 77 +fi diff --git a/keyboards/amj60/keymaps/iso_split_rshift/keymap.c b/keyboards/amj60/keymaps/iso_split_rshift/keymap.c new file mode 100644 index 0000000000..60fb0bfb0b --- /dev/null +++ b/keyboards/amj60/keymaps/iso_split_rshift/keymap.c @@ -0,0 +1,147 @@ +// 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 "amj60.h" + +// 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 _DEF 0 +#define _SPC 1 +#define _TAB 2 +#define _SFX 3 + +// dual-role shortcuts +#define TABDUAL LT(_TAB, KC_TAB) +#define CAPSDUAL CTL_T(KC_ESC) +#define SPACEDUAL LT(_SPC, KC_SPACE) +#define ENTERDUAL CTL_T(KC_ENT) +// arrow cluster duality bottom right corner +#define ARRLEFT ALT_T(KC_LEFT) +#define ARRDOWN GUI_T(KC_DOWN) +#define ARRUP SFT_T(KC_UP) +#define ARRRIGHT CTL_T(KC_RIGHT) +// german brackets +#define GER_CUR_L RALT(KC_7) // [ +#define GER_CUR_R RALT(KC_0) // ] +#define GER_PAR_L LSFT(KC_8) // ( +#define GER_PAR_R LSFT(KC_9) // ) +#define GER_ANG_L KC_NUBS // < +#define GER_ANG_R LSFT(KC_NUBS) // > +#define GER_BRC_L RALT(KC_8) // [ +#define GER_BRC_R RALT(KC_9) // ] + +// increase readability +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _DEF: Default Layer + * ,-----------------------------------------------------------. + * |Grv| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | + * |-----------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | Tab is Fn1 + * |-----------------------------------------------------------| + * |Ctrl | A| S| D| F| G| H| J| K| L| ;| '| Return | + * |-----------------------------------------------------------| + * |Sft | < | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn2| RShift is UP + * |-----------------------------------------------------------| + * |Ctrl|Win |Alt | Space/Fn0 |Alt |Win |Menu|RCtl| Gui Menu, RCtrl is + * `-----------------------------------------------------------' LEFT DWN RIGHT + */ + [_DEF] = KEYMAP_ISO_SPLITRSHIFT( + KC_GRV, 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_BSPC, \ + TABDUAL, 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, \ + CAPSDUAL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, ENTERDUAL, \ + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, ARRUP, TG(_SFX), \ + KC_LCTL, KC_LGUI, KC_LALT, SPACEDUAL, KC_RALT, ARRLEFT, ARRDOWN, ARRRIGHT), + + /* Keymap 1: F-and-vim Layer, modified with Space (by holding space) + * ,-----------------------------------------------------------. + * |PrSc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete| + * |-----------------------------------------------------------| + * | |Paus| Up| [ | ] | | | | ( | ) | | | | | + * |-----------------------------------------------------------| + * | |Lft|Dwn|Rgt| | |Left|Down|Right|Up| | | PLAY | + * |-----------------------------------------------------------| + * | | | | | < | > | |M0 | | | | | Vol+ | | + * |-----------------------------------------------------------| + * | | | | |Alt |Prev|Vol-|Next| + * `-----------------------------------------------------------' + */ + [_SPC] = KEYMAP_ISO_SPLITRSHIFT( + KC_PSCR, 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_DEL, \ + _______, KC_PAUS, KC_UP, GER_BRC_L, GER_BRC_R, _______, _______, GER_PAR_L, GER_PAR_R, _______, _______, _______, _______, _______, \ + _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, KC_MPLY, \ + _______, _______, _______, _______, GER_ANG_L, GER_ANG_R, KC_SPACE, M(0), _______, _______, _______, _______, KC_VOLU, _______, \ + _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT), + + /* Keymap 2: Tab Layer w/ vim pageup, modified with Tab (by holding tab) + * ,-----------------------------------------------------------. + * |WAKE| | | | | | | | | | | | |Insert| TAB+GRC = WAKE + * |-----------------------------------------------------------| + * | | | | | | | | | { | } | | | | | + * |-----------------------------------------------------------| + * | | | | | | |Pos1|PgDn|PgUp|End| | |Retrn | + * |-----------------------------------------------------------| + * | | | | | | | |AF2| | | | | PgUp | | + * |-----------------------------------------------------------| + * | | | | |Alt |Pos1|PgDn|End | + * `-----------------------------------------------------------' + */ + [_TAB] = KEYMAP_ISO_SPLITRSHIFT( + KC_WAKE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, \ + _______, _______, _______, _______, _______, _______, _______, GER_CUR_L, GER_CUR_R, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______, _______, KC_ENT, \ + _______, _______, _______, _______, _______, _______, _______, M(1), _______, _______, _______, _______, KC_PGUP, _______, \ + _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END), + + /* Keymap 3: Split right shift Numpad toggle Layer (by tapping the split rshift key) + * ,-----------------------------------------------------------. + * |RSET| | | | | | | 7| 8| 9| | | |Backsp | + * |-----------------------------------------------------------| + * | | | | | | | | 4 | 5 | 6 | | | | \ | + * |-----------------------------------------------------------| + * | | L | L | | | | | 1 | 2 | 3 | | | Return | + * |-----------------------------------------------------------| + * | | | L | L | L | L | L | L | | 0 | | /| Up | | All "L"s represent + * |-----------------------------------------------------------| LED controlling + * |Ctrl|Win |Alt | |Alt |Left|Down|Right| + * `-----------------------------------------------------------' + */ + [_SFX] = KEYMAP_ISO_SPLITRSHIFT( + RESET, _______, _______, _______, _______, _______, _______, KC_7, KC_8, KC_9, _______, _______, _______, KC_BSPC, \ + _______, _______, _______, _______, _______, _______, _______, KC_4, KC_5, KC_6, _______, _______, _______, KC_BSLS, \ + _______, F(2), F(3), _______, _______, _______, _______, KC_1, KC_2, KC_3, _______, _______, XXXXXXX, KC_ENT, \ + _______, F(4), F(5), F(6), F(7), F(8), F(9), _______, _______, KC_0, _______, KC_SLSH, KC_UP, _______, \ + _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT), +}; + +enum function_id { + LAUNCH, + RGBLED_TOGGLE, +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_FUNCTION(LAUNCH), + [10] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_ENT), +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + return (record->event.pressed ? + MACRO( D(RALT), T(SPC), U(RALT), END ) + :MACRO( END )); + break; + case 1: + return (record->event.pressed ? + MACRO( D(LALT), T(F2), U(LALT), END ) + :MACRO( END )); + break; + } + return MACRO_NONE; +}; diff --git a/keyboards/amj60/keymaps/iso_split_rshift/updatemerge.sh b/keyboards/amj60/keymaps/iso_split_rshift/updatemerge.sh new file mode 100755 index 0000000000..da5457e195 --- /dev/null +++ b/keyboards/amj60/keymaps/iso_split_rshift/updatemerge.sh @@ -0,0 +1,4 @@ +#!/bin/bash +git checkout amj60 # gets you on branch amj60 +git fetch origin # gets you up to date with origin +git merge origin/master From 068e76bbf048236aa4b48adefe979024b39b6a65 Mon Sep 17 00:00:00 2001 From: Toni Date: Thu, 18 Aug 2016 13:10:02 +0200 Subject: [PATCH 24/33] uniform whitespace --- keyboards/amj60/amj60.h | 90 ++++++++++++++++++++--------------------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/keyboards/amj60/amj60.h b/keyboards/amj60/amj60.h index f966a2ba01..a0cb473310 100644 --- a/keyboards/amj60/amj60.h +++ b/keyboards/amj60/amj60.h @@ -21,17 +21,17 @@ */ #define KEYMAP( \ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k49,\ - 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, \ - k40, k41, k42, k45, k4a, k4b, k4c, k4d \ + 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, \ + k40, k41, k42, k45, k4a, k4b, k4c, k4d \ ) \ { \ - {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \ - {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}, \ - {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d} \ + {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \ + {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}, \ + {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d} \ } /* @@ -50,17 +50,17 @@ */ #define KEYMAP_ANSI( \ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ - 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, k2d, \ - k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, \ - k40, k41, k42, k45, k4a, k4b, k4c, k4d \ + 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, k2d, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, \ + k40, k41, k42, k45, k4a, k4b, k4c, k4d \ ) \ { \ - {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \ - {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, XXX, k2d}, \ - {k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d}, \ - {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d} \ + {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \ + {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, XXX, k2d}, \ + {k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d}, \ + {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d} \ } /* AMJ60 HHKB matrix layout @@ -79,17 +79,17 @@ #define KEYMAP_HHKB( \ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k49, \ - 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, k2d, \ - k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3c, \ - k40, k41, k42, k45, k4a, k4b, k4c, k4d \ + 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, k2d, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3c, \ + k40, k41, k42, k45, k4a, k4b, k4c, k4d \ ) \ { \ - {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \ - {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, XXX, k2d}, \ - {k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d}, \ - {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d} \ + {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \ + {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, XXX, k2d}, \ + {k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d}, \ + {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d} \ } /* ISO @@ -107,17 +107,17 @@ */ #define KEYMAP_ISO( \ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ - 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, k3d, \ - k40, k41, k42, k45, k4a, k4b, k4c, k4d \ + 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, k3d, \ + k40, k41, k42, k45, k4a, k4b, k4c, k4d \ ) \ { \ - {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \ - {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, XXX}, \ - {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d} \ + {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \ + {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, XXX}, \ + {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d} \ } /* ISO w/ split right shift key matrix layout * ,-----------------------------------------------------------. @@ -134,17 +134,17 @@ */ #define KEYMAP_ISO_SPLITRSHIFT( \ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ - 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, k3d, k3c, \ - k40, k41, k42, k45, k4a, k4b, k4c, k4d \ + 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, k3d, k3c, \ + k40, k41, k42, k45, k4a, k4b, k4c, k4d \ ) \ { \ - {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \ - {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}, \ - {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d} \ + {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \ + {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}, \ + {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d} \ } void matrix_init_user(void); From 0d9d4b8658e27f54188bfd9952b43b384f53a257 Mon Sep 17 00:00:00 2001 From: Gergely Nagy Date: Thu, 18 Aug 2016 13:20:25 +0200 Subject: [PATCH 25/33] 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 0edf7c7cad356e85cae2d91b8811216006f0be14 Mon Sep 17 00:00:00 2001 From: Toni Date: Thu, 18 Aug 2016 15:22:34 +0200 Subject: [PATCH 26/33] first attempt at documentation for the amj60 board --- keyboards/amj60/readme.md | 57 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 keyboards/amj60/readme.md diff --git a/keyboards/amj60/readme.md b/keyboards/amj60/readme.md new file mode 100644 index 0000000000..6c9c634b19 --- /dev/null +++ b/keyboards/amj60/readme.md @@ -0,0 +1,57 @@ +AMJ60 keyboard firmware +====================== +DIY/Assembled compact 60% keyboard. + +## Quantum MK Firmware + +For the full Quantum feature list, see [the parent readme.md](/readme.md). + +## Building + +Download or clone the whole firmware and navigate to the keyboards/amj60 +folder. Once your dev env is setup, you'll be able to type `make` to generate +your .hex - you can then use `make dfu` to program your PCB once you hit the +reset button. + +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 file +named `.c` in the keymaps folder, and see keymap document (you can find +in top readme.md) and existent keymap files. + +To build the firmware binary hex file with a keymap just do `make` with +`KEYMAP` option like: +`` +$ make KEYMAP=[default|jack|] +`` +Keymaps follow the format **__\.c__** and are stored in the `keymaps` +folder. + +## Variations +KEYMAP macros for the following layouts are available: + +* default, for all the available, possible keys +* ANSI, for 60% ANSI keyboard +* ISO +* ISO w/ split right shift key +* HHKB + +Remark: all but "ISO w/ split tight shift key" are untested and were done to the best of my knowledge. + +### Original tmk firmware +The original firmware that was used to port to qmk can be found [here](https://github.com/AMJKeyboard/AMJ60). + +## Further information +Since information and documentation for this board are sparse, (at least for non-chinese speaking ppl) here is everything that could be found + +* [geekhack discussion](https://geekhack.org/index.php?topic=53070.0) +* [chinese discussion](https://www.v2ex.com/t/161887) +* Board has [dedicated pinouts](https://i.imgur.com/D0sWhyh.jpg?1) for a bluetooth module +* has pins for external power [picture](https://i.imgur.com/00VrtIp.jpg?1). +* most information comes from [reddit](https://www.reddit.com/r/MechanicalKeyboards/comments/32oonr/gh60_pcb_for_your_custom_keyboard/) From 0e86c852412030eaba16b2eaab65a6827d150119 Mon Sep 17 00:00:00 2001 From: Toni Date: Thu, 18 Aug 2016 15:30:52 +0200 Subject: [PATCH 27/33] amj60 variant of the readme --- .../amj60/keymaps/iso_split_rshift/readme.md | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 keyboards/amj60/keymaps/iso_split_rshift/readme.md diff --git a/keyboards/amj60/keymaps/iso_split_rshift/readme.md b/keyboards/amj60/keymaps/iso_split_rshift/readme.md new file mode 100644 index 0000000000..2113d93e4d --- /dev/null +++ b/keyboards/amj60/keymaps/iso_split_rshift/readme.md @@ -0,0 +1,30 @@ +toneman77's custom spacefn Layout +===================== + +##Quantum MK Firmware +For the full Quantum feature list, see the parent readme.md. + +# Features +* heavily modified ISO (!) layout with split right shift key +* spaceFn +* Dual-Role keys: +* + | Original key | when tapped | when held | + | ---------------- | ------------- | ------------- | + | Space | Space | layer change | + | Caps lock | Escape | Control | + | Tab | Tab | layer change | + | Enter | Enter | Control | + +* vim-style arrow keys on hjkl (spacefn layer) +* corresponding Home/PgDn/PgUp/End on hjkl (tab layer) +* bonus arrow keys in the bottom right corner on Alt/Win/Menu/rCtrl/Shift +* more bonus arrow keys on wasd (spacefn layer) +* media keys prev/next/play/vol+/vol- (spacefn layer) +* firmware bootloader button +* additional brackets that only work in german layout due to horrible placement +in the default qwertz layout + + +### Additional Credits +* visualization of the layers [here](http://www.keyboard-layout-editor.com/#/gists/aba4e4396459ede85bc66a22cee88e48) (without the LED keys) From fe906538861c5ee30a75d6f955e611dd38d93977 Mon Sep 17 00:00:00 2001 From: Toni Date: Thu, 18 Aug 2016 15:32:06 +0200 Subject: [PATCH 28/33] smyll typo fixed --- keyboards/amj60/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/amj60/readme.md b/keyboards/amj60/readme.md index 6c9c634b19..0896134e0c 100644 --- a/keyboards/amj60/readme.md +++ b/keyboards/amj60/readme.md @@ -42,7 +42,7 @@ KEYMAP macros for the following layouts are available: * ISO w/ split right shift key * HHKB -Remark: all but "ISO w/ split tight shift key" are untested and were done to the best of my knowledge. +Remark: all but "ISO w/ split right shift key" are untested and were done to the best of my knowledge. ### Original tmk firmware The original firmware that was used to port to qmk can be found [here](https://github.com/AMJKeyboard/AMJ60). From 21dc8381d1d428f7b0f6eb4ebe5c6536e3bd2b57 Mon Sep 17 00:00:00 2001 From: Toni Date: Thu, 18 Aug 2016 15:57:17 +0200 Subject: [PATCH 29/33] made a correct default KEYMAP. moved the old one to KEYMAP_ANSI fixed all layouts that were referencing KEYMAP to KEYMAP_ANSI whitespace prettyfying --- keyboards/satan/keymaps/default/keymap.c | 4 +- keyboards/satan/keymaps/denolfe/keymap.c | 36 ++++++++-------- keyboards/satan/keymaps/poker/keymap.c | 46 ++++++++++----------- keyboards/satan/keymaps/stanleylai/keymap.c | 22 +++++----- keyboards/satan/satan.h | 37 ++++++++++++++--- 5 files changed, 86 insertions(+), 59 deletions(-) diff --git a/keyboards/satan/keymaps/default/keymap.c b/keyboards/satan/keymaps/default/keymap.c index 3806137e78..2bf49d2e65 100644 --- a/keyboards/satan/keymaps/default/keymap.c +++ b/keyboards/satan/keymaps/default/keymap.c @@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Ctrl|Gui |Alt | Space |Alt |Gui |FN |Ctrl | * `-----------------------------------------------------------' */ -[_BL] = KEYMAP( +[_BL] = KEYMAP_ANSI( F(0), 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_BSPC, \ 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, \ @@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | * `-----------------------------------------------------------' */ -[_FL] = KEYMAP( +[_FL] = KEYMAP_ANSI( #ifdef RGBLIGHT_ENABLE KC_GRV, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RESET, \ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, BL_DEC,BL_INC, BL_TOGG, \ diff --git a/keyboards/satan/keymaps/denolfe/keymap.c b/keyboards/satan/keymaps/denolfe/keymap.c index 2f6c8d8f4f..5f189d78a3 100644 --- a/keyboards/satan/keymaps/denolfe/keymap.c +++ b/keyboards/satan/keymaps/denolfe/keymap.c @@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Ctrl|Gui |Alt | Space |Alt |Gui |FN |Ctrl | * `-----------------------------------------------------------' */ -[_BL] = KEYMAP( +[_BL] = KEYMAP_ANSI( F(0), 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_BSPC, \ 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, \ MO(_FL), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \ @@ -49,27 +49,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | * `-----------------------------------------------------------' */ -[_FL] = KEYMAP( +[_FL] = KEYMAP_ANSI( #ifdef RGBLIGHT_ENABLE - KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, \ - KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_INC, BL_TOGG, \ - 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, F(1), F(2), F(3), F(4), F(5), F(6), F(7), F(8), KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_INC, BL_TOGG, \ + 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, F(1), F(2), F(3), F(4), F(5), F(6), F(7), F(8), KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), #else - 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_DEL, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, KC_PGUP, KC_TRNS, KC_END, KC_MPRV, KC_MNXT, KC_MPLY, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, KC_HOME, LCTL(KC_LEFT), LCTL(KC_END), LCTL(KC_RIGHT), KC_TRNS, RESET, \ - KC_TRNS, KC_TRNS, F(9), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + 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_DEL, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, KC_PGUP, KC_TRNS, KC_END, KC_MPRV, KC_MNXT, KC_MPLY, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, KC_HOME, LCTL(KC_LEFT), LCTL(KC_END), LCTL(KC_RIGHT), KC_TRNS, RESET, \ + KC_TRNS, KC_TRNS, F(9), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), #endif -[_SL] = 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_DEL, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, KC_PGUP, KC_TRNS, LSFT(KC_END), KC_MPRV, KC_MNXT, KC_MPLY, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, LSFT(KC_LEFT), LSFT(KC_DOWN), LSFT(KC_UP), LSFT(KC_RIGHT), KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, LSFT(KC_HOME), LCTL(LSFT(KC_LEFT)), LCTL(LSFT(KC_END)), LCTL(LSFT(KC_RIGHT)), KC_TRNS, RESET, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +[_SL] = KEYMAP_ANSI( + 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_DEL, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, KC_PGUP, KC_TRNS, LSFT(KC_END), KC_MPRV, KC_MNXT, KC_MPLY, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, LSFT(KC_LEFT), LSFT(KC_DOWN), LSFT(KC_UP), LSFT(KC_RIGHT), KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, LSFT(KC_HOME), LCTL(LSFT(KC_LEFT)), LCTL(LSFT(KC_END)), LCTL(LSFT(KC_RIGHT)), KC_TRNS, RESET, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), }; enum function_id { diff --git a/keyboards/satan/keymaps/poker/keymap.c b/keyboards/satan/keymaps/poker/keymap.c index 8181955cf9..9da7d29b78 100644 --- a/keyboards/satan/keymaps/poker/keymap.c +++ b/keyboards/satan/keymaps/poker/keymap.c @@ -25,12 +25,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Ctrl|Gui |Alt | Space |Alt |Gui |FN |Ctrl | * `-----------------------------------------------------------' */ -[_BL] = KEYMAP( - F(0), 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_BSPC, \ - 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, \ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, \ - KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT, MO(_RL), MO(_FL), KC_RCTL), +[_BL] = KEYMAP_ANSI( + F(0), 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_BSPC, \ + 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \ + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_RL), MO(_FL), KC_RCTL), /* Keymap _FL: Function Layer * ,-----------------------------------------------------------. @@ -45,12 +45,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | * `-----------------------------------------------------------' */ -[_FL] = 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_DEL, \ - KC_TRNS,KC_TRNS, KC_UP, KC_TRNS,KC_TRNS,KC_TRNS, KC_CALC,KC_TRNS,KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, \ - KC_TRNS,KC_LEFT,KC_DOWN,KC_RGHT,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_APP, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, KC_TRNS, \ - KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +[_FL] = KEYMAP_ANSI( + 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_DEL, \ + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, \ + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_APP, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), /* Keymap _RL: Function Layer * ,-----------------------------------------------------------. @@ -65,19 +65,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | * `-----------------------------------------------------------' */ -[_RL] = KEYMAP( +[_RL] = KEYMAP_ANSI( #ifdef RGBLIGHT_ENABLE - KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, \ - KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_INC, BL_TOGG, \ - 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, RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_INC, BL_TOGG, \ + 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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), #else - KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, \ - KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_INC, BL_TOGG, \ - 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_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_INC, BL_TOGG, \ + 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), #endif }; diff --git a/keyboards/satan/keymaps/stanleylai/keymap.c b/keyboards/satan/keymaps/stanleylai/keymap.c index 623427e97c..979c122e55 100644 --- a/keyboards/satan/keymaps/stanleylai/keymap.c +++ b/keyboards/satan/keymaps/stanleylai/keymap.c @@ -26,25 +26,25 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Function layer [_FL] = KEYMAP_HHKB( - 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_DEL, KC_NO, \ - KC_NO, KC_MPRV, KC_UP, KC_MNXT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS, \ - KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ - KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, LT(_RGBL, KC_PGUP), KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, KC_HOME, KC_PGDN, KC_END), + 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_DEL, KC_NO, \ + KC_NO, KC_MPRV, KC_UP, KC_MNXT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS, \ + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ + KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, LT(_RGBL, KC_PGUP), KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, KC_HOME, KC_PGDN, KC_END), // RGB Layer [_RGBL] = KEYMAP_HHKB( #ifdef RGBLIGHT_ENABLE RESET, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ - KC_NO, BL_TOGG, BL_STEP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ - KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_NO, KC_NO, KC_TRNS, KC_TRNS,\ + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ + KC_NO, BL_TOGG, BL_STEP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_NO, KC_NO, KC_TRNS, KC_TRNS, \ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), #else RESET, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ - KC_NO, BL_TOGG, BL_STEP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ - KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS,\ + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ + KC_NO, BL_TOGG, BL_STEP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, \ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), #endif }; diff --git a/keyboards/satan/satan.h b/keyboards/satan/satan.h index 33a10292c4..f3cbd5305e 100644 --- a/keyboards/satan/satan.h +++ b/keyboards/satan/satan.h @@ -6,15 +6,15 @@ // readability #define XXX KC_NO -/* Satan GH60 matrix layout +/* Satan GH60 matrix layout (3c is right of 3d, 3d is shift) * ,-----------------------------------------------------------. - * | 00 |01| 02| 03| 04| 05| 06| 07| 08| 09| 0a| 0b| 0c| 0d | + * | 00 |01| 02| 03| 04| 05| 06| 07| 08| 09| 0a| 0b| 0c| 0d| 49| * |-----------------------------------------------------------| * | 10 | 11| 12| 13| 14| 15| 16| 17| 18| 19| 1a| 1b| 1c| 1d | * |-----------------------------------------------------------| - * | 20 | 21| 22| 23| 24| 25| 26| 27| 28| 29| 2a| 2b| 2d | + * | 20 | 21| 22| 23| 24| 25| 26| 27| 28| 29| 2a| 2b| 2c|2d | * |-----------------------------------------------------------| - * | 30 | 32| 33| 34| 35| 36| 37| 38| 39| 3a| 3b| 3d | + * | 30 | 31| 32| 33| 34| 35| 36| 37| 38| 39| 3a| 3b| 3d | 3c | * |-----------------------------------------------------------| * | 40 | 41 | 42 | 45 | 4a | 4b | 4c | 4d | * `-----------------------------------------------------------' @@ -22,10 +22,37 @@ // The first section contains all of the arguments // The second converts the arguments into a two-dimensional array #define KEYMAP( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k49,\ + 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, k3d, k3c, \ + k40, k41, k42, k45, k4a, k4b, k4c, k4d \ +) \ +{ \ + {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \ + {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, XXX, k2d}, \ + {k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d}, \ + {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d} \ +} +/* Satan GH60 ANSI layout + * ,-----------------------------------------------------------. + * | 00 |01| 02| 03| 04| 05| 06| 07| 08| 09| 0a| 0b| 0c| 0d | + * |-----------------------------------------------------------| + * | 10 | 11| 12| 13| 14| 15| 16| 17| 18| 19| 1a| 1b| 1c| 1d | + * |-----------------------------------------------------------| + * | 20 | 21| 22| 23| 24| 25| 26| 27| 28| 29| 2a| 2b| 2d | + * |-----------------------------------------------------------| + * | 30 | 32| 33| 34| 35| 36| 37| 38| 39| 3a| 3b| 3d | + * |-----------------------------------------------------------| + * | 40 | 41 | 42 | 45 | 4a | 4b | 4c | 4d | + * `-----------------------------------------------------------' + */ +#define KEYMAP_ANSI( \ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ 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, k2d, \ - k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, \ k40, k41, k42, k45, k4a, k4b, k4c, k4d \ ) \ { \ From a5e6da7aa8173bb4cac8569d01b64ea2839474af Mon Sep 17 00:00:00 2001 From: Damien Date: Thu, 18 Aug 2016 22:25:13 +0200 Subject: [PATCH 30/33] 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 31/33] 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) From bc0bd11430d09423208d5df17dec21e64854cb9a Mon Sep 17 00:00:00 2001 From: Toni Date: Fri, 19 Aug 2016 10:24:48 +0200 Subject: [PATCH 32/33] forgot media keys --- keyboards/amj60/keymaps/iso_split_rshift/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/amj60/keymaps/iso_split_rshift/Makefile b/keyboards/amj60/keymaps/iso_split_rshift/Makefile index 0d8416bbce..2969ed8aec 100644 --- a/keyboards/amj60/keymaps/iso_split_rshift/Makefile +++ b/keyboards/amj60/keymaps/iso_split_rshift/Makefile @@ -4,7 +4,7 @@ # BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) MOUSEKEY_ENABLE = no # Mouse keys(+4700) -EXTRAKEY_ENABLE = no # Audio control and System control(+450) +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 From a1da23d827df80de1771dc7277dbba803507dabf Mon Sep 17 00:00:00 2001 From: zs Date: Fri, 19 Aug 2016 21:59:08 +0200 Subject: [PATCH 33/33] Add the workman-dead layout for kc60 --- keyboards/kc60/keymaps/workman-dead/README.md | 17 ++ .../keymaps/workman-dead/kc60-wm-dead.png | Bin 0 -> 117155 bytes keyboards/kc60/keymaps/workman-dead/keymap.c | 183 ++++++++++++++++++ 3 files changed, 200 insertions(+) create mode 100644 keyboards/kc60/keymaps/workman-dead/README.md create mode 100644 keyboards/kc60/keymaps/workman-dead/kc60-wm-dead.png create mode 100644 keyboards/kc60/keymaps/workman-dead/keymap.c diff --git a/keyboards/kc60/keymaps/workman-dead/README.md b/keyboards/kc60/keymaps/workman-dead/README.md new file mode 100644 index 0000000000..f1fcdc9606 --- /dev/null +++ b/keyboards/kc60/keymaps/workman-dead/README.md @@ -0,0 +1,17 @@ +# Workman dead with spacefn (kc60 @ QMK) + +## Layout reference +![workman dead with spacefn](./kc60-wm-dead.png) + +## Build + +To build this keymap, simply run `make KEYMAP=workman-dead`. + +## Notes + +* the default layout is `workman` (try it out, it's awesome!), but it can be changed to `qwerty` with the `rebel` key (the function layer won't change though) +* `comma` acts as a dead key, that means tapping/holding it will activate the **oneshot** `dead key` layer (marked red in the reference) +* hold `space` to access the `function` layer (marked blue in the reference) +* hold `tab` to activate the mouse layer +* the `function` layer contains mostly osx specific shortcuts +* on the right side of the bottom row `alt` and `super` are switched compared to a standard layout diff --git a/keyboards/kc60/keymaps/workman-dead/kc60-wm-dead.png b/keyboards/kc60/keymaps/workman-dead/kc60-wm-dead.png new file mode 100644 index 0000000000000000000000000000000000000000..cc6a630a59ec51c451ebf39c9feb080c29252dca GIT binary patch literal 117155 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 literal 0 HcmV?d00001 diff --git a/keyboards/kc60/keymaps/workman-dead/keymap.c b/keyboards/kc60/keymaps/workman-dead/keymap.c new file mode 100644 index 0000000000..103adeef61 --- /dev/null +++ b/keyboards/kc60/keymaps/workman-dead/keymap.c @@ -0,0 +1,183 @@ +#include "kc60.h" + +#define _WM 0 +#define _QW 1 +#define _DK 2 +#define _FUN 3 +#define _MS 4 + +#define _______ KC_NO +#define XXXXXXX KC_TRNS + +#define _DK_ACT 0 +#define _DK_REL 1 +#define _KC_COMS 2 +#define _KC_CENT 3 + +#define DK_ACT M(_DK_ACT) // activate dead key layer +#define DK_REL M(_DK_REL) // release dead key layer +#define KC_COMS M(_KC_COMS) // comma + space +#define KC_CENT M(_KC_CENT) // comma + enter +#define KC_TABM LT(_MS, KC_TAB) // press for tab, hold for mouse layer +#define KC_SPFN LT(_FUN, KC_SPC) // press for space, hold for function layer (aka spacefn) +#define KC_DFQW DF(_QW) // set default layer to qwerty +#define KC_DFWM DF(_WM) // set default layer to workman +#define KC_CMDQ LGUI(KC_Q) // command + q +#define KC_CMDD LGUI(KC_D) // command + d +#define KC_CMDA LGUI(KC_A) // command + a +#define KC_CMDS LGUI(KC_S) // command + s +#define KC_CMDZ LGUI(KC_Z) // command + z +#define KC_CMDX LGUI(KC_X) // command + x +#define KC_CMDC LGUI(KC_C) // command + c +#define KC_CMDV LGUI(KC_V) // command + v +#define KC_CSTB S(RCTL(KC_TAB)) // shift + control + tab +#define KC_C_TB RCTL(KC_TAB) // control + tab +#define KC_C_LF RCTL(KC_LEFT) // control + left +#define KC_C_RT RCTL(KC_RGHT) // control + right + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +// Workman +/* +* ,-----------------------------------------------------------. +* |Esc | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| Bsp | +* |-----------------------------------------------------------| +* |Tab/M| Q| D| R| W| B| J| F| U| P| ;| [| ]| \ | +* |-----------------------------------------------------------| +* |Ctrl | A| S| H| T| G| Y| N| E| O| I| '| Return | +* |-----------------------------------------------------------| +* |Shift | Z| X| M| C| V| K| L| ,| .| /| Shift | +* |-----------------------------------------------------------| +* |Ctrl | Alt | GUI | Space/FN | Alt | GUI | Ctrl | qwerty | +* `-----------------------------------------------------------' +*/ +[_WM] = KEYMAP( /* Workman */ + 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_BSPC, \ + KC_TABM, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, \ + KC_LCTL, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOT, _______, KC_ENT, \ + KC_LSFT, _______, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, DK_ACT, KC_DOT, KC_SLSH, _______, KC_RSFT, \ + KC_LCTL, KC_LALT, KC_LGUI, KC_SPFN, KC_RALT, KC_RGUI, KC_RCTL, KC_DFQW), + +// QWERTY +/* +* ,-----------------------------------------------------------. +* |Esc | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| Bsp | +* |-----------------------------------------------------------| +* |Tab/M| 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 | +* |-----------------------------------------------------------| +* |Ctrl | Alt | GUI | Space/FN | Alt | GUI | Ctrl | workman | +* `-----------------------------------------------------------' +*/ +[_QW] = KEYMAP( /* QWERTY */ + 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_BSPC, \ + KC_TABM, 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_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, _______, KC_ENT, \ + KC_LSFT, _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, DK_ACT, KC_DOT, KC_SLSH, _______, KC_RSFT, \ + KC_LCTL, KC_LALT, KC_LGUI, KC_SPFN, KC_RALT, KC_RGUI, KC_RCTL, KC_DOWN), + +// dead key layer +/* +* ,-----------------------------------------------------------. +* | | | | | | | | | | | | | | Bsp | +* |-----------------------------------------------------------| +* | | %| &| ?| +| @| $| _| [| ]| !| ~| ^| | +* |-----------------------------------------------------------| +* | | #| (| =| 0| {| }| 1| *| )| -| `| Return | +* |-----------------------------------------------------------| +* | | 6| 7| 8| 9| || \| 2| 3| 4| 5| | +* |-----------------------------------------------------------| +* |Ctrl | Alt | GUI | , | Alt | GUI | Ctrl | | +* `-----------------------------------------------------------' +*/ +[_DK] = KEYMAP( /* dead key layer */ + XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BSPC, \ + XXXXXXX, KC_PERC, KC_AMPR, KC_QUES, KC_PLUS, KC_AT, KC_DLR, KC_UNDS, KC_LBRC, KC_RBRC, KC_EXLM, KC_TILD, KC_CIRC, _______, \ + _______, KC_HASH, KC_LPRN, KC_EQL, KC_0, KC_LCBR, KC_RCBR, KC_1, KC_ASTR, KC_RPRN, KC_MINS, KC_GRV, _______, KC_CENT, \ + _______, _______, KC_6, KC_7, KC_8, KC_9, KC_PIPE, KC_BSLS, KC_2, DK_REL, KC_4, KC_5, _______, _______, \ + KC_LCTL, KC_LALT, KC_LGUI, KC_COMS, KC_RALT, KC_RGUI, KC_RCTL, _______), + +// function layer +/* +* ,-----------------------------------------------------------. +* | | F1| F2| F3| F4| F5| F6| F7| F8| F9| F10| F11| F12|Del | +* |-----------------------------------------------------------| +* |Esc | Cq| Cd|cstb|ctb| | |pgd| up|pgu| | | |ins | +* |-----------------------------------------------------------| +* |Shift | Ca| Cs|clt|crt| | | lt| dw| rt|home|end| Bsp | +* |-----------------------------------------------------------| +* |Shift | Cz| Cx| | Cc| Cv| V-| V+|mute| | | | +* |-----------------------------------------------------------| +* |Ctrl | Alt | GUI | | Alt | GUI | Ctrl | Reset | +* `-----------------------------------------------------------' +*/ +[_FUN] = KEYMAP( /* function layer */ + KC_TRNS, 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_DEL, \ + KC_ESC, KC_CMDQ, KC_CMDD, KC_CSTB, KC_C_TB, _______, _______, KC_PGDN, KC_UP, KC_PGUP, _______, _______, _______, KC_INS, \ + KC_LSFT, KC_CMDA, KC_CMDS, KC_C_LF, KC_C_RT, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_HOME, KC_END, _______, KC_BSPC, \ + KC_LSFT, _______, KC_CMDZ, KC_CMDX, _______, KC_CMDC, KC_CMDV, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, \ + KC_LCTL, KC_LALT, KC_LGUI, KC_TRNS, KC_RALT, KC_RGUI, KC_RCTL, RESET), + +// mouse layer +/* +* ,-----------------------------------------------------------. +* | | | | | | | | | | | | | | | +* |-----------------------------------------------------------| +* | |fast|med|slow| | | | | up| | | | | | +* |-----------------------------------------------------------| +* | | | | | | | | lt| dw| rt| rc| | | +* |-----------------------------------------------------------| +* | | | | | | | | | | | | | +* |-----------------------------------------------------------| +* | | | | lc | | | | | +* `-----------------------------------------------------------' +*/ +[_MS] = KEYMAP( /* mouse layer */ + XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + XXXXXXX, KC_ACL2, KC_ACL1, KC_ACL0, _______, _______, _______, _______, KC_MS_U, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN2, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, KC_BTN1, _______, _______, _______, _______), +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + switch(id) { + case _KC_COMS: + if (record->event.pressed) { + return MACRO(T(COMM), T(SPC), END); // comma + space + } + break; + case _KC_CENT: + if (record->event.pressed) { + return MACRO(T(COMM), T(ENT), END); // comma + enter + } + break; + case _DK_ACT: + if (record->event.pressed) { + if (keyboard_report->mods & MOD_BIT(KC_LSFT) || keyboard_report->mods & MOD_BIT(KC_RSFT)) { // act as comma when shift is pressed (eg <) + register_code(KC_COMM); + } else { // activate oneshot dead key layer otherwise + layer_on(_DK); + set_oneshot_layer(_DK, ONESHOT_START); + } + } else { // make sure to deactive dead key layer on key release + clear_oneshot_layer_state(ONESHOT_PRESSED); + unregister_code(KC_COMM); + } + break; + case _DK_REL: + if (record->event.pressed) { // act as 3 on keypress + register_code(KC_3); + } else { // make sure to deactive dead key layer on key release + clear_oneshot_layer_state(ONESHOT_PRESSED); + unregister_code(KC_3); + } + break; + } + + return MACRO_NONE; +};