diff options
Diffstat (limited to 'keyboard/clueboard2')
-rw-r--r-- | keyboard/clueboard2/Makefile | 140 | ||||
-rw-r--r-- | keyboard/clueboard2/backlight.c | 41 | ||||
-rw-r--r-- | keyboard/clueboard2/clueboard2.c | 44 | ||||
-rw-r--r-- | keyboard/clueboard2/clueboard2.h | 57 | ||||
-rw-r--r-- | keyboard/clueboard2/config.h | 100 | ||||
-rw-r--r-- | keyboard/clueboard2/keymaps/keymap_default.c | 170 | ||||
-rw-r--r-- | keyboard/clueboard2/keymaps/keymap_max.c | 147 | ||||
-rw-r--r-- | keyboard/clueboard2/keymaps/keymap_skully.c | 108 | ||||
-rw-r--r-- | keyboard/clueboard2/led.c | 36 |
9 files changed, 843 insertions, 0 deletions
diff --git a/keyboard/clueboard2/Makefile b/keyboard/clueboard2/Makefile new file mode 100644 index 000000000..788c20487 --- /dev/null +++ b/keyboard/clueboard2/Makefile | |||
@@ -0,0 +1,140 @@ | |||
1 | #---------------------------------------------------------------------------- | ||
2 | # On command line: | ||
3 | # | ||
4 | # make all = Make software. | ||
5 | # | ||
6 | # make clean = Clean out built project files. | ||
7 | # | ||
8 | # make coff = Convert ELF to AVR COFF. | ||
9 | # | ||
10 | # make extcoff = Convert ELF to AVR Extended COFF. | ||
11 | # | ||
12 | # make program = Download the hex file to the device. | ||
13 | # Please customize your programmer settings(PROGRAM_CMD) | ||
14 | # | ||
15 | # make teensy = Download the hex file to the device, using teensy_loader_cli. | ||
16 | # (must have teensy_loader_cli installed). | ||
17 | # | ||
18 | # make dfu = Download the hex file to the device, using dfu-programmer (must | ||
19 | # have dfu-programmer installed). | ||
20 | # | ||
21 | # make flip = Download the hex file to the device, using Atmel FLIP (must | ||
22 | # have Atmel FLIP installed). | ||
23 | # | ||
24 | # make dfu-ee = Download the eeprom file to the device, using dfu-programmer | ||
25 | # (must have dfu-programmer installed). | ||
26 | # | ||
27 | # make flip-ee = Download the eeprom file to the device, using Atmel FLIP | ||
28 | # (must have Atmel FLIP installed). | ||
29 | # | ||
30 | # make debug = Start either simulavr or avarice as specified for debugging, | ||
31 | # with avr-gdb or avr-insight as the front end for debugging. | ||
32 | # | ||
33 | # make filename.s = Just compile filename.c into the assembler code only. | ||
34 | # | ||
35 | # make filename.i = Create a preprocessed source file for use in submitting | ||
36 | # bug reports to the GCC project. | ||
37 | # | ||
38 | # To rebuild project do "make clean" then "make all". | ||
39 | #---------------------------------------------------------------------------- | ||
40 | |||
41 | # Target file name (without extension). | ||
42 | TARGET = clueboard2 | ||
43 | |||
44 | |||
45 | # Directory common source filess exist | ||
46 | TOP_DIR = ../.. | ||
47 | TMK_DIR = ../../tmk_core | ||
48 | |||
49 | # Directory keyboard dependent files exist | ||
50 | TARGET_DIR = . | ||
51 | |||
52 | # # project specific files | ||
53 | SRC = clueboard2.c led.c | ||
54 | |||
55 | ifdef KEYMAP | ||
56 | SRC := keymaps/keymap_$(KEYMAP).c $(SRC) | ||
57 | else | ||
58 | SRC := keymaps/keymap_default.c $(SRC) | ||
59 | endif | ||
60 | |||
61 | CONFIG_H = config.h | ||
62 | |||
63 | # MCU name | ||
64 | #MCU = at90usb1287 | ||
65 | MCU = atmega32u4 | ||
66 | |||
67 | # Processor frequency. | ||
68 | # This will define a symbol, F_CPU, in all source code files equal to the | ||
69 | # processor frequency in Hz. You can then use this symbol in your source code to | ||
70 | # calculate timings. Do NOT tack on a 'UL' at the end, this will be done | ||
71 | # automatically to create a 32-bit value in your source code. | ||
72 | # | ||
73 | # This will be an integer division of F_USB below, as it is sourced by | ||
74 | # F_USB after it has run through any CPU prescalers. Note that this value | ||
75 | # does not *change* the processor frequency - it should merely be updated to | ||
76 | # reflect the processor speed set externally so that the code can use accurate | ||
77 | # software delays. | ||
78 | F_CPU = 16000000 | ||
79 | |||
80 | |||
81 | # | ||
82 | # LUFA specific | ||
83 | # | ||
84 | # Target architecture (see library "Board Types" documentation). | ||
85 | ARCH = AVR8 | ||
86 | |||
87 | # Input clock frequency. | ||
88 | # This will define a symbol, F_USB, in all source code files equal to the | ||
89 | # input clock frequency (before any prescaling is performed) in Hz. This value may | ||
90 | # differ from F_CPU if prescaling is used on the latter, and is required as the | ||
91 | # raw input clock is fed directly to the PLL sections of the AVR for high speed | ||
92 | # clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' | ||
93 | # at the end, this will be done automatically to create a 32-bit value in your | ||
94 | # source code. | ||
95 | # | ||
96 | # If no clock division is performed on the input clock inside the AVR (via the | ||
97 | # CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. | ||
98 | F_USB = $(F_CPU) | ||
99 | |||
100 | # Interrupt driven control endpoint task(+60) | ||
101 | OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT | ||
102 | |||
103 | |||
104 | # Boot Section Size in *bytes* | ||
105 | # Teensy halfKay 512 | ||
106 | # Teensy++ halfKay 1024 | ||
107 | # Atmel DFU loader 4096 | ||
108 | # LUFA bootloader 4096 | ||
109 | # USBaspLoader 2048 | ||
110 | OPT_DEFS += -DBOOTLOADER_SIZE=4096 | ||
111 | |||
112 | |||
113 | # Build Options | ||
114 | # comment out to disable the options. | ||
115 | # | ||
116 | BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) | ||
117 | # MOUSEKEY_ENABLE = yes # Mouse keys(+4700) | ||
118 | EXTRAKEY_ENABLE = yes # Audio control and System control(+450) | ||
119 | CONSOLE_ENABLE = yes # Console for debug(+400) | ||
120 | COMMAND_ENABLE = yes # Commands for debug and configuration | ||
121 | NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work | ||
122 | RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality | ||
123 | BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality | ||
124 | # MIDI_ENABLE = YES # MIDI controls | ||
125 | # UNICODE_ENABLE = YES # Unicode | ||
126 | # BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID | ||
127 | |||
128 | #ifdef BACKLIGHT_ENABLE | ||
129 | SRC := backlight.c $(SRC) | ||
130 | #endif | ||
131 | |||
132 | # Optimize size but this may cause error "relocation truncated to fit" | ||
133 | #EXTRALDFLAGS = -Wl,--relax | ||
134 | |||
135 | # Search Path | ||
136 | VPATH += $(TARGET_DIR) | ||
137 | VPATH += $(TOP_DIR) | ||
138 | VPATH += $(TMK_DIR) | ||
139 | |||
140 | include $(TOP_DIR)/quantum/quantum.mk | ||
diff --git a/keyboard/clueboard2/backlight.c b/keyboard/clueboard2/backlight.c new file mode 100644 index 000000000..5dfa4ba0a --- /dev/null +++ b/keyboard/clueboard2/backlight.c | |||
@@ -0,0 +1,41 @@ | |||
1 | |||
2 | #include <avr/io.h> | ||
3 | #include "backlight.h" | ||
4 | #include "print.h" | ||
5 | |||
6 | /* Clueboard 2.0 LED locations: | ||
7 | * | ||
8 | * Capslock: B4, pull high to turn on | ||
9 | * LCtrl: Shared with Capslock, DO NOT INSTALL LED'S IN BOTH | ||
10 | * Page Up: B7, pull high to turn on | ||
11 | * Escape: D6, pull high to turn on | ||
12 | * Arrows: D4, pull high to turn on | ||
13 | */ | ||
14 | |||
15 | void init_backlight_pin(void) { | ||
16 | print("init_backlight_pin()\n"); | ||
17 | // Set our LED pins as output | ||
18 | DDRD |= (1<<6); // Esc | ||
19 | DDRB |= (1<<7); // Page Up | ||
20 | DDRD |= (1<<4); // Arrows | ||
21 | |||
22 | // Set our LED pins low | ||
23 | PORTD &= ~(1<<6); // Esc | ||
24 | PORTB &= ~(1<<7); // Page Up | ||
25 | PORTD &= ~(1<<4); // Arrows | ||
26 | } | ||
27 | |||
28 | void backlight_set(uint8_t level) { | ||
29 | if ( level == 0 ) { | ||
30 | // Turn off light | ||
31 | PORTD |= (1<<6); // Esc | ||
32 | PORTB |= (1<<7); // Page Up | ||
33 | PORTD |= (1<<4); // Arrows | ||
34 | } else { | ||
35 | // Turn on light | ||
36 | PORTD &= ~(1<<6); // Esc | ||
37 | PORTB &= ~(1<<7); // Page Up | ||
38 | PORTD &= ~(1<<4); // Arrows | ||
39 | } | ||
40 | } | ||
41 | |||
diff --git a/keyboard/clueboard2/clueboard2.c b/keyboard/clueboard2/clueboard2.c new file mode 100644 index 000000000..97d393d18 --- /dev/null +++ b/keyboard/clueboard2/clueboard2.c | |||
@@ -0,0 +1,44 @@ | |||
1 | #include "clueboard2.h" | ||
2 | |||
3 | #ifdef BACKLIGHT_ENABLE | ||
4 | #include "backlight.h" | ||
5 | #endif | ||
6 | |||
7 | __attribute__ ((weak)) | ||
8 | void * matrix_init_user(void) { | ||
9 | // leave these blank | ||
10 | }; | ||
11 | |||
12 | __attribute__ ((weak)) | ||
13 | void * matrix_scan_user(void) { | ||
14 | // leave these blank | ||
15 | }; | ||
16 | |||
17 | void * matrix_init_kb(void) { | ||
18 | // put your keyboard start-up code here | ||
19 | // runs once when the firmware starts up | ||
20 | if (matrix_init_user) { | ||
21 | (*matrix_init_user)(); | ||
22 | } | ||
23 | led_init_ports(); | ||
24 | |||
25 | #ifdef BACKLIGHT_ENABLE | ||
26 | init_backlight_pin(); | ||
27 | #endif | ||
28 | |||
29 | #ifdef RGBLIGHT_ENABLE | ||
30 | rgblight_init(); | ||
31 | #endif | ||
32 | |||
33 | // JTAG disable for PORT F. write JTD bit twice within four cycles. | ||
34 | MCUCR |= (1<<JTD); | ||
35 | MCUCR |= (1<<JTD); | ||
36 | }; | ||
37 | |||
38 | void * matrix_scan_kb(void) { | ||
39 | // put your looping keyboard code here | ||
40 | // runs every cycle (a lot) | ||
41 | if (matrix_scan_user) { | ||
42 | (*matrix_scan_user)(); | ||
43 | } | ||
44 | }; | ||
diff --git a/keyboard/clueboard2/clueboard2.h b/keyboard/clueboard2/clueboard2.h new file mode 100644 index 000000000..822a79735 --- /dev/null +++ b/keyboard/clueboard2/clueboard2.h | |||
@@ -0,0 +1,57 @@ | |||
1 | #ifndef CLUEBOARD2_H | ||
2 | #define CLUEBOARD2_H | ||
3 | |||
4 | #include "matrix.h" | ||
5 | #include "keymap_common.h" | ||
6 | #include <stddef.h> | ||
7 | |||
8 | |||
9 | /* Clueboard matrix layout | ||
10 | * ,-----------------------------------------------------------. ,---. | ||
11 | * | 00| 01| 02| 03| 04| 05| 06| 07| 50| 51| 52| 53| 54| 55| 56| | 57| | ||
12 | * |-----------------------------------------------------------| |---| | ||
13 | * | 10| 11| 12| 13| 14| 15| 16| 17| 60| 61| 62| 63| 64| 65| | 67| | ||
14 | * |-----------------------------------------------------------| `---' | ||
15 | * | 20| 21| 22| 23| 24| 25| 26| 27| 70| 71| 72| 73| 74| 75| | ||
16 | * |------------------------------------------------------------. | ||
17 | * | 30| 31| 32| 33| 34| 35| 36| 37| 80| 81| 82| 83| 84| 85|86| | ||
18 | * |------------------------------------------------------------------. | ||
19 | * | 40| 41| 42| 43| 45| 46| 90| 91| 92| 93| 94| 95| 96| | ||
20 | * `------------------------------------------------------------------' | ||
21 | * ,-----------------------------------------------------------. ,---. | ||
22 | * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Yen| BS| |Ins| | ||
23 | * |-----------------------------------------------------------| |---| | ||
24 | * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |Del| | ||
25 | * |-----------------------------------------------------------| `---' | ||
26 | * |Caps | A| S| D| F| G| H| J| k| L| ;| '| # | Ent| | ||
27 | * |--------------------------------------------------------------. | ||
28 | * |Shift| \| Z| X| C| V| B| N| M| ,| .| /| \|Shift| Up| | ||
29 | * |------------------------------------------------------------------. | ||
30 | * |Ctrl|Alt|Gui |MHen| Space| Space|Henk|Gui |Ctrl| Fn|Left|Down|Rgt| | ||
31 | * `------------------------------------------------------------------' | ||
32 | */ | ||
33 | // The first section contains all of the arguments | ||
34 | // The second converts the arguments into a two-dimensional array | ||
35 | #define KEYMAP( \ | ||
36 | k00, k01, k02, k03, k04, k05, k06, k07, k50, k51, k52, k53, k54, k55, k56, k57, \ | ||
37 | k10, k11, k12, k13, k14, k15, k16, k17, k60, k61, k62, k63, k64, k65, k67, \ | ||
38 | k20, k21, k22, k23, k24, k25, k26, k27, k70, k71, k72, k73, k74, k75, \ | ||
39 | k30, k31, k32, k33, k34, k35, k36, k37, k80, k81, k82, k83, k84, k85, k86, \ | ||
40 | k40, k41, k42, k43, k45, k46, k90, k92, k93, k94, k95, k96, k97 \ | ||
41 | ) { \ | ||
42 | { k00, k01, k02, k03, k04, k05, k06, k07 }, \ | ||
43 | { k10, k11, k12, k13, k14, k15, k16, k17 }, \ | ||
44 | { k20, k21, k22, k23, k24, k25, k26, k27 }, \ | ||
45 | { k30, k31, k32, k33, k34, k35, k36, k37 }, \ | ||
46 | { k40, k41, k42, k43, KC_NO, k45, k46, KC_NO }, \ | ||
47 | { k50, k51, k52, k53, k54, k55, k56, k57 }, \ | ||
48 | { k60, k61, k62, k63, k64, k65, KC_NO, k67 }, \ | ||
49 | { k70, k71, k72, k73, k74, k75, KC_NO, KC_NO }, \ | ||
50 | { k80, k81, k82, k83, k84, k85, k86, KC_NO }, \ | ||
51 | { k90, KC_NO, k92, k93, k94, k95, k96, k97 } \ | ||
52 | } | ||
53 | |||
54 | void * matrix_init_user(void); | ||
55 | void * matrix_scan_user(void); | ||
56 | |||
57 | #endif | ||
diff --git a/keyboard/clueboard2/config.h b/keyboard/clueboard2/config.h new file mode 100644 index 000000000..04166c20f --- /dev/null +++ b/keyboard/clueboard2/config.h | |||
@@ -0,0 +1,100 @@ | |||
1 | /* | ||
2 | Copyright 2012 Jun Wako <wakojun@gmail.com> | ||
3 | |||
4 | This program is free software: you can redistribute it and/or modify | ||
5 | it under the terms of the GNU General Public License as published by | ||
6 | the Free Software Foundation, either version 2 of the License, or | ||
7 | (at your option) any later version. | ||
8 | |||
9 | This program is distributed in the hope that it will be useful, | ||
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | GNU General Public License for more details. | ||
13 | |||
14 | You should have received a copy of the GNU General Public License | ||
15 | along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
16 | */ | ||
17 | |||
18 | #ifndef CONFIG_H | ||
19 | #define CONFIG_H | ||
20 | |||
21 | #include "config_common.h" | ||
22 | |||
23 | /* USB Device descriptor parameter */ | ||
24 | #define VENDOR_ID 0xC1ED | ||
25 | #define PRODUCT_ID 0x2320 | ||
26 | #define DEVICE_VER 0x0001 | ||
27 | #define MANUFACTURER Clueboard | ||
28 | #define PRODUCT Clueboard with RGB Underlighting | ||
29 | #define DESCRIPTION QMK keyboard firmware for Clueboard | ||
30 | |||
31 | /* key matrix size */ | ||
32 | #define MATRIX_ROWS 10 | ||
33 | #define MATRIX_COLS 8 | ||
34 | |||
35 | // COLS: Left to right, ROWS: Top to bottom | ||
36 | |||
37 | /* Column pin configuration | ||
38 | * col: 0 1 2 3 4 5 6 7 | ||
39 | * pin: F0 F1 F4 F5 F6 F7 E6 B1 | ||
40 | */ | ||
41 | #define COLS (int []){ F0, F1, F4, F5, F6, F7, E6, B1 } | ||
42 | |||
43 | /* Row pin configuration | ||
44 | * row: 0 1 2 3 4 5 6 7 8 9 | ||
45 | * pin: B2 C7 C6 B6 B5 B0 B3 D5 D3 D2 | ||
46 | */ | ||
47 | #define ROWS (int []){ B2, C7, C6, B6, B5, B0, B3, D5, D3, D2 } | ||
48 | |||
49 | /* COL2ROW or ROW2COL */ | ||
50 | #define DIODE_DIRECTION COL2ROW | ||
51 | |||
52 | /* define if matrix has ghost */ | ||
53 | //#define MATRIX_HAS_GHOST | ||
54 | |||
55 | /* Set 0 if debouncing isn't needed */ | ||
56 | #define DEBOUNCE 5 | ||
57 | |||
58 | /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ | ||
59 | #define LOCKING_SUPPORT_ENABLE | ||
60 | /* Locking resynchronize hack */ | ||
61 | #define LOCKING_RESYNC_ENABLE | ||
62 | |||
63 | /* key combination for command */ | ||
64 | #define IS_COMMAND() ( \ | ||
65 | keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ | ||
66 | ) | ||
67 | |||
68 | /* Backlight configuration | ||
69 | */ | ||
70 | #define BACKLIGHT_LEVELS 1 | ||
71 | |||
72 | /* Underlight configuration | ||
73 | */ | ||
74 | #define ws2812_PORTREG PORTD | ||
75 | #define ws2812_DDRREG DDRD | ||
76 | #define ws2812_pin 7 | ||
77 | #define RGBLED_NUM 14 // Number of LEDs | ||
78 | #define RGBLIGHT_HUE_STEP 10 | ||
79 | #define RGBLIGHT_SAT_STEP 17 | ||
80 | #define RGBLIGHT_VAL_STEP 17 | ||
81 | |||
82 | /* | ||
83 | * Feature disable options | ||
84 | * These options are also useful to firmware size reduction. | ||
85 | */ | ||
86 | |||
87 | /* disable debug print */ | ||
88 | //#define NO_DEBUG | ||
89 | |||
90 | /* disable print */ | ||
91 | //#define NO_PRINT | ||
92 | |||
93 | /* disable action features */ | ||
94 | //#define NO_ACTION_LAYER | ||
95 | //#define NO_ACTION_TAPPING | ||
96 | //#define NO_ACTION_ONESHOT | ||
97 | //#define NO_ACTION_MACRO | ||
98 | //#define NO_ACTION_FUNCTION | ||
99 | |||
100 | #endif | ||
diff --git a/keyboard/clueboard2/keymaps/keymap_default.c b/keyboard/clueboard2/keymaps/keymap_default.c new file mode 100644 index 000000000..5d52f27a7 --- /dev/null +++ b/keyboard/clueboard2/keymaps/keymap_default.c | |||
@@ -0,0 +1,170 @@ | |||
1 | #include "clueboard2.h" | ||
2 | |||
3 | #ifdef ENABLE_RGBLIGHT | ||
4 | #include "rgblight.h" | ||
5 | #endif | ||
6 | |||
7 | // Used for SHIFT_ESC | ||
8 | #define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) | ||
9 | |||
10 | // Each layer gets a name for readability, which is then used in the keymap matrix below. | ||
11 | // The underscores don't mean anything - you can have a layer called STUFF or any other name. | ||
12 | // Layer names don't all need to be of the same length, obviously, and you can also skip them | ||
13 | // entirely and just use numbers. | ||
14 | #define _BL 0 | ||
15 | #define _FL 1 | ||
16 | #define _RS 2 | ||
17 | |||
18 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
19 | /* Keymap _BL: (Base Layer) Default Layer | ||
20 | * ,--------------------------------------------------------------------------. ,----. | ||
21 | * |Esc~| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| BS| |PGUP| | ||
22 | * |--------------------------------------------------------------------------| |----| | ||
23 | * | Tab| Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |PGDN| | ||
24 | * |--------------------------------------------------------------------------| `----' | ||
25 | * |Capslck| A| S| D| F| G| H| J| K| L| ;| '| # | Ent| | ||
26 | * |-----------------------------------------------------------------------------. | ||
27 | * |Shift| BS| Z| X| C| V| B| N| M| ,| .| /| BS|Shift| UP| | ||
28 | * |------------------------------------------------------------------------|----|----. | ||
29 | * | Ctrl| Gui| Alt| MHen| Space| Space| Hen| Alt| Ctrl| _FL|LEFT|DOWN|RGHT| | ||
30 | * `----------------------------------------------------------------------------------' | ||
31 | */ | ||
32 | [_BL] = KEYMAP( | ||
33 | 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_GRV, KC_BSPC, KC_PGUP, \ | ||
34 | 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_PGDN, \ | ||
35 | 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_NUHS, KC_ENT, \ | ||
36 | 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_RO, KC_RSFT, KC_UP, \ | ||
37 | KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC,KC_SPC, KC_HENK, KC_RALT, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT), | ||
38 | |||
39 | /* Keymap _FL: Function Layer | ||
40 | * ,--------------------------------------------------------------------------. ,----. | ||
41 | * | `| F1| F2| F3| F4| F5| F6| F7| F8| F9| F10| F11| F12| | Del| |BLIN| | ||
42 | * |--------------------------------------------------------------------------| |----| | ||
43 | * | | | | | | | | |PScr|SLck|Paus| | | | |BLDE| | ||
44 | * |--------------------------------------------------------------------------| `----' | ||
45 | * | | | _RS| | | | | | | | | | | | | ||
46 | * |-----------------------------------------------------------------------------. | ||
47 | * | | | | | | | | | | | | | | |PGUP| | ||
48 | * |------------------------------------------------------------------------|----|----. | ||
49 | * | | | | | | | | | | _FL|HOME|PGDN| END| | ||
50 | * `----------------------------------------------------------------------------------' | ||
51 | */ | ||
52 | [_FL] = KEYMAP( | ||
53 | 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_TRNS, KC_DEL, BL_STEP, \ | ||
54 | KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PSCR,KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ | ||
55 | KC_TRNS, KC_TRNS, MO(_RS),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ | ||
56 | KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, \ | ||
57 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_FL), KC_HOME, KC_PGDN, KC_END), | ||
58 | |||
59 | /* Keymap _RS: Reset layer | ||
60 | * ,--------------------------------------------------------------------------. ,----. | ||
61 | * | | | | | | | | | | | | | | | | | | | ||
62 | * |--------------------------------------------------------------------------| |----| | ||
63 | * | | | | |RESET| | | | | | | | | | | | | ||
64 | * |--------------------------------------------------------------------------| `----' | ||
65 | * | | | _RS| | | | | | | | | | | | | ||
66 | * |-----------------------------------------------------------------------------. | ||
67 | * | | | | | | | | | | | | | | | | | ||
68 | * |------------------------------------------------------------------------|----|----. | ||
69 | * | | | | | | | | | | _FL| | | | | ||
70 | * `----------------------------------------------------------------------------------' | ||
71 | */ | ||
72 | [_RS] = KEYMAP( | ||
73 | KC_TRNS, KC_TRNS, 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(0), F(6), \ | ||
74 | 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, F(7), \ | ||
75 | KC_TRNS, KC_TRNS, MO(_RS),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ | ||
76 | MO(_FL), KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_FL), F(4), \ | ||
77 | KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, F(1), F(1), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, F(3), F(5), F(2)), | ||
78 | }; | ||
79 | |||
80 | enum function_id { | ||
81 | SHIFT_ESC, | ||
82 | RGBLED_TOGGLE, | ||
83 | RGBLED_STEP_MODE, | ||
84 | RGBLED_INCREASE_HUE, | ||
85 | RGBLED_DECREASE_HUE, | ||
86 | RGBLED_INCREASE_SAT, | ||
87 | RGBLED_DECREASE_SAT, | ||
88 | RGBLED_INCREASE_VAL, | ||
89 | RGBLED_DECREASE_VAL | ||
90 | }; | ||
91 | |||
92 | const uint16_t PROGMEM fn_actions[] = { | ||
93 | [0] = ACTION_FUNCTION(SHIFT_ESC), | ||
94 | [1] = ACTION_FUNCTION(RGBLED_TOGGLE), | ||
95 | [2] = ACTION_FUNCTION(RGBLED_STEP_MODE), | ||
96 | [3] = ACTION_FUNCTION(RGBLED_INCREASE_HUE), | ||
97 | [4] = ACTION_FUNCTION(RGBLED_DECREASE_HUE), | ||
98 | [5] = ACTION_FUNCTION(RGBLED_INCREASE_SAT), | ||
99 | [6] = ACTION_FUNCTION(RGBLED_DECREASE_SAT), | ||
100 | [7] = ACTION_FUNCTION(RGBLED_INCREASE_VAL), | ||
101 | [8] = ACTION_FUNCTION(RGBLED_DECREASE_VAL), | ||
102 | }; | ||
103 | |||
104 | void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { | ||
105 | static uint8_t shift_esc_shift_mask; | ||
106 | switch (id) { | ||
107 | case SHIFT_ESC: | ||
108 | shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK; | ||
109 | if (record->event.pressed) { | ||
110 | if (shift_esc_shift_mask) { | ||
111 | add_key(KC_GRV); | ||
112 | send_keyboard_report(); | ||
113 | } else { | ||
114 | add_key(KC_ESC); | ||
115 | send_keyboard_report(); | ||
116 | } | ||
117 | } else { | ||
118 | if (shift_esc_shift_mask) { | ||
119 | del_key(KC_GRV); | ||
120 | send_keyboard_report(); | ||
121 | } else { | ||
122 | del_key(KC_ESC); | ||
123 | send_keyboard_report(); | ||
124 | } | ||
125 | } | ||
126 | break; | ||
127 | //led operations | ||
128 | case RGBLED_TOGGLE: | ||
129 | if (record->event.pressed) { | ||
130 | rgblight_toggle(); | ||
131 | } | ||
132 | |||
133 | break; | ||
134 | case RGBLED_INCREASE_HUE: | ||
135 | if (record->event.pressed) { | ||
136 | rgblight_increase_hue(); | ||
137 | } | ||
138 | break; | ||
139 | case RGBLED_DECREASE_HUE: | ||
140 | if (record->event.pressed) { | ||
141 | rgblight_decrease_hue(); | ||
142 | } | ||
143 | break; | ||
144 | case RGBLED_INCREASE_SAT: | ||
145 | if (record->event.pressed) { | ||
146 | rgblight_increase_sat(); | ||
147 | } | ||
148 | break; | ||
149 | case RGBLED_DECREASE_SAT: | ||
150 | if (record->event.pressed) { | ||
151 | rgblight_decrease_sat(); | ||
152 | } | ||
153 | break; | ||
154 | case RGBLED_INCREASE_VAL: | ||
155 | if (record->event.pressed) { | ||
156 | rgblight_increase_val(); | ||
157 | } | ||
158 | break; | ||
159 | case RGBLED_DECREASE_VAL: | ||
160 | if (record->event.pressed) { | ||
161 | rgblight_decrease_val(); | ||
162 | } | ||
163 | break; | ||
164 | case RGBLED_STEP_MODE: | ||
165 | if (record->event.pressed) { | ||
166 | rgblight_step(); | ||
167 | } | ||
168 | break; | ||
169 | } | ||
170 | } | ||
diff --git a/keyboard/clueboard2/keymaps/keymap_max.c b/keyboard/clueboard2/keymaps/keymap_max.c new file mode 100644 index 000000000..714d6390d --- /dev/null +++ b/keyboard/clueboard2/keymaps/keymap_max.c | |||
@@ -0,0 +1,147 @@ | |||
1 | #include "clueboard2.h" | ||
2 | |||
3 | #ifdef ENABLE_RGBLIGHT | ||
4 | #include "rgblight.h" | ||
5 | #endif | ||
6 | |||
7 | // Used for SHIFT_ESC | ||
8 | #define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) | ||
9 | |||
10 | // Each layer gets a name for readability, which is then used in the keymap matrix below. | ||
11 | // The underscores don't mean anything - you can have a layer called STUFF or any other name. | ||
12 | // Layer names don't all need to be of the same length, obviously, and you can also skip them | ||
13 | // entirely and just use numbers. | ||
14 | #define _BL 0 | ||
15 | #define _FL 1 | ||
16 | #define _RS 2 | ||
17 | |||
18 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
19 | /* Keymap _BL: (Base Layer) Default Layer | ||
20 | * ,--------------------------------------------------------------------------. ,----. | ||
21 | * | Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| ~| BS| |PgUp| | ||
22 | * |--------------------------------------------------------------------------| |----| | ||
23 | * | Tab| Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |PgDn| | ||
24 | * |--------------------------------------------------------------------------| `----' | ||
25 | * |Capslck| A| S| D| F| G| H| J| K| L| ;| '| # | Ent| | ||
26 | * |-----------------------------------------------------------------------------. | ||
27 | * |Shift| BS| Z| X| C| V| B| N| M| ,| .| /| BS|Shift| Up| | ||
28 | * |------------------------------------------------------------------------|----|----. | ||
29 | * | Ctrl| Alt| Gui| MHen| Space| Space| Hen| Gui| Alt| Ctrl|Left|Down|Rght| | ||
30 | * `----------------------------------------------------------------------------------' | ||
31 | */ | ||
32 | [_BL] = KEYMAP( | ||
33 | 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_GRV, KC_BSPC, KC_PGUP, \ | ||
34 | 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_PGDN, \ | ||
35 | 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_NUHS, KC_ENT, \ | ||
36 | MO(_FL), KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FL), KC_UP, \ | ||
37 | KC_LCTL, KC_LALT, KC_LGUI,KC_MHEN, KC_SPC, KC_SPC, KC_HENK, KC_RGUI, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), | ||
38 | |||
39 | /* Keymap _FL: Function Layer | ||
40 | * ,--------------------------------------------------------------------------. ,----. | ||
41 | * | `| F1| F2| F3| F4| F5| F6| F7| F8| F9| F10| F11| F12| | Del| |BLIN| | ||
42 | * |--------------------------------------------------------------------------| |----| | ||
43 | * | | | | | | | | |PScr|SLck|Paus| | | | |BLDE| | ||
44 | * |--------------------------------------------------------------------------| `----' | ||
45 | * | | | _RS| | | | | | | | | | | | | ||
46 | * |-----------------------------------------------------------------------------. | ||
47 | * | | | | | | | | | | | | | | |PGUP| | ||
48 | * |------------------------------------------------------------------------|----|----. | ||
49 | * | | | | | | | | | | _FL|HOME|PGDN| END| | ||
50 | * `----------------------------------------------------------------------------------' | ||
51 | */ | ||
52 | [_FL] = KEYMAP( | ||
53 | 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_TRNS, KC_DEL, BL_STEP, \ | ||
54 | KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ | ||
55 | KC_TRNS, KC_TRNS, MO(_RS),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ | ||
56 | MO(_FL), KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_FL), KC_PGUP, \ | ||
57 | KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END), | ||
58 | |||
59 | /* Keymap _RS: Reset/Underlight layer | ||
60 | * ,--------------------------------------------------------------------------. ,----. | ||
61 | * | | | | | | | | | | | | | | | | | | | ||
62 | * |--------------------------------------------------------------------------| |----| | ||
63 | * | | | | |RESET| | | | | | | | | | | | | ||
64 | * |--------------------------------------------------------------------------| `----' | ||
65 | * | | | _RS| | | | | | | | | | | | | ||
66 | * |-----------------------------------------------------------------------------. | ||
67 | * | | | | | | | | | | | | | | | | | ||
68 | * |------------------------------------------------------------------------|----|----. | ||
69 | * | | | | | | | | | | _FL| | | | | ||
70 | * `----------------------------------------------------------------------------------' | ||
71 | */ | ||
72 | [_RS] = KEYMAP( | ||
73 | KC_TRNS, KC_TRNS, 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(0), F(6), \ | ||
74 | 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, F(7), \ | ||
75 | KC_TRNS, KC_TRNS, MO(_RS),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ | ||
76 | MO(_FL), KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_FL), F(4), \ | ||
77 | KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, F(1), F(1), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, F(3), F(5), F(2)), | ||
78 | }; | ||
79 | |||
80 | enum function_id { | ||
81 | RGBLED_TOGGLE, | ||
82 | RGBLED_STEP_MODE, | ||
83 | RGBLED_INCREASE_HUE, | ||
84 | RGBLED_DECREASE_HUE, | ||
85 | RGBLED_INCREASE_SAT, | ||
86 | RGBLED_DECREASE_SAT, | ||
87 | RGBLED_INCREASE_VAL, | ||
88 | RGBLED_DECREASE_VAL, | ||
89 | }; | ||
90 | |||
91 | const uint16_t PROGMEM fn_actions[] = { | ||
92 | [0] = ACTION_FUNCTION(RGBLED_TOGGLE), | ||
93 | [1] = ACTION_FUNCTION(RGBLED_STEP_MODE), | ||
94 | [2] = ACTION_FUNCTION(RGBLED_INCREASE_HUE), | ||
95 | [3] = ACTION_FUNCTION(RGBLED_DECREASE_HUE), | ||
96 | [4] = ACTION_FUNCTION(RGBLED_INCREASE_SAT), | ||
97 | [5] = ACTION_FUNCTION(RGBLED_DECREASE_SAT), | ||
98 | [6] = ACTION_FUNCTION(RGBLED_INCREASE_VAL), | ||
99 | [7] = ACTION_FUNCTION(RGBLED_DECREASE_VAL), | ||
100 | }; | ||
101 | |||
102 | void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { | ||
103 | switch (id) { | ||
104 | case RGBLED_TOGGLE: | ||
105 | //led operations | ||
106 | if (record->event.pressed) { | ||
107 | rgblight_toggle(); | ||
108 | } | ||
109 | |||
110 | break; | ||
111 | case RGBLED_INCREASE_HUE: | ||
112 | if (record->event.pressed) { | ||
113 | rgblight_increase_hue(); | ||
114 | } | ||
115 | break; | ||
116 | case RGBLED_DECREASE_HUE: | ||
117 | if (record->event.pressed) { | ||
118 | rgblight_decrease_hue(); | ||
119 | } | ||
120 | break; | ||
121 | case RGBLED_INCREASE_SAT: | ||
122 | if (record->event.pressed) { | ||
123 | rgblight_increase_sat(); | ||
124 | } | ||
125 | break; | ||
126 | case RGBLED_DECREASE_SAT: | ||
127 | if (record->event.pressed) { | ||
128 | rgblight_decrease_sat(); | ||
129 | } | ||
130 | break; | ||
131 | case RGBLED_INCREASE_VAL: | ||
132 | if (record->event.pressed) { | ||
133 | rgblight_increase_val(); | ||
134 | } | ||
135 | break; | ||
136 | case RGBLED_DECREASE_VAL: | ||
137 | if (record->event.pressed) { | ||
138 | rgblight_decrease_val(); | ||
139 | } | ||
140 | break; | ||
141 | case RGBLED_STEP_MODE: | ||
142 | if (record->event.pressed) { | ||
143 | rgblight_step(); | ||
144 | } | ||
145 | break; | ||
146 | } | ||
147 | } | ||
diff --git a/keyboard/clueboard2/keymaps/keymap_skully.c b/keyboard/clueboard2/keymaps/keymap_skully.c new file mode 100644 index 000000000..74a03f2f3 --- /dev/null +++ b/keyboard/clueboard2/keymaps/keymap_skully.c | |||
@@ -0,0 +1,108 @@ | |||
1 | #include "clueboard2.h" | ||
2 | |||
3 | // Used for SHIFT_ESC | ||
4 | #define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) | ||
5 | |||
6 | // Each layer gets a name for readability, which is then used in the keymap matrix below. | ||
7 | // The underscores don't mean anything - you can have a layer called STUFF or any other name. | ||
8 | // Layer names don't all need to be of the same length, obviously, and you can also skip them | ||
9 | // entirely and just use numbers. | ||
10 | #define _BL 0 | ||
11 | #define _FL 1 | ||
12 | #define _RS 2 | ||
13 | |||
14 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
15 | /* Keymap _BL: (Base Layer) Default Layer | ||
16 | * ,--------------------------------------------------------------------------. ,----. | ||
17 | * |Esc~| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| BS| |PGUP| | ||
18 | * |--------------------------------------------------------------------------| |----| | ||
19 | * | Tab| Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |PGDN| | ||
20 | * |--------------------------------------------------------------------------| `----' | ||
21 | * |Capslck| A| S| D| F| G| H| J| K| L| ;| '| # | Ent| | ||
22 | * |-----------------------------------------------------------------------------. | ||
23 | * |Shift| BS| Z| X| C| V| B| N| M| ,| .| /| BS|Shift| UP| | ||
24 | * |------------------------------------------------------------------------|----|----. | ||
25 | * | Ctrl| Gui| Alt| MHen| Space| Space| Hen| Alt| Ctrl| _FL|LEFT|DOWN|RGHT| | ||
26 | * `----------------------------------------------------------------------------------' | ||
27 | */ | ||
28 | [_BL] = KEYMAP( | ||
29 | 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_GRV, KC_BSPC, KC_PGUP, \ | ||
30 | 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_PGDN, \ | ||
31 | 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, \ | ||
32 | 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_RO, KC_RSFT, KC_UP, \ | ||
33 | KC_LCTL,KC_LALT,KC_LGUI,MO(_FL), KC_SPC, KC_SPC, MO(_FL), KC_RGUI, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT), | ||
34 | |||
35 | /* Keymap _FL: Function Layer | ||
36 | * ,--------------------------------------------------------------------------. ,----. | ||
37 | * | `| F1| F2| F3| F4| F5| F6| F7| F8| F9| F10| F11| F12| | Del| |BLIN| | ||
38 | * |--------------------------------------------------------------------------| |----| | ||
39 | * | | | | | | | | |PScr|SLck|Paus| | | | |BLDE| | ||
40 | * |--------------------------------------------------------------------------| `----' | ||
41 | * | | | _RS| | | | | | | | | | | | | ||
42 | * |-----------------------------------------------------------------------------. | ||
43 | * | | | | | | | | | | | | | | |PGUP| | ||
44 | * |------------------------------------------------------------------------|----|----. | ||
45 | * | | | | | | | | | | _FL|HOME|PGDN| END| | ||
46 | * `----------------------------------------------------------------------------------' | ||
47 | */ | ||
48 | [_FL] = KEYMAP( | ||
49 | 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_TRNS,KC_DEL, BL_STEP, \ | ||
50 | KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PSCR,KC_SLCK,KC_PAUS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, \ | ||
51 | KC_TRNS,KC_TRNS,MO(_RS),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \ | ||
52 | KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_PGUP, \ | ||
53 | KC_TRNS,KC_TRNS,KC_TRNS,MO(_FL), KC_TRNS,KC_TRNS, MO(_FL),KC_TRNS,KC_TRNS,MO(_FL),KC_HOME,KC_PGDN,KC_END), | ||
54 | |||
55 | /* Keymap _RS: Reset layer | ||
56 | * ,--------------------------------------------------------------------------. ,----. | ||
57 | * | | | | | | | | | | | | | | | | | | | ||
58 | * |--------------------------------------------------------------------------| |----| | ||
59 | * | | | | |RESET| | | | | | | | | | | | | ||
60 | * |--------------------------------------------------------------------------| `----' | ||
61 | * | | | _RS| | | | | | | | | | | | | ||
62 | * |-----------------------------------------------------------------------------. | ||
63 | * | | | | | | | | | | | | | | | | | ||
64 | * |------------------------------------------------------------------------|----|----. | ||
65 | * | | | | | | | | | | _FL| | | | | ||
66 | * `----------------------------------------------------------------------------------' | ||
67 | */ | ||
68 | [_RS] = KEYMAP( | ||
69 | KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, \ | ||
70 | 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, \ | ||
71 | KC_TRNS,KC_TRNS,MO(_RS),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \ | ||
72 | KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, \ | ||
73 | KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,MO(_FL),KC_TRNS, KC_TRNS, KC_TRNS), | ||
74 | }; | ||
75 | |||
76 | enum function_id { | ||
77 | SHIFT_ESC, | ||
78 | }; | ||
79 | |||
80 | const uint16_t PROGMEM fn_actions[] = { | ||
81 | [0] = ACTION_FUNCTION(SHIFT_ESC), | ||
82 | }; | ||
83 | |||
84 | void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { | ||
85 | static uint8_t shift_esc_shift_mask; | ||
86 | switch (id) { | ||
87 | case SHIFT_ESC: | ||
88 | shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK; | ||
89 | if (record->event.pressed) { | ||
90 | if (shift_esc_shift_mask) { | ||
91 | add_key(KC_GRV); | ||
92 | send_keyboard_report(); | ||
93 | } else { | ||
94 | add_key(KC_ESC); | ||
95 | send_keyboard_report(); | ||
96 | } | ||
97 | } else { | ||
98 | if (shift_esc_shift_mask) { | ||
99 | del_key(KC_GRV); | ||
100 | send_keyboard_report(); | ||
101 | } else { | ||
102 | del_key(KC_ESC); | ||
103 | send_keyboard_report(); | ||
104 | } | ||
105 | } | ||
106 | break; | ||
107 | } | ||
108 | } | ||
diff --git a/keyboard/clueboard2/led.c b/keyboard/clueboard2/led.c new file mode 100644 index 000000000..5788fc7b1 --- /dev/null +++ b/keyboard/clueboard2/led.c | |||
@@ -0,0 +1,36 @@ | |||
1 | /* | ||
2 | Copyright 2012 Jun Wako <wakojun@gmail.com> | ||
3 | |||
4 | This program is free software: you can redistribute it and/or modify | ||
5 | it under the terms of the GNU General Public License as published by | ||
6 | the Free Software Foundation, either version 2 of the License, or | ||
7 | (at your option) any later version. | ||
8 | |||
9 | This program is distributed in the hope that it will be useful, | ||
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | GNU General Public License for more details. | ||
13 | |||
14 | You should have received a copy of the GNU General Public License | ||
15 | along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
16 | */ | ||
17 | |||
18 | #include <avr/io.h> | ||
19 | #include "stdint.h" | ||
20 | #include "led.h" | ||
21 | |||
22 | |||
23 | void led_init_ports() { | ||
24 | // * Set our LED pins as output | ||
25 | DDRB |= (1<<4); | ||
26 | } | ||
27 | |||
28 | void led_set(uint8_t usb_led) { | ||
29 | if (usb_led & (1<<USB_LED_CAPS_LOCK)) { | ||
30 | // Turn capslock on | ||
31 | PORTB |= (1<<4); | ||
32 | } else { | ||
33 | // Turn capslock off | ||
34 | PORTB &= ~(1<<4); | ||
35 | } | ||
36 | } | ||