Compare commits

...
9 Commits
Author SHA1 Message Date
QMK Bot 7642075fc3 format code according to conventions [skip ci] 2020-04-05 22:57:28 +00:00
Ryan ca91dc594b V-USB: Remove some stuff from usbconfig.h that should not be configurable (#8656)
* V-USB: Remove some stuff from usbconfig.h that should not be configurable

* Clean up some ifdefs

* And some more

* Even more
2020-04-05 23:25:07 +01:00
jotixandDrashna Jaelre 26cb83b8c0 jotix layouts (#8644)
* jotix layouts

* jotix ortho 4x4 layout

* Update layouts/community/ortho_4x4/jotix/keymap.c

Co-Authored-By: Drashna Jaelre <[email protected]>

* jotix

Co-authored-by: Drashna Jaelre <[email protected]>
2020-04-05 23:15:24 +01:00
Joel Challis 2392ddb76b Enable memcore to fix malloc/rand crashes (#8695) 2020-04-05 22:15:40 +01:00
Ryan 6de77141a4 Doctor: Add avrdude/dfu-util/dfu-programmer version printing (#8678)
* Doctor: Add avrdude/dfu-util/dfu-programmer version printing

* Extra newline

* Iterate through version checking functions
2020-04-05 18:11:55 +02:00
ThePanduuhandJames Young 6f6c2e1c5c updated rules.mk and default keymap of Wonderland for VIA support (#8668)
* updated rules.mk and default keymap of Wonderland for VIA support

* Restored default keymap and rules.mk, added via keymap folder with modified default keymap and rules.mk, also fixed VendorID in config.h

* fixed jargon on layers 3 and 4 of Wonderland VIA keymap

* cleaned up via keymap, removed fluff

* default keymap for Wonderland restored

* removed unnecessary information from rules.mk

* made more readable per noroadsleft suggestion

Co-Authored-By: James Young <[email protected]>

Co-authored-by: James Young <[email protected]>
2020-04-05 15:19:36 +01:00
Wilba 48cad94d7e Added Caps Lock LED handler to wilba.tech PCBs (#8660) 2020-04-05 15:18:17 +01:00
halfenergized 90665aeec9 Add keyboard TGR-910 (#8683)
* Add files via upload

* Update info.json

* Update info.json

* Update 910.h

* Update 910.h

* Update 910.h

* Update info.json

* Update 910.c

* Update 910.h

* Update config.h

* Update config.h

* Update keymap.c

* Update rules.mk

* Update readme.md

* Delete config.h

* Delete readme.md
2020-04-05 14:48:23 +01:00
Drashna Jaelre 845953cc67 V-USB remote wakeup (#7627)
* V-USB remote wakeup

Backport from tmk/tmk_keyboard@391c979be7

* Change vusb.c remote wake config

as per fauxpark's suggestion
2020-04-05 18:18:19 +10:00
39 changed files with 493 additions and 144 deletions

No files matched your search

+1 -1
View File
@@ -331,7 +331,7 @@
* @note The default is @p TRUE. * @note The default is @p TRUE.
*/ */
#if !defined(CH_CFG_USE_MEMCORE) #if !defined(CH_CFG_USE_MEMCORE)
#define CH_CFG_USE_MEMCORE FALSE #define CH_CFG_USE_MEMCORE TRUE
#endif #endif
/** /**
+1 -1
View File
@@ -331,7 +331,7 @@
* @note The default is @p TRUE. * @note The default is @p TRUE.
*/ */
#if !defined(CH_CFG_USE_MEMCORE) #if !defined(CH_CFG_USE_MEMCORE)
#define CH_CFG_USE_MEMCORE FALSE #define CH_CFG_USE_MEMCORE TRUE
#endif #endif
/** /**
+1 -1
View File
@@ -331,7 +331,7 @@
* @note The default is @p TRUE. * @note The default is @p TRUE.
*/ */
#if !defined(CH_CFG_USE_MEMCORE) #if !defined(CH_CFG_USE_MEMCORE)
#define CH_CFG_USE_MEMCORE FALSE #define CH_CFG_USE_MEMCORE TRUE
#endif #endif
/** /**
+1 -1
View File
@@ -331,7 +331,7 @@
* @note The default is @p TRUE. * @note The default is @p TRUE.
*/ */
#if !defined(CH_CFG_USE_MEMCORE) #if !defined(CH_CFG_USE_MEMCORE)
#define CH_CFG_USE_MEMCORE FALSE #define CH_CFG_USE_MEMCORE TRUE
#endif #endif
/** /**
+1 -1
View File
@@ -331,7 +331,7 @@
* @note The default is @p TRUE. * @note The default is @p TRUE.
*/ */
#if !defined(CH_CFG_USE_MEMCORE) #if !defined(CH_CFG_USE_MEMCORE)
#define CH_CFG_USE_MEMCORE FALSE #define CH_CFG_USE_MEMCORE TRUE
#endif #endif
/** /**
+1 -1
View File
@@ -331,7 +331,7 @@
* @note The default is @p TRUE. * @note The default is @p TRUE.
*/ */
#if !defined(CH_CFG_USE_MEMCORE) #if !defined(CH_CFG_USE_MEMCORE)
#define CH_CFG_USE_MEMCORE FALSE #define CH_CFG_USE_MEMCORE TRUE
#endif #endif
/** /**
+1 -1
View File
@@ -331,7 +331,7 @@
* @note The default is @p TRUE. * @note The default is @p TRUE.
*/ */
#if !defined(CH_CFG_USE_MEMCORE) #if !defined(CH_CFG_USE_MEMCORE)
#define CH_CFG_USE_MEMCORE FALSE #define CH_CFG_USE_MEMCORE TRUE
#endif #endif
/** /**
+1 -1
View File
@@ -331,7 +331,7 @@
* @note The default is @p TRUE. * @note The default is @p TRUE.
*/ */
#if !defined(CH_CFG_USE_MEMCORE) #if !defined(CH_CFG_USE_MEMCORE)
#define CH_CFG_USE_MEMCORE FALSE #define CH_CFG_USE_MEMCORE TRUE
#endif #endif
/** /**
+1 -1
View File
@@ -331,7 +331,7 @@
* @note The default is @p TRUE. * @note The default is @p TRUE.
*/ */
#if !defined(CH_CFG_USE_MEMCORE) #if !defined(CH_CFG_USE_MEMCORE)
#define CH_CFG_USE_MEMCORE FALSE #define CH_CFG_USE_MEMCORE TRUE
#endif #endif
/** /**
+1 -1
View File
@@ -331,7 +331,7 @@
* @note The default is @p TRUE. * @note The default is @p TRUE.
*/ */
#if !defined(CH_CFG_USE_MEMCORE) #if !defined(CH_CFG_USE_MEMCORE)
#define CH_CFG_USE_MEMCORE FALSE #define CH_CFG_USE_MEMCORE TRUE
#endif #endif
/** /**
+1 -1
View File
@@ -331,7 +331,7 @@
* @note The default is @p TRUE. * @note The default is @p TRUE.
*/ */
#if !defined(CH_CFG_USE_MEMCORE) #if !defined(CH_CFG_USE_MEMCORE)
#define CH_CFG_USE_MEMCORE FALSE #define CH_CFG_USE_MEMCORE TRUE
#endif #endif
/** /**
+1 -1
View File
@@ -331,7 +331,7 @@
* @note The default is @p TRUE. * @note The default is @p TRUE.
*/ */
#if !defined(CH_CFG_USE_MEMCORE) #if !defined(CH_CFG_USE_MEMCORE)
#define CH_CFG_USE_MEMCORE FALSE #define CH_CFG_USE_MEMCORE TRUE
#endif #endif
/** /**
+1 -1
View File
@@ -331,7 +331,7 @@
* @note The default is @p TRUE. * @note The default is @p TRUE.
*/ */
#if !defined(CH_CFG_USE_MEMCORE) #if !defined(CH_CFG_USE_MEMCORE)
#define CH_CFG_USE_MEMCORE FALSE #define CH_CFG_USE_MEMCORE TRUE
#endif #endif
/** /**
@@ -331,7 +331,7 @@
* @note The default is @p TRUE. * @note The default is @p TRUE.
*/ */
#if !defined(CH_CFG_USE_MEMCORE) #if !defined(CH_CFG_USE_MEMCORE)
#define CH_CFG_USE_MEMCORE FALSE #define CH_CFG_USE_MEMCORE TRUE
#endif #endif
/** /**
+1 -1
View File
@@ -20,7 +20,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h" #include "config_common.h"
/* USB Device descriptor parameter */ /* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED #define VENDOR_ID 0x4705
#define PRODUCT_ID 0xA71C #define PRODUCT_ID 0xA71C
#define DEVICE_VER 0x0003 #define DEVICE_VER 0x0003
#define MANUFACTURER Maartenwut #define MANUFACTURER Maartenwut
@@ -0,0 +1,33 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_ESC, 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_DEL, KC_BSPC,
KC_PGUP, 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, 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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
KC_LCTL, KC_LAPO, KC_BSPC, KC_LGUI, KC_SPC, KC_RAPC, KC_RCTL
),
[1] = LAYOUT(
RGB_TOG, VLK_TOG, 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_NO, RESET,
RGB_MOD, 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,
RGB_RMOD, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO,
_______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_NO, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, _______,
_______, KC_LALT, _______, _______, _______, KC_RALT, _______
),
[2] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______
),
[3] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______
)
};
@@ -0,0 +1,2 @@
VIA_ENABLE = yes
LTO_ENABLE = yes
+2 -1
View File
@@ -19,7 +19,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work 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 RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls MIDI_ENABLE = no # MIDI controls
@@ -28,3 +28,4 @@ UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUTO_SHIFT_ENABLE = no AUTO_SHIFT_ENABLE = no
VELOCIKEY_ENABLE = yes VELOCIKEY_ENABLE = yes
+1 -1
View File
@@ -331,7 +331,7 @@
* @note The default is @p TRUE. * @note The default is @p TRUE.
*/ */
#if !defined(CH_CFG_USE_MEMCORE) #if !defined(CH_CFG_USE_MEMCORE)
#define CH_CFG_USE_MEMCORE FALSE #define CH_CFG_USE_MEMCORE TRUE
#endif #endif
/** /**
+1 -1
View File
@@ -331,7 +331,7 @@
* @note The default is @p TRUE. * @note The default is @p TRUE.
*/ */
#if !defined(CH_CFG_USE_MEMCORE) #if !defined(CH_CFG_USE_MEMCORE)
#define CH_CFG_USE_MEMCORE FALSE #define CH_CFG_USE_MEMCORE TRUE
#endif #endif
/** /**
+37
View File
@@ -0,0 +1,37 @@
/* Copyright 2020 halfenergized
*
* 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/>.
*/
#include "910.h"
void keyboard_pre_init_kb(void) {
led_init_ports();
keyboard_pre_init_user();
}
void led_init_ports(void) {
setPinOutput(D0);
setPinOutput(D1);
setPinOutput(D6);
}
bool led_update_kb(led_t led_state) {
if (led_update_user(led_state)) {
writePin(D0, led_state.num_lock);
writePin(D1, led_state.caps_lock);
writePin(D6, led_state.scroll_lock);
}
return true;
}
+84
View File
@@ -0,0 +1,84 @@
/* Copyright 2020 halfenergized
*
* 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/>.
*/
#pragma once
#include "quantum.h"
#define ___ KC_NO
#define LAYOUT_all( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k6d, k53, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k52, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k51, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k50, \
k40, k41, k42, k44, k45, k46, k47, k48, k49, 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, ___, k44, k45, k46, k47, k48, k49, ___, k4b, k4c, k4d }, \
{ k50, k51, k52, k53, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
{ ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k6d } \
}
#define LAYOUT_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, k52, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, k51, \
k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k50, \
k40, k41, k42, k45, k47, k48, 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, ___, k2d }, \
{ k30, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d }, \
{ k40, k41, k42, ___, ___, k45, ___, k47, k48, ___, ___, k4b, k4c, k4d }, \
{ k50, k51, k52, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
{ ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ } \
}
#define LAYOUT_ansi_split_bs( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k6d, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k52, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, k51, \
k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k50, \
k40, k41, k42, k45, k47, k48, 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, ___, k2d }, \
{ k30, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d }, \
{ k40, k41, k42, ___, ___, k45, ___, k47, k48, ___, ___, k4b, k4c, k4d }, \
{ k50, k51, k52, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
{ ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k6d } \
}
#define LAYOUT_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, k52, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k51, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k50, \
k40, k41, k42, k45, k47, k48, 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, ___ }, \
{ 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, ___, k47, k48, ___, ___, k4b, k4c, k4d }, \
{ k50, k51, k52, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
{ ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ } \
}
+53
View File
@@ -0,0 +1,53 @@
/*
Copyright 2020 halfenergized
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/>.
*/
#pragma once
#include "config_common.h"
#define VENDOR_ID 0x20A0
#define PRODUCT_ID 0x422D
#define DEVICE_VER 0x0001
#define MANUFACTURER Quadcube
#define PRODUCT TGR-910
#define DESCRIPTION 65% Keyboard
#define RGBLED_NUM 19
#define MATRIX_ROWS 7
#define MATRIX_COLS 14
// 0 1 2 3 4 5 6 7 8 9 A B C D
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B5, B6 }
#define MATRIX_COL_PINS { D7, C2, C3, C4, C5, C6, C7, A7, A6, A5, A4, A3, A1, A0 }
#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
#define BACKLIGHT_PIN D4
#define BACKLIGHT_LEVELS 3
#define RGBLIGHT_ANIMATIONS
/* key combination for magic key command */
/* defined by default; to change, uncomment and set to the combination you want */
// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT)
/* Bootmagic Lite key configuration */
// #define BOOTMAGIC_LITE_ROW 0
// #define BOOTMAGIC_LITE_COLUMN 0
+24
View File
@@ -0,0 +1,24 @@
{
"keyboard_name": "TGR-910",
"url": "",
"maintainer": "qmk",
"width": 16,
"height": 5,
"layouts": {
"LAYOUT_all": {
"layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":13.75, "y":2, "w":1.25}, {"x":15, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":2.25}, {"x":6, "y":4, "w":1.25}, {"x":7.25, "y":4, "w":2.75}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}]
},
"LAYOUT_ansi": {
"layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}]
},
"LAYOUT_ansi_split_bs": {
"layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}]
},
"LAYOUT_iso": {
"layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":13.75, "y":1, "w":1.25, "h":2}, {"x":15, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}]
}
}
}
@@ -0,0 +1,25 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* layer 0: qwerty */
[0] = LAYOUT_ansi_split_bs(
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_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_PGUP,
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_PGDN,
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_UP, MO(2),
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[1] = LAYOUT_ansi_split_bs(
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_BSLS, KC_DEL,
BL_TOGG, BL_STEP, BL_INC, BL_DEC, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME,
RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END,
KC_TRNS, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[2] = LAYOUT_ansi_split_bs(
KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MSTP, KC_MNXT),
};
+19
View File
@@ -0,0 +1,19 @@
# tgr-910
65% custom keyboard with a very nice design.
* Keyboard Maintainer: [poisonking](https://github.com/halfenergized)
* Hardware Supported: TGR-910 (Quadcube PCB)
* Hardware Availability: [Geekhack GB](https://geekhack.org/index.php?topic=86047.0)
Make example for this keyboard (after setting up your build environment):
make tgr/910:default
Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid))
make tgr/910:default:flash
**Reset Key**: Hold down the key located at `k0d`, commonly programmed as *Backspace* while plugging in the keyboard.
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+24
View File
@@ -0,0 +1,24 @@
# MCU name
MCU = atmega32a
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
# ATmega32A bootloadHID
# ATmega328P USBasp
BOOTLOADER = bootloadHID
# build options
BOOTMAGIC_ENABLE = no
MOUSEKEY_ENABLE = no
EXTRAKEY_ENABLE = yes
CONSOLE_ENABLE = no
COMMAND_ENABLE = yes
BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes
WS2812_DRIVER = i2c
OPT_DEFS = -DDEBUG_LEVEL=0
+1 -1
View File
@@ -331,7 +331,7 @@
* @note The default is @p TRUE. * @note The default is @p TRUE.
*/ */
#if !defined(CH_CFG_USE_MEMCORE) #if !defined(CH_CFG_USE_MEMCORE)
#define CH_CFG_USE_MEMCORE FALSE #define CH_CFG_USE_MEMCORE TRUE
#endif #endif
/** /**
+13
View File
@@ -1 +1,14 @@
#include "wt60_d.h" #include "wt60_d.h"
void keyboard_pre_init_kb(void) {
setPinOutput(F1);
keyboard_pre_init_user();
}
bool led_update_kb(led_t led_state) {
if (led_update_user(led_state)) {
writePin(F1, led_state.caps_lock);
}
return true;
}
+14 -1
View File
@@ -14,4 +14,17 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
// Nothing to see here, move along... ;-) #include "wt69_a.h"
void keyboard_pre_init_kb(void) {
setPinOutput(F1);
keyboard_pre_init_user();
}
bool led_update_kb(led_t led_state) {
if (led_update_user(led_state)) {
writePin(F1, led_state.caps_lock);
}
return true;
}
+1 -1
View File
@@ -331,7 +331,7 @@
* @note The default is @p TRUE. * @note The default is @p TRUE.
*/ */
#if !defined(CH_CFG_USE_MEMCORE) #if !defined(CH_CFG_USE_MEMCORE)
#define CH_CFG_USE_MEMCORE FALSE #define CH_CFG_USE_MEMCORE TRUE
#endif #endif
/** /**
+14 -22
View File
@@ -8,7 +8,7 @@ enum layers {
#define LOWER MO(_LOWER) #define LOWER MO(_LOWER)
#define RAISE MO(_RAISE) #define RAISE MO(_RAISE)
#define TGLOWER TG(_LOWER) #define SHRAISE LM(_RAISE, MOD_LSFT)
static bool is_ctl_pressed; static bool is_ctl_pressed;
static bool is_esc_pressed; static bool is_esc_pressed;
@@ -20,35 +20,35 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ┌───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┐ // ┌───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┐
KC_ESC, 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_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
// ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤ // ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,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_ENT, KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_UP, KC_SLSH,
// ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤ // ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤
KC_LCTL,KC_LGUI,KC_LALT,KC_RALT,LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT,KC_DOWN,KC_UP, KC_RGHT KC_LCTL,KC_LGUI,KC_LALT,KC_RALT,LOWER, KC_SPC, KC_SPC, RAISE, SHRAISE,KC_LEFT,KC_DOWN,KC_RGHT
// └───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┘ // └───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┘
), ),
[_LOWER] = LAYOUT_ortho_4x12 ( [_LOWER] = LAYOUT_ortho_4x12 (
// ┌───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┐ // ┌───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┐
_______,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, _______,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,_______,
// ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤ // ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤
_______,KC_MINS,KC_EQL, KC_LBRC,KC_RBRC,KC_BSLS,KC_GRV, _______,_______,_______,_______,_______, _______,KC_F11, KC_F12, KC_INS, KC_HOME,KC_PGUP,_______,_______,_______,_______,_______,_______,
// ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤ // ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤
_______,KC_UNDS,KC_PLUS,KC_LCBR,KC_RCBR,KC_PIPE,KC_TILD,KC_CAPS,_______,_______,_______,_______, _______,_______,_______,KC_DEL, KC_END, KC_PGDN,_______,_______,_______,KC_BTN1,KC_MS_U,KC_BTN2,
// ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤ // ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ _______,_______,_______,_______,_______,_______,_______,_______,_______,KC_MS_L,KC_MS_D,KC_MS_R
// └───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┘ // └───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┘
), ),
[_RAISE] = LAYOUT_ortho_4x12 ( [_RAISE] = LAYOUT_ortho_4x12 (
// ┌───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┐ // ┌───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┐
_______,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
// ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤ // ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤
_______,KC_F11, KC_F12, _______,_______,_______,_______,KC_VOLD,KC_MUTE,KC_VOLU,_______,_______, KC_CAPS,_______,_______,_______,_______,_______,KC_LBRC,KC_RBRC,KC_BSLS,KC_QUOT,_______,_______,
// ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤ // ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,KC_MINS,KC_EQL, _______,_______,KC_VOLU,_______,
// ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤ // ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤
_______,_______,_______,_______,TGLOWER,_______,_______,_______,KC_HOME,KC_PGDN,KC_PGUP,KC_END _______,_______,_______,_______,_______,_______,_______,_______,_______,KC_BSPC,KC_VOLD,KC_MUTE
// └───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┘ // └───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┘
), ),
@@ -56,11 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
uint32_t layer_state_set_user(uint32_t state) { uint32_t layer_state_set_user(uint32_t state) {
#ifdef JOTANCK_LEDS #ifdef JOTANCK_LEDS
if (biton32(state) == _LOWER) { writePin(JOTANCK_LED2, (get_highest_layer(state) == _RAISE));
writePinHigh(JOTANCK_LED1);
} else {
writePinLow(JOTANCK_LED1);
}
#endif #endif
return state; return state;
} }
@@ -74,11 +70,7 @@ bool led_update_user(led_t led_state) {
#ifdef JOTANCK_LEDS #ifdef JOTANCK_LEDS
// CapsLock led // CapsLock led
if (led_state.caps_lock) { writePin(JOTANCK_LED1, led_state.caps_lock);
writePinHigh(JOTANCK_LED2);
} else {
writePinLow(JOTANCK_LED2);
}
#endif #endif
return true; return true;
} }
+62 -29
View File
@@ -1,41 +1,74 @@
#include QMK_KEYBOARD_H #include QMK_KEYBOARD_H
extern keymap_config_t keymap_config; enum layers {
_NUMPAD,
_GAMEPAD,
_FN
};
// Each layer gets a name for readability, which is then used in the keymap matrix below. static bool is_p0_pressed;
// The underscores don't mean anything - you can have a layer called STUFF or any other name. static bool is_p7_pressed;
// Layer names don't all need to be of the same length, obviously, and you can also skip them static bool is_pmns_pressed;
// entirely and just use numbers.
#define _NUMPAD 0 #define TGGAME TG(_GAMEPAD)
#define _LOWER 1
#define LOWER LT(_LOWER, KC_PENT)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Numpad
* +-------+-------+-------+-------+
* | 7 | 8 | 9 | - |
* +-------+-------+-------+-------+
* | 4 | 5 | 6 | + |
* +-------+-------+-------+-------+
* | 1 | 2 | 3 | / |
* +-------+-------+-------+-------+
* | | 0 | . | * |
* +-------+-------+-------+-------+
*/
[_NUMPAD] = LAYOUT_ortho_4x4 ( [_NUMPAD] = LAYOUT_ortho_4x4 (
KC_P7, KC_P8, KC_P9, KC_PMNS, KC_P7, KC_P8, KC_P9, KC_PMNS,
KC_P4, KC_P5, KC_P6, KC_PPLS, KC_P4, KC_P5, KC_P6, KC_PPLS,
KC_P1, KC_P2, KC_P3, KC_PSLS, KC_P1, KC_P2, KC_P3, MO(_FN),
LOWER, KC_P0, KC_PDOT,KC_PAST KC_P0, KC_PDOT,KC_PSLS,KC_PAST
), ),
/* Lower */ [_GAMEPAD] = LAYOUT_ortho_4x4 (
[_LOWER] = LAYOUT_ortho_4x4 ( KC_5, KC_6, KC_7, KC_8,
KC_NLCK,_______,_______,RESET , KC_1, KC_2, KC_3, KC_4,
_______,_______,_______,_______, KC_Q, KC_W, KC_E, _______,
_______,_______,_______,_______, KC_A, KC_S, KC_D, KC_SPC
_______,_______,_______,_______
), ),
[_FN] = LAYOUT_ortho_4x4 (
KC_PERC,KC_CIRC,KC_AMPR,KC_ASTR,
KC_EXLM,KC_AT, KC_HASH,KC_DLR,
KC_Z, KC_X, KC_C, _______,
KC_NLCK,_______,_______,TGGAME
)
}; };
layer_state_t layer_state_set_user(layer_state_t state) {
#ifdef JOTPAD16_LEDS
writePin(JOTPAD16_LED1, (get_highest_layer(state) == _FN));
writePin(JOTPAD16_LED2, (get_highest_layer(state) == _GAMEPAD));
#endif
return state;
}
bool led_update_user(led_t led_state) {
// NumLock allways on
if (!led_state.num_lock) {
tap_code(KC_NUMLOCK);
}
return true;
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case KC_P0:
is_p0_pressed = record->event.pressed;
break;
case KC_P7:
is_p7_pressed = record->event.pressed;
break;
case KC_PMNS:
is_pmns_pressed = record->event.pressed;
break;
};
return true;
}
void matrix_scan_user(void) {
if (is_p0_pressed && is_p7_pressed && is_pmns_pressed) {
reset_keyboard();
}
}
+1 -4
View File
@@ -1,6 +1,3 @@
# Jotix ortho 4x4 keymap # Jotix ortho 4x4 keymap
![keymap](https://i.imgur.com/e67yN7x.jpg) Tested on jotpad16
Enter is 'Lower' on hold.
+31 -6
View File
@@ -63,6 +63,33 @@ def check_avr_gcc_version():
return False return False
def check_avrdude_version():
if 'output' in ESSENTIAL_BINARIES['avrdude']:
last_line = ESSENTIAL_BINARIES['avrdude']['output'].split('\n')[-2]
version_number = last_line.split()[2][:-1]
cli.log.info('Found avrdude version %s', version_number)
return True
def check_dfu_util_version():
if 'output' in ESSENTIAL_BINARIES['dfu-util']:
first_line = ESSENTIAL_BINARIES['dfu-util']['output'].split('\n')[0]
version_number = first_line.split()[1]
cli.log.info('Found dfu-util version %s', version_number)
return True
def check_dfu_programmer_version():
if 'output' in ESSENTIAL_BINARIES['dfu-programmer']:
first_line = ESSENTIAL_BINARIES['dfu-programmer']['output'].split('\n')[0]
version_number = first_line.split()[1]
cli.log.info('Found dfu-programmer version %s', version_number)
return True
def check_binaries(): def check_binaries():
"""Iterates through ESSENTIAL_BINARIES and tests them. """Iterates through ESSENTIAL_BINARIES and tests them.
""" """
@@ -156,7 +183,7 @@ def is_executable(command):
# Make sure the command can be executed # Make sure the command can be executed
version_arg = ESSENTIAL_BINARIES[command].get('version_arg', '--version') version_arg = ESSENTIAL_BINARIES[command].get('version_arg', '--version')
check = subprocess.run([command, version_arg], stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=5, universal_newlines=True) check = run([command, version_arg], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, timeout=5, universal_newlines=True)
ESSENTIAL_BINARIES[command]['output'] = check.stdout ESSENTIAL_BINARIES[command]['output'] = check.stdout
@@ -240,11 +267,9 @@ def doctor(cli):
ok = False ok = False
# Make sure the tools are at the correct version # Make sure the tools are at the correct version
if not check_arm_gcc_version(): for check in (check_arm_gcc_version, check_avr_gcc_version, check_avrdude_version, check_dfu_util_version, check_dfu_programmer_version):
ok = False if not check():
ok = False
if not check_avr_gcc_version():
ok = False
# Check out the QMK submodules # Check out the QMK submodules
sub_ok = check_submodules() sub_ok = check_submodules()
+20
View File
@@ -20,6 +20,7 @@
#include "timer.h" #include "timer.h"
#include "uart.h" #include "uart.h"
#include "debug.h" #include "debug.h"
#include "suspend.h"
#ifdef SLEEP_LED_ENABLE #ifdef SLEEP_LED_ENABLE
# include "sleep_led.h" # include "sleep_led.h"
#endif #endif
@@ -41,6 +42,23 @@ static void initForUsbConnectivity(void) {
sei(); sei();
} }
void usb_remote_wakeup(void) {
cli();
int8_t ddr_orig = USBDDR;
USBOUT |= (1 << USBMINUS);
USBDDR = ddr_orig | USBMASK;
USBOUT ^= USBMASK;
_delay_ms(25);
USBOUT ^= USBMASK;
USBDDR = ddr_orig;
USBOUT &= ~(1 << USBMINUS);
sei();
}
int main(void) { int main(void) {
bool suspended = false; bool suspended = false;
#if USB_COUNT_SOF #if USB_COUNT_SOF
@@ -115,6 +133,8 @@ int main(void) {
raw_hid_task(); raw_hid_task();
} }
#endif #endif
} else if (suspend_wakeup_condition()) {
usb_remote_wakeup();
} }
} }
} }
-22
View File
@@ -41,15 +41,6 @@ section at the end of this file).
* interrupt, the USB interrupt will also be triggered at Start-Of-Frame * interrupt, the USB interrupt will also be triggered at Start-Of-Frame
* markers every millisecond.] * markers every millisecond.]
*/ */
#define USB_CFG_CLOCK_KHZ (F_CPU/1000)
/* Clock rate of the AVR in kHz. Legal values are 12000, 12800, 15000, 16000,
* 16500, 18000 and 20000. The 12.8 MHz and 16.5 MHz versions of the code
* require no crystal, they tolerate +/- 1% deviation from the nominal
* frequency. All other rates require a precision of 2000 ppm and thus a
* crystal!
* Since F_CPU should be defined to your actual clock rate anyway, you should
* not need to modify this setting.
*/
#define USB_CFG_CHECK_CRC 0 #define USB_CFG_CHECK_CRC 0
/* Define this to 1 if you want that the driver checks integrity of incoming /* Define this to 1 if you want that the driver checks integrity of incoming
* data packets (CRC checks). CRC checks cost quite a bit of code size and are * data packets (CRC checks). CRC checks cost quite a bit of code size and are
@@ -227,19 +218,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand * with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications! * the implications!
*/ */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
* Class 0xff is "vendor specific".
*/
#define USB_CFG_INTERFACE_CLASS 3 /* HID */
#define USB_CFG_INTERFACE_SUBCLASS 1 /* Boot */
#define USB_CFG_INTERFACE_PROTOCOL 1 /* Keyboard */
/* See USB specification if you want to conform to an existing device class or
* protocol. The following classes must be set at interface level:
* HID class is 3, no subclass and protocol required (but may be useful!)
* CDC class is 2, use subclass 2 and protocol 1 for ACM
*/
#define USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH 0 #define USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH 0
/* Define this to the length of the HID report descriptor, if you implement /* Define this to the length of the HID report descriptor, if you implement
* an HID device. Otherwise don't define it or define it to 0. * an HID device. Otherwise don't define it or define it to 0.
+11 -29
View File
@@ -28,7 +28,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "vusb.h" #include "vusb.h"
#include <util/delay.h> #include <util/delay.h>
#if defined(RAW_ENABLE) #ifdef RAW_ENABLE
# include "raw_hid.h" # include "raw_hid.h"
#endif #endif
@@ -158,7 +158,7 @@ typedef struct {
} __attribute__((packed)) vusb_mouse_report_t; } __attribute__((packed)) vusb_mouse_report_t;
static void send_mouse(report_mouse_t *report) { static void send_mouse(report_mouse_t *report) {
#if defined(MOUSE_ENABLE) #ifdef MOUSE_ENABLE
vusb_mouse_report_t r = {.report_id = REPORT_ID_MOUSE, .report = *report}; vusb_mouse_report_t r = {.report_id = REPORT_ID_MOUSE, .report = *report};
if (usbInterruptIsReady3()) { if (usbInterruptIsReady3()) {
usbSetInterrupt3((void *)&r, sizeof(vusb_mouse_report_t)); usbSetInterrupt3((void *)&r, sizeof(vusb_mouse_report_t));
@@ -410,7 +410,7 @@ const PROGMEM uchar mouse_extra_hid_report[] = {
}; };
#endif #endif
#if defined(RAW_ENABLE) #ifdef RAW_ENABLE
const PROGMEM uchar raw_hid_report[] = { const PROGMEM uchar raw_hid_report[] = {
0x06, 0x60, 0xFF, // Usage Page (Vendor Defined) 0x06, 0x60, 0xFF, // Usage Page (Vendor Defined)
0x09, 0x61, // Usage (Vendor Defined) 0x09, 0x61, // Usage (Vendor Defined)
@@ -479,7 +479,6 @@ const PROGMEM usbStringDescriptor_t usbStringDescriptorSerial = {
.bString = LSTR(SERIAL_NUMBER) .bString = LSTR(SERIAL_NUMBER)
}; };
#if USB_CFG_DESCR_PROPS_DEVICE
/* /*
* Device descriptor * Device descriptor
*/ */
@@ -489,8 +488,8 @@ const PROGMEM usbDeviceDescriptor_t usbDeviceDescriptor = {
.bDescriptorType = USBDESCR_DEVICE .bDescriptorType = USBDESCR_DEVICE
}, },
.bcdUSB = 0x0110, .bcdUSB = 0x0110,
.bDeviceClass = USB_CFG_DEVICE_CLASS, .bDeviceClass = 0x00,
.bDeviceSubClass = USB_CFG_DEVICE_SUBCLASS, .bDeviceSubClass = 0x00,
.bDeviceProtocol = 0x00, .bDeviceProtocol = 0x00,
.bMaxPacketSize0 = 8, .bMaxPacketSize0 = 8,
.idVendor = VENDOR_ID, .idVendor = VENDOR_ID,
@@ -501,9 +500,7 @@ const PROGMEM usbDeviceDescriptor_t usbDeviceDescriptor = {
.iSerialNumber = 0x03, .iSerialNumber = 0x03,
.bNumConfigurations = 1 .bNumConfigurations = 1
}; };
#endif
#if USB_CFG_DESCR_PROPS_CONFIGURATION
/* /*
* Configuration descriptors * Configuration descriptors
*/ */
@@ -521,11 +518,7 @@ const PROGMEM usbConfigurationDescriptor_t usbConfigurationDescriptor = {
# endif # endif
.bConfigurationValue = 0x01, .bConfigurationValue = 0x01,
.iConfiguration = 0x00, .iConfiguration = 0x00,
# if USB_CFG_IS_SELF_POWERED .bmAttributes = (1 << 7) | USBATTR_REMOTEWAKE,
.bmAttributes = (1 << 7) | USBATTR_SELFPOWER,
# else
.bmAttributes = (1 << 7),
# endif
.bMaxPower = USB_MAX_POWER_CONSUMPTION / 2 .bMaxPower = USB_MAX_POWER_CONSUMPTION / 2
}, },
@@ -539,10 +532,10 @@ const PROGMEM usbConfigurationDescriptor_t usbConfigurationDescriptor = {
}, },
.bInterfaceNumber = 0, .bInterfaceNumber = 0,
.bAlternateSetting = 0x00, .bAlternateSetting = 0x00,
.bNumEndpoints = USB_CFG_HAVE_INTRIN_ENDPOINT, .bNumEndpoints = 1,
.bInterfaceClass = USB_CFG_INTERFACE_CLASS, .bInterfaceClass = 0x03,
.bInterfaceSubClass = USB_CFG_INTERFACE_SUBCLASS, .bInterfaceSubClass = 0x01,
.bInterfaceProtocol = USB_CFG_INTERFACE_PROTOCOL, .bInterfaceProtocol = 0x01,
.iInterface = 0x00 .iInterface = 0x00
}, },
.keyboardHID = { .keyboardHID = {
@@ -556,7 +549,6 @@ const PROGMEM usbConfigurationDescriptor_t usbConfigurationDescriptor = {
.bDescriptorType = USBDESCR_HID_REPORT, .bDescriptorType = USBDESCR_HID_REPORT,
.wDescriptorLength = sizeof(keyboard_hid_report) .wDescriptorLength = sizeof(keyboard_hid_report)
}, },
# ifdef USB_CFG_HAVE_INTRIN_ENDPOINT
.keyboardINEndpoint = { .keyboardINEndpoint = {
.header = { .header = {
.bLength = sizeof(usbEndpointDescriptor_t), .bLength = sizeof(usbEndpointDescriptor_t),
@@ -567,7 +559,6 @@ const PROGMEM usbConfigurationDescriptor_t usbConfigurationDescriptor = {
.wMaxPacketSize = 8, .wMaxPacketSize = 8,
.bInterval = USB_POLLING_INTERVAL_MS .bInterval = USB_POLLING_INTERVAL_MS
}, },
# endif
# if defined(MOUSE_ENABLE) || defined(EXTRAKEY_ENABLE) # if defined(MOUSE_ENABLE) || defined(EXTRAKEY_ENABLE)
/* /*
@@ -580,7 +571,7 @@ const PROGMEM usbConfigurationDescriptor_t usbConfigurationDescriptor = {
}, },
.bInterfaceNumber = 1, .bInterfaceNumber = 1,
.bAlternateSetting = 0x00, .bAlternateSetting = 0x00,
.bNumEndpoints = USB_CFG_HAVE_INTRIN_ENDPOINT3, .bNumEndpoints = 1,
.bInterfaceClass = 0x03, .bInterfaceClass = 0x03,
.bInterfaceSubClass = 0x00, .bInterfaceSubClass = 0x00,
.bInterfaceProtocol = 0x00, .bInterfaceProtocol = 0x00,
@@ -597,7 +588,6 @@ const PROGMEM usbConfigurationDescriptor_t usbConfigurationDescriptor = {
.bDescriptorType = USBDESCR_HID_REPORT, .bDescriptorType = USBDESCR_HID_REPORT,
.wDescriptorLength = sizeof(mouse_extra_hid_report) .wDescriptorLength = sizeof(mouse_extra_hid_report)
}, },
# if USB_CFG_HAVE_INTRIN_ENDPOINT3
.mouseExtraINEndpoint = { .mouseExtraINEndpoint = {
.header = { .header = {
.bLength = sizeof(usbEndpointDescriptor_t), .bLength = sizeof(usbEndpointDescriptor_t),
@@ -608,7 +598,6 @@ const PROGMEM usbConfigurationDescriptor_t usbConfigurationDescriptor = {
.wMaxPacketSize = 8, .wMaxPacketSize = 8,
.bInterval = USB_POLLING_INTERVAL_MS .bInterval = USB_POLLING_INTERVAL_MS
} }
# endif
# elif defined(RAW_ENABLE) # elif defined(RAW_ENABLE)
.rawInterface = { .rawInterface = {
.header = { .header = {
@@ -634,7 +623,6 @@ const PROGMEM usbConfigurationDescriptor_t usbConfigurationDescriptor = {
.bDescriptorType = USBDESCR_HID_REPORT, .bDescriptorType = USBDESCR_HID_REPORT,
.wDescriptorLength = sizeof(raw_hid_report) .wDescriptorLength = sizeof(raw_hid_report)
}, },
# if USB_CFG_HAVE_INTRIN_ENDPOINT3
.rawINEndpoint = { .rawINEndpoint = {
.header = { .header = {
.bLength = sizeof(usbEndpointDescriptor_t), .bLength = sizeof(usbEndpointDescriptor_t),
@@ -655,10 +643,8 @@ const PROGMEM usbConfigurationDescriptor_t usbConfigurationDescriptor = {
.wMaxPacketSize = RAW_EPSIZE, .wMaxPacketSize = RAW_EPSIZE,
.bInterval = USB_POLLING_INTERVAL_MS .bInterval = USB_POLLING_INTERVAL_MS
} }
# endif
# endif # endif
}; };
#endif
// clang-format on // clang-format on
@@ -674,18 +660,14 @@ USB_PUBLIC usbMsgLen_t usbFunctionDescriptor(struct usbRequest *rq) {
debug_hex16(rq->wLength.word); debug("\n"); debug_hex16(rq->wLength.word); debug("\n");
*/ */
switch (rq->wValue.bytes[1]) { switch (rq->wValue.bytes[1]) {
#if USB_CFG_DESCR_PROPS_DEVICE
case USBDESCR_DEVICE: case USBDESCR_DEVICE:
usbMsgPtr = (unsigned char *)&usbDeviceDescriptor; usbMsgPtr = (unsigned char *)&usbDeviceDescriptor;
len = sizeof(usbDeviceDescriptor_t); len = sizeof(usbDeviceDescriptor_t);
break; break;
#endif
#if USB_CFG_DESCR_PROPS_CONFIGURATION
case USBDESCR_CONFIG: case USBDESCR_CONFIG:
usbMsgPtr = (unsigned char *)&usbConfigurationDescriptor; usbMsgPtr = (unsigned char *)&usbConfigurationDescriptor;
len = sizeof(usbConfigurationDescriptor_t); len = sizeof(usbConfigurationDescriptor_t);
break; break;
#endif
case USBDESCR_STRING: case USBDESCR_STRING:
switch (rq->wValue.bytes[0]) { switch (rq->wValue.bytes[0]) {
case 0: case 0:
+5 -11
View File
@@ -87,23 +87,17 @@ typedef struct usbConfigurationDescriptor {
usbConfigurationDescriptorHeader_t header; usbConfigurationDescriptorHeader_t header;
usbInterfaceDescriptor_t keyboardInterface; usbInterfaceDescriptor_t keyboardInterface;
usbHIDDescriptor_t keyboardHID; usbHIDDescriptor_t keyboardHID;
#ifdef USB_CFG_HAVE_INTRIN_ENDPOINT usbEndpointDescriptor_t keyboardINEndpoint;
usbEndpointDescriptor_t keyboardINEndpoint;
#endif
#if defined(MOUSE_ENABLE) || defined(EXTRAKEY_ENABLE) #if defined(MOUSE_ENABLE) || defined(EXTRAKEY_ENABLE)
usbInterfaceDescriptor_t mouseExtraInterface; usbInterfaceDescriptor_t mouseExtraInterface;
usbHIDDescriptor_t mouseExtraHID; usbHIDDescriptor_t mouseExtraHID;
# ifdef USB_CFG_HAVE_INTRIN_ENDPOINT3 usbEndpointDescriptor_t mouseExtraINEndpoint;
usbEndpointDescriptor_t mouseExtraINEndpoint;
# endif
#elif defined(RAW_ENABLE) #elif defined(RAW_ENABLE)
usbInterfaceDescriptor_t rawInterface; usbInterfaceDescriptor_t rawInterface;
usbHIDDescriptor_t rawHID; usbHIDDescriptor_t rawHID;
# ifdef USB_CFG_HAVE_INTRIN_ENDPOINT3 usbEndpointDescriptor_t rawINEndpoint;
usbEndpointDescriptor_t rawINEndpoint; usbEndpointDescriptor_t rawOUTEndpoint;
usbEndpointDescriptor_t rawOUTEndpoint;
# endif
#endif #endif
} __attribute__((packed)) usbConfigurationDescriptor_t; } __attribute__((packed)) usbConfigurationDescriptor_t;
@@ -112,6 +106,6 @@ typedef struct usbConfigurationDescriptor {
host_driver_t *vusb_driver(void); host_driver_t *vusb_driver(void);
void vusb_transfer_keyboard(void); void vusb_transfer_keyboard(void);
#if defined(RAW_ENABLE) #ifdef RAW_ENABLE
void raw_hid_task(void); void raw_hid_task(void);
#endif #endif