From e528087ee539fda2f13795d4a6c03403faef44d5 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Thu, 20 Aug 2015 00:42:08 -0400 Subject: midi --- keyboard/planck/Makefile | 2 +- keyboard/planck/config.h | 2 +- keyboard/planck/extended_keymap_common.h | 1 + keyboard/planck/extended_keymaps/extended_keymap_default.c | 13 +++++++++++-- keyboard/planck/matrix_pcb.c | 1 + 5 files changed, 15 insertions(+), 4 deletions(-) (limited to 'keyboard/planck') diff --git a/keyboard/planck/Makefile b/keyboard/planck/Makefile index cd67c711bc..7ea71af512 100644 --- a/keyboard/planck/Makefile +++ b/keyboard/planck/Makefile @@ -75,7 +75,7 @@ SRC = extended_keymap_common.c \ $(MATRIX) \ led.c \ backlight.c \ - beeps.c + beeps.c ifdef KEYMAP SRC := extended_keymaps/extended_keymap_$(KEYMAP).c $(SRC) diff --git a/keyboard/planck/config.h b/keyboard/planck/config.h index 7e95afddea..4ac9f766e6 100644 --- a/keyboard/planck/config.h +++ b/keyboard/planck/config.h @@ -24,7 +24,7 @@ along with this program. If not, see . #define PRODUCT_ID 0x6060 #define DEVICE_VER 0x0001 #define MANUFACTURER Ortholinear Keyboards -#define PRODUCT Planck +#define PRODUCT The Planck Keyboard #define DESCRIPTION A compact ortholinear keyboard /* key matrix size */ diff --git a/keyboard/planck/extended_keymap_common.h b/keyboard/planck/extended_keymap_common.h index 2dce4a2fac..e6a7dac5b5 100644 --- a/keyboard/planck/extended_keymap_common.h +++ b/keyboard/planck/extended_keymap_common.h @@ -48,6 +48,7 @@ typedef union { keymap_config_t keymap_config; #endif + /* translates key to keycode */ uint16_t keymap_key_to_keycode(uint8_t layer, keypos_t key); diff --git a/keyboard/planck/extended_keymaps/extended_keymap_default.c b/keyboard/planck/extended_keymaps/extended_keymap_default.c index 1d5ac4321b..710611c3cb 100644 --- a/keyboard/planck/extended_keymaps/extended_keymap_default.c +++ b/keyboard/planck/extended_keymaps/extended_keymap_default.c @@ -1,5 +1,6 @@ #include "extended_keymap_common.h" #include "backlight.h" +#include "lufa.h" const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = { /* Qwerty */ @@ -50,10 +51,18 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) switch(id) { case 0: if (record->event.pressed) { - register_code(KC_RSFT); + if (!&midi_device) { + register_code(KC_RSFT); + } else { + midi_send_noteon(&midi_device, 1, 64, 127); + } backlight_step(); } else { - unregister_code(KC_RSFT); + if (!&midi_device) { + unregister_code(KC_RSFT); + } else { + midi_send_noteoff(&midi_device, 1, 64, 127); + } } break; } diff --git a/keyboard/planck/matrix_pcb.c b/keyboard/planck/matrix_pcb.c index 6f6ccd5c1c..2a9ec8fcde 100644 --- a/keyboard/planck/matrix_pcb.c +++ b/keyboard/planck/matrix_pcb.c @@ -78,6 +78,7 @@ void matrix_init(void) } } + uint8_t matrix_scan(void) { for (uint8_t i = 0; i < MATRIX_ROWS; i++) { -- cgit v1.2.3 From fb4fe52c0a5be527e6c9bfa006a5fb3ea79b4b0e Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Thu, 20 Aug 2015 00:42:28 -0400 Subject: midi --- keyboard/planck/Config/LUFAConfig.h | 93 +++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100755 keyboard/planck/Config/LUFAConfig.h (limited to 'keyboard/planck') diff --git a/keyboard/planck/Config/LUFAConfig.h b/keyboard/planck/Config/LUFAConfig.h new file mode 100755 index 0000000000..fa9404498f --- /dev/null +++ b/keyboard/planck/Config/LUFAConfig.h @@ -0,0 +1,93 @@ +/* + LUFA Library + Copyright (C) Dean Camera, 2012. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +*/ + +/* + Copyright 2012 Dean Camera (dean [at] fourwalledcubicle [dot] com) + + Permission to use, copy, modify, distribute, and sell this + software and its documentation for any purpose is hereby granted + without fee, provided that the above copyright notice appear in + all copies and that both that the copyright notice and this + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the + software without specific, written prior permission. + + The author disclaim all warranties with regard to this + software, including all implied warranties of merchantability + and fitness. In no event shall the author be liable for any + special, indirect or consequential damages or any damages + whatsoever resulting from loss of use, data or profits, whether + in an action of contract, negligence or other tortious action, + arising out of or in connection with the use or performance of + this software. +*/ + +/** \file + * \brief LUFA Library Configuration Header File + * + * This header file is used to configure LUFA's compile time options, + * as an alternative to the compile time constants supplied through + * a makefile. + * + * For information on what each token does, refer to the LUFA + * manual section "Summary of Compile Tokens". + */ + +#ifndef _LUFA_CONFIG_H_ +#define _LUFA_CONFIG_H_ + + #if (ARCH == ARCH_AVR8) + + /* Non-USB Related Configuration Tokens: */ +// #define DISABLE_TERMINAL_CODES + + /* USB Class Driver Related Tokens: */ +// #define HID_HOST_BOOT_PROTOCOL_ONLY +// #define HID_STATETABLE_STACK_DEPTH {Insert Value Here} +// #define HID_USAGE_STACK_DEPTH {Insert Value Here} +// #define HID_MAX_COLLECTIONS {Insert Value Here} +// #define HID_MAX_REPORTITEMS {Insert Value Here} +// #define HID_MAX_REPORT_IDS {Insert Value Here} +// #define NO_CLASS_DRIVER_AUTOFLUSH + + /* General USB Driver Related Tokens: */ +// #define ORDERED_EP_CONFIG + #define USE_STATIC_OPTIONS (USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL) + #define USB_DEVICE_ONLY +// #define USB_HOST_ONLY +// #define USB_STREAM_TIMEOUT_MS {Insert Value Here} +// #define NO_LIMITED_CONTROLLER_CONNECT +// #define NO_SOF_EVENTS + + /* USB Device Mode Driver Related Tokens: */ +// #define USE_RAM_DESCRIPTORS + #define USE_FLASH_DESCRIPTORS +// #define USE_EEPROM_DESCRIPTORS +// #define NO_INTERNAL_SERIAL + #define FIXED_CONTROL_ENDPOINT_SIZE 8 +// #define DEVICE_STATE_AS_GPIOR {Insert Value Here} + #define FIXED_NUM_CONFIGURATIONS 1 +// #define CONTROL_ONLY_DEVICE +// #define INTERRUPT_CONTROL_ENDPOINT +// #define NO_DEVICE_REMOTE_WAKEUP +// #define NO_DEVICE_SELF_POWER + + /* USB Host Mode Driver Related Tokens: */ +// #define HOST_STATE_AS_GPIOR {Insert Value Here} +// #define USB_HOST_TIMEOUT_MS {Insert Value Here} +// #define HOST_DEVICE_SETTLE_DELAY_MS {Insert Value Here} +// #define NO_AUTO_VBUS_MANAGEMENT +// #define INVERTED_VBUS_ENABLE_LINE + + #else + + #error Unsupported architecture for this LUFA configuration file. + + #endif +#endif -- cgit v1.2.3 From 04885a3b447c82437d919d467328800eb00af629 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Fri, 21 Aug 2015 10:46:53 -0400 Subject: preonic --- keyboard/planck/Makefile | 6 +- keyboard/planck/config.h | 5 + keyboard/planck/config_definitions.h | 50 +++++ .../extended_keymaps/extended_keymap_default.c | 15 +- keyboard/planck/matrix.c | 235 +++++++++++++++++++++ 5 files changed, 297 insertions(+), 14 deletions(-) create mode 100644 keyboard/planck/config_definitions.h create mode 100644 keyboard/planck/matrix.c (limited to 'keyboard/planck') diff --git a/keyboard/planck/Makefile b/keyboard/planck/Makefile index 7ea71af512..ad25854e6d 100644 --- a/keyboard/planck/Makefile +++ b/keyboard/planck/Makefile @@ -60,8 +60,7 @@ ifdef COMMON SRC = keymap_common.c \ $(MATRIX) \ led.c \ - backlight.c \ - beeps.c + backlight.c ifdef KEYMAP SRC := common_keymaps/keymap_$(KEYMAP).c $(SRC) @@ -74,8 +73,7 @@ else SRC = extended_keymap_common.c \ $(MATRIX) \ led.c \ - backlight.c \ - beeps.c + backlight.c ifdef KEYMAP SRC := extended_keymaps/extended_keymap_$(KEYMAP).c $(SRC) diff --git a/keyboard/planck/config.h b/keyboard/planck/config.h index 4ac9f766e6..47cf39a903 100644 --- a/keyboard/planck/config.h +++ b/keyboard/planck/config.h @@ -18,6 +18,7 @@ along with this program. If not, see . #ifndef CONFIG_H #define CONFIG_H +#include "config_definitions.h" /* USB Device descriptor parameter */ #define VENDOR_ID 0xFEED @@ -31,6 +32,10 @@ along with this program. If not, see . #define MATRIX_ROWS 4 #define MATRIX_COLS 12 +/* Planck PCB default pin-out */ +#define COLS (int []){ F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 } +#define ROWS (int []){ D0, D5, B5, B6 } + /* define if matrix has ghost */ //#define MATRIX_HAS_GHOST diff --git a/keyboard/planck/config_definitions.h b/keyboard/planck/config_definitions.h new file mode 100644 index 0000000000..fd138b8841 --- /dev/null +++ b/keyboard/planck/config_definitions.h @@ -0,0 +1,50 @@ +#ifndef CONFIG_DEFINITIONS_H +#define CONFIG_DEFINITIONS_H + +#define B0 0x20 +#define B1 0x21 +#define B2 0x22 +#define B3 0x23 +#define B4 0x24 +#define B5 0x25 +#define B6 0x26 +#define B7 0x27 +#define C0 0x30 +#define C1 0x31 +#define C2 0x32 +#define C3 0x33 +#define C4 0x34 +#define C5 0x35 +#define C6 0x36 +#define C7 0x37 +#define D0 0x40 +#define D1 0x41 +#define D2 0x42 +#define D3 0x43 +#define D4 0x44 +#define D5 0x45 +#define D6 0x46 +#define D7 0x47 +#define E0 0x50 +#define E1 0x51 +#define E2 0x52 +#define E3 0x53 +#define E4 0x54 +#define E5 0x55 +#define E6 0x56 +#define E7 0x57 +#define F0 0x60 +#define F1 0x61 +#define F2 0x62 +#define F3 0x63 +#define F4 0x64 +#define F5 0x65 +#define F6 0x66 +#define F7 0x67 + + + + + +#endif + diff --git a/keyboard/planck/extended_keymaps/extended_keymap_default.c b/keyboard/planck/extended_keymaps/extended_keymap_default.c index 710611c3cb..c75144bf4a 100644 --- a/keyboard/planck/extended_keymaps/extended_keymap_default.c +++ b/keyboard/planck/extended_keymaps/extended_keymap_default.c @@ -1,6 +1,7 @@ #include "extended_keymap_common.h" #include "backlight.h" #include "lufa.h" +#include "debug.h" const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = { /* Qwerty */ @@ -51,18 +52,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) switch(id) { case 0: if (record->event.pressed) { - if (!&midi_device) { - register_code(KC_RSFT); - } else { - midi_send_noteon(&midi_device, 1, 64, 127); - } + register_code(KC_RSFT); + midi_send_noteon(&midi_device, 1, 64, 127); backlight_step(); } else { - if (!&midi_device) { - unregister_code(KC_RSFT); - } else { - midi_send_noteoff(&midi_device, 1, 64, 127); - } + unregister_code(KC_RSFT); + midi_send_noteoff(&midi_device, 1, 64, 127); } break; } diff --git a/keyboard/planck/matrix.c b/keyboard/planck/matrix.c new file mode 100644 index 0000000000..58bd61f758 --- /dev/null +++ b/keyboard/planck/matrix.c @@ -0,0 +1,235 @@ +/* +Copyright 2012 Jun Wako +Generated by planckkeyboard.com (2014 Jack Humbert) + +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 . +*/ + +/* + * scan matrix + */ +#include +#include +#include +#include +#include "print.h" +#include "debug.h" +#include "util.h" +#include "matrix.h" +#include "backlight.h" // TODO fix this dependency + +#ifndef DEBOUNCE +# define DEBOUNCE 10 +#endif +static uint8_t debouncing = DEBOUNCE; + +/* matrix state(1:on, 0:off) */ +static matrix_row_t matrix[MATRIX_ROWS]; +static matrix_row_t matrix_debouncing[MATRIX_ROWS]; + +static matrix_row_t read_cols(void); +static void init_cols(void); +static void unselect_rows(void); +static void select_row(uint8_t row); + +inline +uint8_t matrix_rows(void) +{ + return MATRIX_ROWS; +} + +inline +uint8_t matrix_cols(void) +{ + return MATRIX_COLS; +} + +void matrix_init(void) +{ + // To use PORTF disable JTAG with writing JTD bit twice within four cycles. + MCUCR |= (1<