fixes s60_x keyboard

This commit is contained in:
Jack Humbert 2017-04-30 10:48:17 -04:00
commit d1d2b87f97
53 changed files with 44 additions and 31 deletions

View file

@ -1 +0,0 @@
#include "s60-x.h"

5
keyboards/s60_x/Makefile Normal file
View file

@ -0,0 +1,5 @@
SUBPROJECT_DEFAULT = default
ifndef MAKEFILE_INCLUDED
include ../../Makefile
endif

59
keyboards/s60_x/config.h Normal file
View file

@ -0,0 +1,59 @@
/*
Copyright 2012 Jun Wako <wakojun@gmail.com>
Copyright 2016 Julien Pecqueur <julien@peclu.net>
Copyright 2016 Felix Uhl <ifreilicht@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/>.
*/
#ifndef CONFIG_H
#define CONFIG_H
#include "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x6060
#define DEVICE_VER 0x0001
#define MANUFACTURER Massdrop
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
/* number of backlight levels */
#define BACKLIGHT_PIN B7
#ifdef BACKLIGHT_PIN
#define BACKLIGHT_LEVELS 3
#endif
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCING_DELAY 5
/* key combination for command */
#define IS_COMMAND() ( \
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
#ifdef SUBPROJECT_default
#include "default/config.h"
#endif
#ifdef SUBPROJECT_rgb
#include "rgb/config.h"
#endif
#endif

View file

@ -0,0 +1,3 @@
ifndef MAKEFILE_INCLUDED
include ../../../Makefile
endif

View file

@ -0,0 +1,25 @@
#ifndef DEFAULT_CONFIG_H
#define DEFAULT_CONFIG_H
#include "../config.h"
#define PRODUCT S60-X
#define DESCRIPTION q.m.k. keyboard firmware for S60-X
#define MATRIX_ROW_PINS { B7, B3, B2, B1, B0 }
#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6, C7, E6, F1 }
#define UNUSED_PINS { F0 }
#define LOCKING_SUPPORT_ENABLE
#define LOCKING_RESYNC_ENABLE
/* key combination for magic key command */
#define IS_COMMAND() ( \
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
#define NO_ACTION_ONESHOT
#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION
#endif

View file

@ -0,0 +1,28 @@
#include "default.h"
void matrix_init_kb(void) {
// put your keyboard start-up code here
// runs once when the firmware starts up
matrix_init_user();
}
void matrix_scan_kb(void) {
// put your looping keyboard code here
// runs every cycle (a lot)
matrix_scan_user();
}
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
// put your per-action keyboard code here
// runs for every action, just before processing by the firmware
return process_record_user(keycode, record);
}
void led_set_kb(uint8_t usb_led) {
// put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
led_set_user(usb_led);
}

View file

