diff options
Diffstat (limited to 'keyboards/jj50')
-rw-r--r-- | keyboards/jj50/README.md | 2 | ||||
-rw-r--r-- | keyboards/jj50/keymaps/archetype/README.md | 22 | ||||
-rw-r--r-- | keyboards/jj50/keymaps/archetype/config.h | 8 | ||||
-rw-r--r-- | keyboards/jj50/keymaps/archetype/keymap.c | 215 | ||||
-rw-r--r-- | keyboards/jj50/keymaps/archetype/rules.mk | 65 | ||||
-rw-r--r-- | keyboards/jj50/keymaps/default/keymap.c | 4 | ||||
-rw-r--r-- | keyboards/jj50/program | 74 | ||||
-rw-r--r-- | keyboards/jj50/rules.mk | 2 |
8 files changed, 313 insertions, 79 deletions
diff --git a/keyboards/jj50/README.md b/keyboards/jj50/README.md index 397889535e..f7b8acc641 100644 --- a/keyboards/jj50/README.md +++ b/keyboards/jj50/README.md @@ -37,7 +37,7 @@ $ brew cask install crosspack-avr $ brew install --HEAD https://raw.githubusercontent.com/robertgzr/homebrew-tap/master/bootloadhid.rb ``` -In order to use the `./program` script, which can reboot the board into +In order to use the `././util/atmega32a_program.py` script, which can reboot the board into the bootloader, you'll need Python 2 with PyUSB installed: ``` diff --git a/keyboards/jj50/keymaps/archetype/README.md b/keyboards/jj50/keymaps/archetype/README.md new file mode 100644 index 0000000000..a2ae4e9123 --- /dev/null +++ b/keyboards/jj50/keymaps/archetype/README.md @@ -0,0 +1,22 @@ +# archetype keymap for jj50 keyboards +A keymap that can be used with the jj50 ortholinear keyboard. + +## Features + +- `QWERTY` layout (Default) +- `COLEMAK` layout +- `FN` layout (various keys that are rarely needed) +- `FX` layout (Control lighting and audio) +- Use `Left Ctrl` and `Left Alt` to output `()`, `[]` and `{}` by tapping once, twice or thrice respectively. Hold them down for the regular keycode (LCtrl or LAlt) +- `Right Shift` when held or Enter when tapped +- Auto-Shift enabled (long press on alphas and numeric keys outputs shifted character) +- Full arrow keys available + + +## Feedback + +I made this keymap based on the existing default one. If you happen to use this keymap [drop me a line](mailto://idimitrakopoulos@gmail.com) about what could be improved etc + +Enjoy! + +Iason Dimitrakopoulos diff --git a/keyboards/jj50/keymaps/archetype/config.h b/keyboards/jj50/keymaps/archetype/config.h new file mode 100644 index 0000000000..7955796eaf --- /dev/null +++ b/keyboards/jj50/keymaps/archetype/config.h @@ -0,0 +1,8 @@ +#pragma once + +#undef AUTO_SHIFT_TIMEOUT +#undef TAPPING_TERM + +#define AUTO_SHIFT_TIMEOUT 150 +#define TAPPING_TERM 150 +//#define BOOTMAGIC_KEY_SALT KC_LCTL diff --git a/keyboards/jj50/keymaps/archetype/keymap.c b/keyboards/jj50/keymaps/archetype/keymap.c new file mode 100644 index 0000000000..0704943e08 --- /dev/null +++ b/keyboards/jj50/keymaps/archetype/keymap.c @@ -0,0 +1,215 @@ +/* +Base Copyright 2017 Luiz Ribeiro <luizribeiro@gmail.com> +Modified 2017 Andrew Novak <ndrw.nvk@gmail.com> +Modified 2018 Wayne Jones (WarmCatUK) <waynekjones@gmail.com> +Modified 2019 Iason Dimitrakopoulos (idimitrakopoulos) <idimitrakopoulos@gmail.com> + +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 LicensezZZ +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#include QMK_KEYBOARD_H +#include "action_layer.h" +#include "rgblight.h" +#include "quantum.h" + +#define _QWERTY 0 +#define _COLEMAK 1 +#define _FN 2 +#define _FX 3 + +enum { + TD_BSPC_DEL = 0, + TD_LCTL_LBRC = 1, + TD_LALT_RBRC = 2, +}; + + +void left_brackets(qk_tap_dance_state_t *state, void *user_data) { + if (state->count == 1) { + if (state->interrupted || !state->pressed) { + register_mods(MOD_LSFT); + register_code(KC_9); + } else { + register_mods(MOD_LCTL); + } + } else if (state->count == 2) { + register_code(KC_LBRC); + } else if (state->count == 3) { + register_mods(MOD_LSFT); + register_code(KC_LBRC); + } +} + +void left_brackets_reset(qk_tap_dance_state_t *state, void *user_data) { + if (state->count == 1) { + if (state->interrupted || !state->pressed) { + unregister_mods(MOD_LSFT); + unregister_code(KC_9); + } else { + unregister_mods(MOD_LCTL); + } + } else if (state->count == 2) { + unregister_code(KC_LBRC); + } else if (state->count == 3) { + unregister_mods(MOD_LSFT); + unregister_code(KC_LBRC); + } +} + +void right_brackets(qk_tap_dance_state_t *state, void *user_data) { + if (state->count == 1) { + if (state->interrupted || !state->pressed) { + register_mods(MOD_LSFT); + register_code(KC_0); + } else { + register_mods(MOD_LALT); + } + } else if (state->count == 2) { + register_code(KC_RBRC); + } else if (state->count == 3) { + register_mods(MOD_LSFT); + register_code(KC_RBRC); + } +} + +void right_brackets_reset(qk_tap_dance_state_t *state, void *user_data) { + if (state->count == 1) { + if (state->interrupted || !state->pressed) { + unregister_mods(MOD_LSFT); + unregister_code(KC_0); + } else { + unregister_mods(MOD_LALT); + } + } else if (state->count == 2) { + unregister_code(KC_RBRC); + } else if (state->count == 3) { + unregister_mods(MOD_LSFT); + unregister_code(KC_RBRC); + } +} + +qk_tap_dance_action_t tap_dance_actions[] = { + // Single tap = Backspace | Double tap = Delete + [TD_BSPC_DEL] = ACTION_TAP_DANCE_DOUBLE(KC_BSPC, KC_DEL), + // Single tap = ( | Double tap = [ | Triple tap = { | Single hold = KC_LCTL + [TD_LCTL_LBRC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, left_brackets, left_brackets_reset), + // Single tap = ) | Double tap = ] | Triple tap = } | Single hold = KC_LALT + [TD_LALT_RBRC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, right_brackets, right_brackets_reset), +}; + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_QWERTY] = LAYOUT( \ + + //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+. + //| | | | | | | | | | | | | + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, 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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_DOT, KC_SLSH, KC_UP, SFT_T(KC_ENT), \ + //| | | | | | | | | | | | | + //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+| + //| | | | | | | | | | | | | + TD(TD_LCTL_LBRC), KC_LGUI, TD(TD_LALT_RBRC), _______, _______, LT(_FN, KC_SPC), LT(_FN, KC_SPC), _______, KC_COMM, KC_LEFT, KC_DOWN, KC_RGHT \ + //| | | | | | | | | | | | | + //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+' + ), + + [_COLEMAK] = LAYOUT( \ + + //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+. + //| | | | | | | | | | | | | + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + //| | | | | | | | | | | | | + //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+| + //| | | | | | | | | | | | | + _______, _______, _______, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, _______, \ + //| | | | | | | | | | | | | + //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+| + //| | | | | | | | | | | | | + _______, _______, KC_R, KC_S, KC_T, KC_D, _______, KC_N, KC_E, KC_I, KC_O, _______, \ + //| | | | | | | | | | | | | + //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+| + //| | | | | | | | | | | | | + _______, _______, _______, _______, _______, _______, KC_K, _______, _______, _______, _______, _______, \ + //| | | | | | | | | | | | | + //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+| + //| | | | | | | | | | | | | + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ + //| | | | | | | | | | | | | + //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+' + ), + + [_FN] = LAYOUT( \ + + //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+. + //| | | | | | | | | | | | | + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL, \ + //| | | | | | | | | | | | | + //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+| + //| | | | | | | | | | | | | + KC_PSCR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_EQUAL, \ + //| | | | | | | | | | | | | + //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+| + //| | | | | | | | | | | | | + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MINUS, \ + //| | | | | | | | | | | | | + //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+| + //| | | | | | | | | | | | | + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, \ + //| | | | | | | | | | | | | + //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+| + //| | | | | | | | | | | | | + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END \ + //| | | | | | | | | | | | | + //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+' + ), + + [_FX] = LAYOUT( \ + + //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+. + //| | | | | | | | | | | | | + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + //| | | | | | | | | | | | | + //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+| + //| | | | | | | | | | | | | + _______, BL_ON, BL_INC, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, \ + //| | | | | | | | | | | | | + //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+| + //| | | | | | | | | | | | | + _______, BL_OFF, BL_DEC, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, _______, _______, \ + //| | | | | | | | | | | | | + //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+| + //| | | | | | | | | | | | | + _______, RGB_TOG, BL_STEP, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, _______, _______, _______, _______, \ + //| | | | | | | | | | | | | + //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+| + //| | | | | | | | | | | | | + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ + //| | | | | | | | | | | | | + //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+' + ), + + +}; diff --git a/keyboards/jj50/keymaps/archetype/rules.mk b/keyboards/jj50/keymaps/archetype/rules.mk new file mode 100644 index 0000000000..e32e8ce741 --- /dev/null +++ b/keyboards/jj50/keymaps/archetype/rules.mk @@ -0,0 +1,65 @@ +# Copyright 2017 Luiz Ribeiro <luizribeiro@gmail.com> +# Modified 2018 Wayne Jones (WarmCatUK) <waynekjones@gmail.com> + +# 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 <http://www.gnu.org/licenses/>. + +# MCU name +MCU = atmega32a +PROTOCOL = VUSB + +# unsupported features for now +NO_UART = yes +NO_SUSPEND_POWER_DOWN = yes + +# processor frequency +F_CPU = 12000000 + +# Bootloader +# This definition is optional, and if your keyboard supports multiple bootloaders of +# different sizes, comment this out, and the correct address will be loaded +# automatically (+60). See bootloader.mk for all options. +BOOTLOADER = bootloadHID + +# build options +BOOTMAGIC_ENABLE = lite +MOUSEKEY_ENABLE = no +EXTRAKEY_ENABLE = yes +CONSOLE_ENABLE = no +COMMAND_ENABLE = yes +BACKLIGHT_ENABLE = yes +RGBLIGHT_ENABLE = yes +RGBLIGHT_CUSTOM_DRIVER = yes +NKRO_ENABLE = no +# Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +TAP_DANCE_ENABLE = yes +AUTO_SHIFT_ENABLE = yes + + +DISABLE_WS2812 = no + +KEY_LOCK_ENABLE = yes +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + + +#OPT_DEFS = -DDEBUG_LEVEL=0 + +# custom matrix setup +CUSTOM_MATRIX = yes +SRC = matrix.c i2c.c backlight.c + +# programming options +PROGRAM_CMD = ./keyboards/ps2avrGB/program $(TARGET).hex + +LAYOUTS = ortho_5x12 diff --git a/keyboards/jj50/keymaps/default/keymap.c b/keyboards/jj50/keymaps/default/keymap.c index 9d753eb8e6..d5334d4956 100644 --- a/keyboards/jj50/keymaps/default/keymap.c +++ b/keyboards/jj50/keymaps/default/keymap.c @@ -18,8 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */ #include QMK_KEYBOARD_H -#include "action_layer.h" -#include "rgblight.h" #define ______ KC_TRNS #define _DEFLT 0 @@ -113,7 +111,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______, \ BL_STEP, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ ), - + /* Fn * ,-----------------------------------------------------------------------------------. * | | | £ | | | | | | | | | | diff --git a/keyboards/jj50/program b/keyboards/jj50/program deleted file mode 100644 index a88d9cd9b0..0000000000 --- a/keyboards/jj50/program +++ /dev/null @@ -1,74 +0,0 @@ -#!/usr/bin/env python -# Copyright 2017 Luiz Ribeiro <luizribeiro@gmail.com> -# -# 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 <http://www.gnu.org/licenses/>. - -from __future__ import print_function - -import os -import sys -import time -import usb - -if len(sys.argv) < 2: - print('Usage: %s <firmware.hex>' % sys.argv[0]) - sys.exit(1) - -print('Searching for ps2avrGB... ', end='') - -dev = usb.core.find(idVendor=0x20A0, idProduct=0x422D) -if dev is None: - raise ValueError('Device not found') - -print('Found', end='\n\n') - -print('Device Information:') -print(' idVendor: %d (0x%04x)' % (dev.idVendor, dev.idVendor)) -print(' idProduct: %d (0x%04x)' % (dev.idProduct, dev.idProduct)) -print('Manufacturer: %s' % (dev.iManufacturer)) -print('Serial: %s' % (dev.iSerialNumber)) -print('Product: %s' % (dev.iProduct), end='\n\n') - -print('Transferring control to bootloader... ', end='') - -dev.set_configuration() - -request_type = usb.util.build_request_type( - usb.util.CTRL_OUT, - usb.util.CTRL_TYPE_CLASS, - usb.util.CTRL_RECIPIENT_DEVICE) - -USBRQ_HID_SET_REPORT = 0x09 -HID_REPORT_OPTION = 0x0301 - - -try: - dev.ctrl_transfer( - request_type, - USBRQ_HID_SET_REPORT, - HID_REPORT_OPTION, - 0, - [0, 0, 0xFF] + [0] * 5 - ) -except usb.core.USBError: - # for some reason I keep getting USBError, but it works! - pass - -# wait a bit until bootloader starts up -time.sleep(2) - -print('OK') -print('Programming...') -if os.system('bootloadHID -r "%s"' % sys.argv[1]) == 0: - print('\nDone!') diff --git a/keyboards/jj50/rules.mk b/keyboards/jj50/rules.mk index 1a18ec4fe4..4ee5719185 100644 --- a/keyboards/jj50/rules.mk +++ b/keyboards/jj50/rules.mk @@ -58,6 +58,6 @@ CUSTOM_MATRIX = yes SRC = matrix.c i2c.c backlight.c # programming options -PROGRAM_CMD = ./keyboards/ps2avrGB/program $(TARGET).hex +PROGRAM_CMD = ./util/atmega32a_program.py $(TARGET).hex LAYOUTS = ortho_5x12 |