@ -0,0 +1,69 @@
/*
Copyright 2012,2013 Jun Wako <wakojun@gmail.com>
Copyright 2015 Vin<EFBFBD>cius Nery Cordeiro <vinicius.nery.cordeiro@gmail.com>
Copyright 2016 Felix Uhl <ifreilicht@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/>.
*/
#ifndef DEFAULT_H
#define DEFAULT_H
#include "quantum.h"
#ifdef __INTELLISENSE__
#define PROGMEM
#include "../config.h"
#endif
/* S60-X keymap definition macro
* K31 is the extra key next to short left ISO shift
* K2C is the moved key next to enter on ISO boards
* K3C is the extra key next to short right JIS shift
* K0D is extra key from split backspace
* K3E is extra key from HHKB-style split right shift
*/
#define KEYMAP( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
K40, K41, K42, K46, K4A, K4B, K4C, K4D \
) { \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO }, \
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
{ K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, KC_NO } \
}
/*This special definition is used for S60-X keymaps that were ported from TMK
* QMK has a lot of keycodes that don't start with KC_, so using the regular KEYMAP macro is recommended
*/
#define LEGACY_KEYMAP( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
K40, K41, K42, K46, K4A, K4B, K4C, K4D \
) { \
{ KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0A, KC_##K0B, KC_##K0C, KC_##K0D, KC_##K0E }, \
{ KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D, KC_NO }, \
{ KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D, KC_NO }, \
{ KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D, KC_##K3E }, \
{ KC_##K40, KC_##K41, KC_##K42, KC_NO, KC_NO, KC_NO, KC_##K46, KC_NO, KC_NO, KC_NO, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D, KC_NO } \
}
#endif

View file

@ -0,0 +1,9 @@
CONSOLE_ENABLE ?= no # Console for debug(+400)
COMMAND_ENABLE ?= no # 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
BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE ?= no
ifndef QUANTUM_DIR
include ../../../Makefile
endif

View file

@ -0,0 +1,21 @@
# Build Options
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
#
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = yes # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

View file

@ -0,0 +1,14 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
// keymap needs oneshot functionality
#undef NO_ACTION_ONESHOT
#undef IS_COMMAND
#define IS_COMMAND() ( \
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
#endif

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 213 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 213 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 205 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View file

@ -0,0 +1,237 @@
/*
Copyright 2016 Julien Pecqueur <julien@peclu.net>
Copyright 2016 Felix Uhl <ifreilicht@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/>.
*/
#include "s60_x.h"
//make keymap a little easier to read
#define _______ KC_TRNS
#define XXXXXXX KC_NO
#define ONESHOT_TAP_TOGGLE 2
#define ONESHOT_TIMEOUT 1
//uncomment to activate dead keys
//#define DONT_REVIVE_DEADKEYS 1
//Function keycodes for better readability
//SpaceFN
//OneShot LeftShift
//GamingMode Lock (disables SpaceFn and OneShot LShift)
//Function
//Mute microphone
#define KC_SPACEFN KC_FN0
#define KC_OSLS KC_FN3
#define KC_GMLK KC_FN1
#define KC_FUNC KC_FN2
#define MICMUTE RCTL(KC_LCTL)
enum function_codes {
F_SPACEFN = 0,
F_OSLS = 3,
F_GMLK = 1,
F_FUNC = 2
};
enum layer_names {
DEFAULT,
GAMING,
FUNCTION
};
enum languages {
GERMAN
};
#define LANGUAGE GERMAN
enum custom_keycodes {
KC_CM_A = SAFE_RANGE,
// KC_CM_B,
KC_CM_C,
// KC_CM_D,
KC_CM_E,
// KC_CM_F,
KC_CM_G,
// KC_CM_H,
KC_CM_I,
// KC_CM_J,
KC_CM_K,
KC_CM_L,
KC_CM_M,
KC_CM_N,
KC_CM_O,
KC_CM_P,
// KC_CM_Q,
KC_CM_R,
KC_CM_S,
// KC_CM_T,
KC_CM_U,
// KC_CM_V,
KC_CM_W,
// KC_CM_X,
KC_CM_Y,
KC_CM_Z
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Layout 0: Default Layer
* ,-----------------------------------------------------------.
* |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \|Del|
* |-----------------------------------------------------------|
* |Tab | Q| W| E| R| T| Z| U| I| O| P| [| ]|BckSp|
* |-----------------------------------------------------------|
* |Ctrl | A| S| D| F| G| H| J| K| L| ;| '|Return |
* |-----------------------------------------------------------|
* |Shift | Y| X| C| V| B| N| M| ,| .| /| Up |RSft|
* |-----------------------------------------------------------|
* |Fn2 |Gui |Alt | SpaceFn |Alt |Left|Down|Right|
* `-----------------------------------------------------------'
*/
[DEFAULT] = KEYMAP(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL, \
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Z, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, \
KC_LSFT, KC_NUBS, KC_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_UP, KC_RSFT, \
KC_FUNC, KC_LGUI, KC_LALT, KC_SPACEFN, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
),
/* Layout 1: Gaming Layer, SpaceFn disabled
* ,-----------------------------------------------------------.
* | | | | | | | | | | | | | | | |
* |-----------------------------------------------------------|
* | | | | | | | | | | | | | | |
* |-----------------------------------------------------------|
* | | | | | | | | | | | | | |
* |-----------------------------------------------------------|
* | | | | | | | | | | | | |Fn1 |
* |-----------------------------------------------------------|
* | |RSft| | Space | | | | |
* `-----------------------------------------------------------'
*/
[GAMING] = KEYMAP(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_GMLK, \
_______, KC_RSFT, _______, KC_SPC, _______, _______, _______, _______
),
/* Layout 2: Function Layer
* MicMute requires special software to be installed. Check readme.md for more information
* ,-----------------------------------------------------------.
* |` | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|RES|
* |-----------------------------------------------------------|
* | | | | |Prv|Ply|Nxt| Ü | | Ö | |Prt|Slk|Pau |
* |-----------------------------------------------------------|
* | | Ä | ß | |Vl-|Mut|Vl+| | | | | |PEnt |
* |-----------------------------------------------------------|
* | | | | |MicMut|Cal| | | | |Pau |PUp |Fn1 |
* |-----------------------------------------------------------|
* | | | | | |Home|PDn |End |
* `-----------------------------------------------------------'
*/
[FUNCTION] = KEYMAP(
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, RESET, \
_______, _______, KC_CM_W, KC_CM_E, KC_MPRV, KC_MPLY, KC_MNXT, KC_CM_U, KC_CM_I, KC_CM_O, KC_CM_P, KC_PSCR, KC_SLCK, KC_PAUS, \
_______, KC_CM_A, KC_CM_S, _______, KC_VOLD, KC_MUTE, KC_VOLU, _______, KC_CM_K, KC_CM_L, _______, _______, _______, KC_PENT, \
_______, _______, KC_CM_Y, _______, KC_CM_C, MICMUTE, KC_CALC, KC_CM_N, KC_CM_M, _______, _______, _______, _______, KC_PGUP, KC_GMLK, \
_______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
),
};
/*
* Fn action definition
*/
const uint16_t PROGMEM fn_actions[] = {
[F_SPACEFN] = ACTION_LAYER_TAP_KEY(2, KC_SPACE), // SpaceFn layout 1
[F_GMLK] = ACTION_LAYER_TOGGLE(1), // Disable SpaceFn and Oneshot Shift
[F_FUNC] = ACTION_LAYER_MOMENTARY(2), // SpaceFn layout 1
[F_OSLS] = ACTION_MODS_ONESHOT(MOD_LSFT) // Oneshot Leftshift
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
return MACRO_NONE;
};
void matrix_init_user(void) {
}
void matrix_scan_user(void) {
}
bool process_german(uint16_t keycode, keyrecord_t *record) {
uint16_t send_code = 0;
if (record->event.pressed) {
switch (keycode) {
case KC_CM_A:
send_code = KC_Q;
break;
case KC_CM_O:
send_code = KC_P;
break;
case KC_CM_U:
send_code = KC_Y;
break;
case KC_CM_S:
send_code = KC_S;
break;
}
if (send_code == 0) {
return true;
}
else {
register_code(KC_RALT);
register_code(send_code);
unregister_code(send_code);
unregister_code(KC_RALT);
return false;
}
}
return true;
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
//revive dead keys
#ifndef DONT_REVIVE_DEADKEYS
bool shift_active = keyboard_report->mods & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_LSFT));
bool altgr_active = keyboard_report->mods & (MOD_BIT(KC_RALT));
if ((keycode == KC_QUOT && !altgr_active) ||
keycode == KC_GRV ||
(keycode == KC_6 && shift_active))
{
if (record->event.pressed) {
register_code(keycode);
unregister_code(keycode);
register_code(KC_SPACE);
unregister_code(KC_SPACE);
}
return false;
}
#endif
#if LANGUAGE == GERMAN
return process_german(keycode, record);
#else
return true;
#endif
}
void led_set_user(uint8_t usb_led) {
}

Some files were not shown because too many files have changed in this diff Show more