diff options
Diffstat (limited to 'keyboards/tkc1800')
-rw-r--r-- | keyboards/tkc1800/README.md | 17 | ||||
-rw-r--r-- | keyboards/tkc1800/config.h | 178 | ||||
-rw-r--r-- | keyboards/tkc1800/i2c.c | 166 | ||||
-rw-r--r-- | keyboards/tkc1800/i2c.h | 49 | ||||
-rw-r--r-- | keyboards/tkc1800/info.json | 121 | ||||
-rw-r--r-- | keyboards/tkc1800/keymaps/default/config.h | 24 | ||||
-rw-r--r-- | keyboards/tkc1800/keymaps/default/keymap.c | 159 | ||||
-rw-r--r-- | keyboards/tkc1800/keymaps/smt/config.h | 24 | ||||
-rw-r--r-- | keyboards/tkc1800/keymaps/smt/keymap.c | 214 | ||||
-rw-r--r-- | keyboards/tkc1800/keymaps/wkl/config.h | 24 | ||||
-rw-r--r-- | keyboards/tkc1800/keymaps/wkl/keymap.c | 142 | ||||
-rw-r--r-- | keyboards/tkc1800/keymaps/yanfali/config.h | 24 | ||||
-rw-r--r-- | keyboards/tkc1800/keymaps/yanfali/keymap.c | 136 | ||||
-rw-r--r-- | keyboards/tkc1800/rules.mk | 71 | ||||
-rw-r--r-- | keyboards/tkc1800/tkc1800.c | 69 | ||||
-rw-r--r-- | keyboards/tkc1800/tkc1800.h | 36 |
16 files changed, 0 insertions, 1454 deletions
diff --git a/keyboards/tkc1800/README.md b/keyboards/tkc1800/README.md deleted file mode 100644 index e154770d72..0000000000 --- a/keyboards/tkc1800/README.md +++ /dev/null @@ -1,17 +0,0 @@ -The Key Company TKC1800 - -[TKC1800 Image Gallery](https://imgur.com/a/Xlttp) - - -The Key Company TKC1800 is a Cherry 1800 form factor replacement PCB utilizing the AT90USB1286 microcontroller. - -Keyboard Maintainer: [Terry Mathews](https://github.com/TerryMathews/) -Hardware Supported: TKC1800 PCB -Hardware Availability: [TheKey.Company](https://thekey.company/collections/tkc-1800) - - -Make example for this keyboard (after setting up your build environment): - - make tkc1800:default - -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). diff --git a/keyboards/tkc1800/config.h b/keyboards/tkc1800/config.h deleted file mode 100644 index 2f45d04dea..0000000000 --- a/keyboards/tkc1800/config.h +++ /dev/null @@ -1,178 +0,0 @@ -/* -Copyright 2012 Jun Wako <wakojun@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/>. -*/ - -#pragma once - -#include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6060 -#define DEVICE_VER 0x0003 -#define MANUFACTURER The Key Company -#define PRODUCT TKC1800 -#define DESCRIPTION QMK keyboard firmware for TKC1800 - -/* key matrix size */ -#define MATRIX_ROWS 7 -#define MATRIX_COLS 19 - -// ROWS: Top to bottom, COLS: Left to right -/* Row pin configuration -*/ -#define MATRIX_ROW_PINS { F4, F3, F2, F1, F0, E1, E0 } -/* Column pin configuration - */ -#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, C1, C0, F5, F6, F7 } -#define UNUSED_PINS - -/* COL2ROW or ROW2COL */ -#define DIODE_DIRECTION COL2ROW - -#define BACKLIGHT_PIN B6 -#define BACKLIGHT_BREATHING -#define BACKLIGHT_LEVELS 3 - -/* Underlight configuration - */ -#define RGB_DI_PIN D7 -#define RGBLIGHT_ANIMATIONS -#define RGBLED_NUM 30 // Number of LEDs -#define RGBLIGHT_HUE_STEP 5 -#define RGBLIGHT_SAT_STEP 10 -#define RGBLIGHT_VAL_STEP 10 - -/* define if matrix has ghost */ -//#define MATRIX_HAS_GHOST - -/* Set 0 if debouncing isn't needed */ -#define DEBOUNCING_DELAY 5 - -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE - -/* - * Force NKRO - * - * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved - * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the - * makefile for this to work.) - * - * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) - * until the next keyboard reset. - * - * NKRO may prevent your keystrokes from being detected in the BIOS, but it is - * fully operational during normal computer usage. - * - * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) - * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by - * bootmagic, NKRO mode will always be enabled until it is toggled again during a - * power-up. - * - */ -//#define FORCE_NKRO - -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - -/* - * Feature disable options - * These options are also useful to firmware size reduction. - */ - -/* disable debug print */ -//#define NO_DEBUG - -/* disable print */ -//#define NO_PRINT - -/* disable action features */ -//#define NO_ACTION_LAYER -//#define NO_ACTION_TAPPING -//#define NO_ACTION_ONESHOT -//#define NO_ACTION_MACRO -//#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* Prevent use of disabled MIDI features in the keymap */ -//#define MIDI_ENABLE_STRICT 1 - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 diff --git a/keyboards/tkc1800/i2c.c b/keyboards/tkc1800/i2c.c deleted file mode 100644 index cd2b835d50..0000000000 --- a/keyboards/tkc1800/i2c.c +++ /dev/null @@ -1,166 +0,0 @@ -#include <util/twi.h> -#include <avr/io.h> -#include <stdlib.h> -#include <avr/interrupt.h> -#include <util/twi.h> -#include <stdbool.h> -#include "i2c.h" - -#ifdef USE_I2C - -// Limits the amount of we wait for any one i2c transaction. -// Since were running SCL line 100kHz (=> 10μs/bit), and each transactions is -// 9 bits, a single transaction will take around 90μs to complete. -// -// (F_CPU/SCL_CLOCK) => # of μC cycles to transfer a bit -// poll loop takes at least 8 clock cycles to execute -#define I2C_LOOP_TIMEOUT (9+1)*(F_CPU/SCL_CLOCK)/8 - -#define BUFFER_POS_INC() (slave_buffer_pos = (slave_buffer_pos+1)%SLAVE_BUFFER_SIZE) - -volatile uint8_t i2c_slave_buffer[SLAVE_BUFFER_SIZE]; - -static volatile uint8_t slave_buffer_pos; -static volatile bool slave_has_register_set = false; - -// Wait for an i2c operation to finish -inline static -void i2c_delay(void) { - uint16_t lim = 0; - while(!(TWCR & (1<<TWINT)) && lim < I2C_LOOP_TIMEOUT) - lim++; - - // easier way, but will wait slightly longer - // _delay_us(100); -} - -// Setup twi to run at 100kHz -void i2c_master_init(void) { - // no prescaler - TWSR = 0; - // Set TWI clock frequency to SCL_CLOCK. Need TWBR>10. - // Check datasheets for more info. - TWBR = ((F_CPU/SCL_CLOCK)-16)/2; -} - -// Start a transaction with the given i2c slave address. The direction of the -// transfer is set with I2C_READ and I2C_WRITE. -// returns: 0 => success -// 1 => error -uint8_t i2c_master_start(uint8_t address) { - TWCR = (1<<TWINT) | (1<<TWSTA) | (1<<TWEN); - - i2c_delay(); - - // check that we started successfully - if ( (TW_STATUS != TW_START) && (TW_STATUS != TW_REP_START)) - return 1; - - // send device address - TWDR = address; - TWCR = (1<<TWINT) | (1<<TWEN); - - i2c_delay(); - - if ( (TW_STATUS != TW_MT_SLA_ACK) && (TW_STATUS != TW_MR_SLA_ACK) ) - return 1; // slave did not acknowledge - else - return 0; // success -} - - -// Finish the i2c transaction. -void i2c_master_stop(void) { - TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTO); - - uint16_t lim = 0; - while(!(TWCR & (1<<TWSTO)) && lim < I2C_LOOP_TIMEOUT) - lim++; -} - -// Write one byte to the i2c slave. -// returns 0 => slave ACK -// 1 => slave NACK -uint8_t i2c_master_write(uint8_t data) { - TWDR = data; - TWCR = (1<<TWINT) | (1<<TWEN); - - i2c_delay(); - - // check if the slave acknowledged us - return (TW_STATUS == TW_MT_DATA_ACK) ? 0 : 1; -} - -// Read one byte from the i2c slave. If ack=1 the slave is acknowledged, -// if ack=0 the acknowledge bit is not set. -// returns: byte read from i2c device -uint8_t i2c_master_read(int ack) { - TWCR = (1<<TWINT) | (1<<TWEN) | (ack<<TWEA); - - i2c_delay(); - return TWDR; -} - -void i2c_reset_state(void) { - TWCR = 0; -} - -void i2c_slave_init(uint8_t address) { - TWAR = address << 0; // slave i2c address - // TWEN - twi enable - // TWEA - enable address acknowledgement - // TWINT - twi interrupt flag - // TWIE - enable the twi interrupt - TWCR = (1<<TWIE) | (1<<TWEA) | (1<<TWINT) | (1<<TWEN); -} - -ISR(TWI_vect); - -ISR(TWI_vect) { - uint8_t ack = 1; - switch(TW_STATUS) { - case TW_SR_SLA_ACK: - // this device has been addressed as a slave receiver - slave_has_register_set = false; - break; - - case TW_SR_DATA_ACK: - // this device has received data as a slave receiver - // The first byte that we receive in this transaction sets the location - // of the read/write location of the slaves memory that it exposes over - // i2c. After that, bytes will be written at slave_buffer_pos, incrementing - // slave_buffer_pos after each write. - if(!slave_has_register_set) { - slave_buffer_pos = TWDR; - // don't acknowledge the master if this memory loctaion is out of bounds - if ( slave_buffer_pos >= SLAVE_BUFFER_SIZE ) { - ack = 0; - slave_buffer_pos = 0; - } - slave_has_register_set = true; - } else { - i2c_slave_buffer[slave_buffer_pos] = TWDR; - BUFFER_POS_INC(); - } - break; - - case TW_ST_SLA_ACK: - case TW_ST_DATA_ACK: - // master has addressed this device as a slave transmitter and is - // requesting data. - TWDR = i2c_slave_buffer[slave_buffer_pos]; - BUFFER_POS_INC(); - break; - - case TW_BUS_ERROR: // something went wrong, reset twi state - TWCR = 0; - default: - break; - } - // Reset everything, so we are ready for the next TWI interrupt - TWCR |= (1<<TWIE) | (1<<TWINT) | (ack<<TWEA) | (1<<TWEN); -} - - - -#endif diff --git a/keyboards/tkc1800/i2c.h b/keyboards/tkc1800/i2c.h deleted file mode 100644 index 2bd7f40968..0000000000 --- a/keyboards/tkc1800/i2c.h +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef I2C_H -#define I2C_H - -#include <stdint.h> - -#ifndef F_CPU -#define F_CPU 16000000UL -#endif - -#define I2C_READ 1 -#define I2C_WRITE 0 - -#define I2C_ACK 1 -#define I2C_NACK 0 - -#define SLAVE_BUFFER_SIZE 0x10 - -// i2c SCL clock frequency -#define SCL_CLOCK 800000L - -extern volatile uint8_t i2c_slave_buffer[SLAVE_BUFFER_SIZE]; - -void i2c_master_init(void); -uint8_t i2c_master_start(uint8_t address); -void i2c_master_stop(void); -uint8_t i2c_master_write(uint8_t data); -uint8_t i2c_master_read(int); -void i2c_reset_state(void); -void i2c_slave_init(uint8_t address); - - -static inline unsigned char i2c_start_read(unsigned char addr) { - return i2c_master_start((addr << 1) | I2C_READ); -} - -static inline unsigned char i2c_start_write(unsigned char addr) { - return i2c_master_start((addr << 1) | I2C_WRITE); -} - -// from SSD1306 scrips -extern unsigned char i2c_rep_start(unsigned char addr); -extern void i2c_start_wait(unsigned char addr); -extern unsigned char i2c_readAck(void); -extern unsigned char i2c_readNak(void); -extern unsigned char i2c_read(unsigned char ack); - -#define i2c_read(ack) (ack) ? i2c_readAck() : i2c_readNak(); - -#endif diff --git a/keyboards/tkc1800/info.json b/keyboards/tkc1800/info.json deleted file mode 100644 index 3e3ab1484d..0000000000 --- a/keyboards/tkc1800/info.json +++ /dev/null @@ -1,121 +0,0 @@ -{ - "keyboard_name": "TKC1800", - "url": "", - "maintainer": "qmk", - "width": 19.5, - "height": 7.25, - "layouts": { - "LAYOUT": { - "key_count": 107, - "layout": [ - { "label": "Esc", "x": 0, "y": 0 }, - { "label": "F1", "x": 1.25, "y": 0 }, - { "label": "F2", "x": 2.25, "y": 0 }, - { "label": "F3", "x": 3.25, "y": 0 }, - { "label": "F4", "x": 4.25, "y": 0 }, - { "label": "F5", "x": 5.5, "y": 0 }, - { "label": "F6", "x": 6.5, "y": 0 }, - { "label": "F7", "x": 7.5, "y": 0 }, - { "label": "F8", "x": 8.5, "y": 0 }, - { "label": "F9", "x": 9.75, "y": 0 }, - { "label": "F10", "x": 10.75, "y": 0 }, - { "label": "F11", "x": 11.75, "y": 0 }, - { "label": "F12", "x": 12.75, "y": 0 }, - { "label": "Insert", "x": 15.5, "y": 0 }, - { "label": "Home", "x": 16.5, "y": 0 }, - { "label": "Page Up", "x": 17.5, "y": 0 }, - { "label": "Print Screen", "x": 18.5, "y": 0 }, - { "label": "Delete", "x": 15.5, "y": 1 }, - { "label": "End", "x": 16.5, "y": 1 }, - { "label": "Page Down", "x": 17.5, "y": 1 }, - { "label": "Scroll Lock", "x": 18.5, "y": 1 }, - { "label": "`", "x": 0, "y": 2 }, - { "label": "1", "x": 1, "y": 2 }, - { "label": "2", "x": 2, "y": 2 }, - { "label": "3", "x": 3, "y": 2 }, - { "label": "4", "x": 4, "y": 2 }, - { "label": "5", "x": 5, "y": 2 }, - { "label": "6", "x": 6, "y": 2 }, - { "label": "7", "x": 7, "y": 2 }, - { "label": "8", "x": 8, "y": 2 }, - { "label": "9", "x": 9, "y": 2 }, - { "label": "0", "x": 10, "y": 2 }, - { "label": "-", "x": 11, "y": 2 }, - { "label": "=", "x": 12, "y": 2 }, - { "label": "Backspace", "x": 13, "y": 2 }, - { "label": "Backspace_Right", "x": 14, "y": 2 }, - { "label": "Num Lock", "x": 15.5, "y": 2 }, - { "label": "/", "x": 16.5, "y": 2 }, - { "label": "*", "x": 17.5, "y": 2 }, - { "label": "Pause", "x": 18.5, "y": 2 }, - { "label": "Tab", "x": 0, "y": 3, "w": 1.5 }, - { "label": "Q", "x": 1.5, "y": 3 }, - { "label": "W", "x": 2.5, "y": 3 }, - { "label": "E", "x": 3.5, "y": 3 }, - { "label": "R", "x": 4.5, "y": 3 }, - { "label": "T", "x": 5.5, "y": 3 }, - { "label": "Y", "x": 6.5, "y": 3 }, - { "label": "U", "x": 7.5, "y": 3 }, - { "label": "I", "x": 8.5, "y": 3 }, - { "label": "O", "x": 9.5, "y": 3 }, - { "label": "P", "x": 10.5, "y": 3 }, - { "label": "[", "x": 11.5, "y": 3 }, - { "label": "]", "x": 12.5, "y": 3 }, - { "label": "\\", "x": 13.5, "y": 3, "w": 1.5 }, - { "label": "7", "x": 15.5, "y": 3 }, - { "label": "8", "x": 16.5, "y": 3 }, - { "label": "9", "x": 17.5, "y": 3 }, - { "label": "-", "x": 18.5, "y": 3 }, - { "label": "Caps Lock", "x": 0, "y": 4, "w": 1.75 }, - { "label": "A", "x": 1.75, "y": 4 }, - { "label": "S", "x": 2.75, "y": 4 }, - { "label": "D", "x": 3.75, "y": 4 }, - { "label": "F", "x": 4.75, "y": 4 }, - { "label": "G", "x": 5.75, "y": 4 }, - { "label": "H", "x": 6.75, "y": 4 }, - { "label": "J", "x": 7.75, "y": 4 }, - { "label": "K", "x": 8.75, "y": 4 }, - { "label": "L", "x": 9.75, "y": 4 }, - { "label": ";", "x": 10.75, "y": 4 }, - { "label": "'", "x": 11.75, "y": 4 }, - { "label": "ISO Hash", "x": 12.75, "y": 4 }, - { "label": "Enter", "x": 13.75, "y": 4, "w": 1.25 }, - { "label": "4", "x": 15.5, "y": 4 }, - { "label": "5", "x": 16.5, "y": 4 }, - { "label": "6", "x": 17.5, "y": 4 }, - { "label": "+", "x": 18.5, "y": 4 }, - { "label": "Shift", "x": 0, "y": 5, "w": 1.25 }, - { "label": "ISO Backslash", "x": 1.25, "y": 5 }, - { "label": "Z", "x": 2.25, "y": 5 }, - { "label": "X", "x": 3.25, "y": 5 }, - { "label": "C", "x": 4.25, "y": 5 }, - { "label": "V", "x": 5.25, "y": 5 }, - { "label": "B", "x": 6.25, "y": 5 }, - { "label": "N", "x": 7.25, "y": 5 }, - { "label": "M", "x": 8.25, "y": 5 }, - { "label": ",", "x": 9.25, "y": 5 }, - { "label": ".", "x": 10.25, "y": 5 }, - { "label": "/", "x": 11.25, "y": 5 }, - { "label": "Shift", "x": 12.25, "y": 5, "w": 1.75 }, - { "label": "Up", "x": 14.25, "y": 5.25 }, - { "label": "1", "x": 15.5, "y": 5 }, - { "label": "2", "x": 16.5, "y": 5 }, - { "label": "3", "x": 17.5, "y": 5 }, - { "label": "Enter_Top", "x": 18.5, "y": 5 }, - { "label": "Ctrl", "x": 0, "y": 6, "w": 1.25 }, - { "label": "GUI", "x": 1.25, "y": 6, "w": 1.25 }, - { "label": "Alt", "x": 2.5, "y": 6, "w": 1.25 }, - { "label": "Space", "x": 3.75, "y": 6, "w": 6.25 }, - { "label": "Alt", "x": 10, "y": 6 }, - { "label": "Fn", "x": 11, "y": 6 }, - { "label": "Ctrl", "x": 12, "y": 6 }, - { "label": "Left", "x": 13.25, "y": 6.25 }, - { "label": "Down", "x": 14.25, "y": 6.25 }, - { "label": "Right", "x": 15.25, "y": 6.25 }, - { "label": "0", "x": 16.5, "y": 6 }, - { "label": ".", "x": 17.5, "y": 6 }, - { "label": "Enter", "x": 18.5, "y": 6 } - ] - } - } -} diff --git a/keyboards/tkc1800/keymaps/default/config.h b/keyboards/tkc1800/keymaps/default/config.h deleted file mode 100644 index ee142927f3..0000000000 --- a/keyboards/tkc1800/keymaps/default/config.h +++ /dev/null @@ -1,24 +0,0 @@ -/* Copyright 2017 Mathias Andersson <wraul@dbox.se> - * - * 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 - -#define USE_I2C -#define SSD1306OLED -//#define OLED_ROTATE180 -#define SSD1306_ADDRESS 0x3C - -// place overrides here diff --git a/keyboards/tkc1800/keymaps/default/keymap.c b/keyboards/tkc1800/keymaps/default/keymap.c deleted file mode 100644 index 5455934a30..0000000000 --- a/keyboards/tkc1800/keymaps/default/keymap.c +++ /dev/null @@ -1,159 +0,0 @@ -/* Copyright 2017 Mathias Andersson <wraul@dbox.se> - * - * 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 QMK_KEYBOARD_H -#include "LUFA/Drivers/Peripheral/TWI.h" -#include "i2c.h" -#include "ssd1306.h" - - -//Layers - -enum { - BASE = 0, - FUNCTION, -}; - -bool screenWorks = 0; - -//13 characters max without re-writing the "Layer: " format in iota_gfx_task_user() -static char layer_lookup[][14] = {"Base","Function"}; - - - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Keymap BASE: (Base Layer) Default Layer - * ,-------------------------------------------------------. ,-------------------. - * |Esc| F1| F2| F3| F4| | F5| F6| F7| F8| | F9|F10|F11|F12| |Ins |Home|PgUp|PrSc| - * `-------------------------------------------------------' |-------------------| - * |Del |End |PgDn|ScrL| - * ,-----------------------------------------------------------. |-------------------| - * | ~ | 1 | 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | |NumL| / | * |Paus| - * |-----------------------------------------------------------| |-------------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | | 7 | 8 | 9 | - | - * |-----------------------------------------------------------| |-------------------| - * |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return | | 4 | 5 | 6 | + | - * |-----------------------------------------------------------' |-------------------| - * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up | 1 | 2 | 3 | Ent| - * |--------------------------------------------------------'----`--------------| | - * |Ctrl|Gui |Alt | Space |Alt |Fn |Ctr|Left |Down|Rght| 0 | . | | - * `---------------------------------------------------------------------------------' - */ - [BASE] = LAYOUT( - KC_ESC, 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, KC_HOME, KC_PGUP, KC_PSCR, \ - KC_DEL, KC_END, KC_PGDN, KC_SLCK, \ - 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_BSPC, XXXXXXX, KC_NLCK, KC_PSLS, KC_PAST, KC_PAUS, \ - 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_P7, KC_P8, KC_P9, KC_PMNS, \ - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, XXXXXXX, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, \ - KC_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, XXXXXXX, \ - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(FUNCTION), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT \ - ), - /* Keymap FUNCTION: (Function Layer) - * ,-------------------------------------------------------. ,-------------------. - * | | | | | | | | | | | | | | | | | | | | | - * `-------------------------------------------------------' |-------------------| - * | | | | | - * ,-----------------------------------------------------------. |-------------------| - * | | | | | | | | | | | | | | RESET | | | | | | - * |-----------------------------------------------------------| |-------------------| - * | | | | | | | | | | | | | | | | | | | | - * |-----------------------------------------------------------| |-------------------| - * | | | | | | | | | | | | | | | | | | | - * |-----------------------------------------------------------' |-------------------| - * | |Tog|Mod|Hu+|Hu-|Sa+|Sa-|Va+|Va-|Stp| | | | | | | | - * |--------------------------------------------------------'----`--------------| | - * | | | | | | | | | | | | . | | - * `---------------------------------------------------------------------------------' - */ - [FUNCTION] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, XXXXXXX, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______, \ - _______, XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_STEP, _______, _______, _______, _______, _______, _______, XXXXXXX, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ - ), -}; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} - -void matrix_init_user(void) { - #ifdef USE_I2C - i2c_master_init(); - #ifdef SSD1306OLED - // calls code for the SSD1306 OLED - _delay_ms(400); - TWI_Init(TWI_BIT_PRESCALE_1, TWI_BITLENGTH_FROM_FREQ(1, 800000)); - if ( iota_gfx_init() ) { // turns on the display - screenWorks = 1; - } - #endif - #endif - #ifdef AUDIO_ENABLE - startup_user(); - #endif -} - -void matrix_scan_user(void) { - #ifdef SSD1306OLED - if ( screenWorks ) { - iota_gfx_task(); // this is what updates the display continuously - }; - #endif -} - -void matrix_update(struct CharacterMatrix *dest, - const struct CharacterMatrix *source) { - if (memcmp(dest->display, source->display, sizeof(dest->display))) { - memcpy(dest->display, source->display, sizeof(dest->display)); - dest->dirty = true; - } -} - -void iota_gfx_task_user(void) { - #if DEBUG_TO_SCREEN - if (debug_enable) { - return; - } - #endif - - struct CharacterMatrix matrix; - - matrix_clear(&matrix); - matrix_write_P(&matrix, PSTR("TKC1800")); - - uint8_t layer = biton32(layer_state); - - char buf[40]; - snprintf(buf,sizeof(buf), "Undef-%d", layer); - matrix_write_P(&matrix, PSTR("\nLayer: ")); - matrix_write(&matrix, layer_lookup[layer]); - - // Host Keyboard LED Status - char led[40]; - snprintf(led, sizeof(led), "\n\n%s %s %s", - (host_keyboard_leds() & (1<<USB_LED_NUM_LOCK)) ? "NUMLOCK" : " ", - (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) ? "CAPS" : " ", - (host_keyboard_leds() & (1<<USB_LED_SCROLL_LOCK)) ? "SCLK" : " "); - matrix_write(&matrix, led); - matrix_update(&display, &matrix); -} diff --git a/keyboards/tkc1800/keymaps/smt/config.h b/keyboards/tkc1800/keymaps/smt/config.h deleted file mode 100644 index ee142927f3..0000000000 --- a/keyboards/tkc1800/keymaps/smt/config.h +++ /dev/null @@ -1,24 +0,0 @@ -/* Copyright 2017 Mathias Andersson <wraul@dbox.se> - * - * 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 - -#define USE_I2C -#define SSD1306OLED -//#define OLED_ROTATE180 -#define SSD1306_ADDRESS 0x3C - -// place overrides here diff --git a/keyboards/tkc1800/keymaps/smt/keymap.c b/keyboards/tkc1800/keymaps/smt/keymap.c deleted file mode 100644 index 9f506b443b..0000000000 --- a/keyboards/tkc1800/keymaps/smt/keymap.c +++ /dev/null @@ -1,214 +0,0 @@ -/* Copyright 2017 Mathias Andersson <wraul@dbox.se> - * - * 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 QMK_KEYBOARD_H -#include "LUFA/Drivers/Peripheral/TWI.h" -#include "i2c.h" -#include "ssd1306.h" - -// Custom macros -#define CTL_ESC CTL_T(KC_ESC) // Tap for Esc, hold for Ctrl -#define HPR_TAB ALL_T(KC_TAB) // Tap for Tab, hold for Hyper (Super+Ctrl+Shift+Alt) -#define SFT_ENT SFT_T(KC_ENT) // Tap for Enter, hold for Shift - -//Layers - -enum { - QWERTY = 0, - COLEMAK, - DVORAK, - FUNCTION, -}; - -//13 characters max without re-writing the "Layer: " format in iota_gfx_task_user() -static char layer_lookup[][14] = {"Qwerty","Dvorak","Function"}; - - - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Keymap QWERTY: (Qwerty Layer) Default Layer - * ,-------------------------------------------------------. ,-------------------. - * |Esc| F1| F2| F3| F4| | F5| F6| F7| F8| | F9|F10|F11|F12| |Ins |Home|PgUp|PrSc| - * `-------------------------------------------------------' |-------------------| - * |Del |End |PgDn|ScrL| - * ,-----------------------------------------------------------. |-------------------| - * | ~ | 1 | 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | |NumL| / | * |Paus| - * |-----------------------------------------------------------| |-------------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | | 7 | 8 | 9 | - | - * |-----------------------------------------------------------| |-------------------| - * |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return | | 4 | 5 | 6 | + | - * |-----------------------------------------------------------' |-------------------| - * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up | 1 | 2 | 3 | Ent| - * |--------------------------------------------------------'----`--------------| | - * |Ctrl|Gui |Alt | Space |Alt |Gui|Ctr|Left |Down|Rght| 0 | . | | - * `---------------------------------------------------------------------------------' - */ - [QWERTY] = LAYOUT( - KC_ESC, 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, KC_HOME, KC_PGUP, KC_PSCR, \ - KC_DEL, KC_END, KC_PGDN, KC_SLCK, \ - 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_BSLS, KC_GRV, KC_NLCK, KC_PSLS, KC_PAST, KC_PAUS, \ - HPR_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_P7, KC_P8, KC_P9, KC_PMNS, \ - CTL_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, XXXXXXX, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, \ - KC_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT, KC_UP, KC_P1, KC_P2, KC_P3, XXXXXXX, \ - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(FUNCTION), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT \ - ), - /* Keymap COLEMAK: (Colemak Layer) Default Layer - * ,-------------------------------------------------------. ,-------------------. - * |Esc| F1| F2| F3| F4| | F5| F6| F7| F8| | F9|F10|F11|F12| |Ins |Home|PgUp|PrSc| - * `-------------------------------------------------------' |-------------------| - * |Del |End |PgDn|ScrL| - * ,-----------------------------------------------------------. |-------------------| - * | ~ | 1 | 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | |NumL| / | * |Paus| - * |-----------------------------------------------------------| |-------------------| - * |Tab | Q| W| F| P| G| J| L| U| Y| ;| [| ]| \ | | 7 | 8 | 9 | - | - * |-----------------------------------------------------------| |-------------------| - * |CAPS | A| R| S| T| D| H| N| E| I| O| '|Return | | 4 | 5 | 6 | + | - * |-----------------------------------------------------------' |-------------------| - * |Shift | Z| X| C| V| B| K| M| ,| .| /|Shift | Up | 1 | 2 | 3 | Ent| - * |--------------------------------------------------------'----`--------------| | - * |Ctrl|Gui |Alt | Space |Alt |Gui|Ctr|Left |Down|Rght| 0 | . | | - * `---------------------------------------------------------------------------------' - */ - [COLEMAK] = LAYOUT( - KC_ESC, 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, KC_HOME, KC_PGUP, KC_PSCR, \ - KC_DEL, KC_END, KC_PGDN, KC_SLCK, \ - 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_BSLS, KC_GRV, KC_NLCK, KC_PSLS, KC_PAST, KC_PAUS, \ - HPR_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSPC, KC_P7, KC_P8, KC_P9, KC_PMNS, \ - CTL_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, XXXXXXX, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, \ - KC_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT, KC_UP, KC_P1, KC_P2, KC_P3, XXXXXXX, \ - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(FUNCTION), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT \ - ), - /* Keymap DVORAK: (Dvorak Layer) Default Layer - * ,-------------------------------------------------------. ,-------------------. - * |Esc| F1| F2| F3| F4| | F5| F6| F7| F8| | F9|F10|F11|F12| |Ins |Home|PgUp|PrSc| - * `-------------------------------------------------------' |-------------------| - * |Del |End |PgDn|ScrL| - * ,-----------------------------------------------------------. |-------------------| - * | ~ | 1 | 2| 3| 4| 5| 6| 7| 8| 9| 0| [| ]| \| ~ | |NumL| / | * |Paus| - * |-----------------------------------------------------------| |-------------------| - * |Tab | '| ,| .| P| Y| F| G| C| R| L| /| =| BS | | 7 | 8 | 9 | - | - * |-----------------------------------------------------------| |-------------------| - * |CAPS | A| O| E| U| I| D| H| T| N| S| -|Return | | 4 | 5 | 6 | + | - * |-----------------------------------------------------------' |-------------------| - * |Shift | ;| Q| J| K| X| B| M| W| V| Z|Shift | Up | 1 | 2 | 3 | Ent| - * |--------------------------------------------------------'----`--------------| | - * |Ctrl|Gui |Alt | Space |Alt |Gui|Ctr|Left |Down|Rght| 0 | . | | - * `---------------------------------------------------------------------------------' - */ - [DVORAK] = LAYOUT( - KC_ESC, 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, KC_HOME, KC_PGUP, KC_PSCR, \ - KC_DEL, KC_END, KC_PGDN, KC_SLCK, \ - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSLS, KC_GRV, KC_NLCK, KC_PSLS, KC_PAST, KC_PAUS, \ - HPR_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSPC, KC_P7, KC_P8, KC_P9, KC_PMNS, \ - CTL_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, XXXXXXX, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, \ - KC_LSFT, XXXXXXX, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_ENT, KC_UP, KC_P1, KC_P2, KC_P3, XXXXXXX, \ - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(FUNCTION), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT \ - ), - [FUNCTION] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, KC_PSCR, \ - KC_DEL, KC_END, KC_PGDN, KC_SLCK, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, KC_NLCK, KC_PSLS, KC_PAST, KC_PAUS, \ - _______, _______, _______, _______, _______, _______, _______, QWERTY, COLEMAK, DVORAK, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PMNS, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, KC_P4, KC_P5, KC_P6, KC_PPLS, \ - _______, XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_STEP, _______, _______, KC_UP, KC_P1, KC_P2, KC_P3, XXXXXXX, \ - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, _______, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT \ - ), -}; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case QWERTY: - if (record->event.pressed) { - set_single_persistent_default_layer(QWERTY); - } - return false; - break; - case COLEMAK: - if (record->event.pressed) { - set_single_persistent_default_layer(COLEMAK); - } - return false; - break; - case DVORAK: - if (record->event.pressed) { - set_single_persistent_default_layer(DVORAK); - } - return false; - break; - } - return true; -} - -void led_set_user(uint8_t usb_led) { - -} - -void matrix_init_user(void) { - #ifdef USE_I2C - i2c_master_init(); - #ifdef SSD1306OLED - // calls code for the SSD1306 OLED - _delay_ms(400); - TWI_Init(TWI_BIT_PRESCALE_1, TWI_BITLENGTH_FROM_FREQ(1, 800000)); - iota_gfx_init(); // turns on the display - #endif - #endif - #ifdef AUDIO_ENABLE - startup_user(); - #endif -} - -void matrix_scan_user(void) { - #ifdef SSD1306OLED - iota_gfx_task(); // this is what updates the display continuously - #endif -} - -void matrix_update(struct CharacterMatrix *dest, - const struct CharacterMatrix *source) { - if (memcmp(dest->display, source->display, sizeof(dest->display))) { - memcpy(dest->display, source->display, sizeof(dest->display)); - dest->dirty = true; - } -} - -void iota_gfx_task_user(void) { - #if DEBUG_TO_SCREEN - if (debug_enable) { - return; - } - #endif - - struct CharacterMatrix matrix; - - matrix_clear(&matrix); - matrix_write_P(&matrix, PSTR("TKC1800")); - - uint8_t layer = biton32(layer_state); - - char buf[40]; - snprintf(buf,sizeof(buf), "Undef-%d", layer); - matrix_write_P(&matrix, PSTR("\nLayer: ")); - matrix_write(&matrix, layer_lookup[layer]); - - // Host Keyboard LED Status - char led[40]; - snprintf(led, sizeof(led), "\n\n%s %s %s", - (host_keyboard_leds() & (1<<USB_LED_NUM_LOCK)) ? "NUMLOCK" : " ", - (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) ? "CAPS" : " ", - (host_keyboard_leds() & (1<<USB_LED_SCROLL_LOCK)) ? "SCLK" : " "); - matrix_write(&matrix, led); - matrix_update(&display, &matrix); -} diff --git a/keyboards/tkc1800/keymaps/wkl/config.h b/keyboards/tkc1800/keymaps/wkl/config.h deleted file mode 100644 index ee142927f3..0000000000 --- a/keyboards/tkc1800/keymaps/wkl/config.h +++ /dev/null @@ -1,24 +0,0 @@ -/* Copyright 2017 Mathias Andersson <wraul@dbox.se> - * - * 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 - -#define USE_I2C -#define SSD1306OLED -//#define OLED_ROTATE180 -#define SSD1306_ADDRESS 0x3C - -// place overrides here diff --git a/keyboards/tkc1800/keymaps/wkl/keymap.c b/keyboards/tkc1800/keymaps/wkl/keymap.c deleted file mode 100644 index 6f331c61cc..0000000000 --- a/keyboards/tkc1800/keymaps/wkl/keymap.c +++ /dev/null @@ -1,142 +0,0 @@ -/* Copyright 2017 Mathias Andersson <wraul@dbox.se> - * - * 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 QMK_KEYBOARD_H -#include "LUFA/Drivers/Peripheral/TWI.h" -#include "i2c.h" -#include "ssd1306.h" - - -//Layers - -enum { - BASE = 0, - FUNCTION, -}; - -bool screenWorks = 0; - -//13 characters max without re-writing the "Layer: " format in iota_gfx_task_user() -static char layer_lookup[][14] = {"Base","Function"}; - - - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Keymap BASE: (Base Layer) Default Layer - * ,-------------------------------------------------------. ,-------------------. - * |Esc| F1| F2| F3| F4| | F5| F6| F7| F8| | F9|F10|F11|F12| |Ins |Home|PgUp|PrSc| - * `-------------------------------------------------------' |-------------------| - * |Del |End |PgDn|ScrL| - * ,-----------------------------------------------------------. |-------------------| - * | ~ | 1 | 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | |NumL| / | * |Paus| - * |-----------------------------------------------------------| |-------------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | | 7 | 8 | 9 | - | - * |-----------------------------------------------------------| |-------------------| - * |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return | | 4 | 5 | 6 | + | - * |-----------------------------------------------------------' |-------------------| - * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up | 1 | 2 | 3 | Ent| - * |--------------------------------------------------------'----`--------------| | - * |Ctrl | Alt | Space | Fn |Ctrl |Left |Down|Rght| 0 | . | | - * `---------------------------------------------------------------------------------' - */ - [BASE] = LAYOUT( - KC_ESC, 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, KC_HOME, KC_PGUP, KC_PSCR, \ - KC_DEL, KC_END, KC_PGDN, KC_SLCK, \ - 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_BSPC, XXXXXXX, KC_NLCK, KC_PSLS, KC_PAST, KC_PAUS, \ - 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_P7, KC_P8, KC_P9, KC_PMNS, \ - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, XXXXXXX, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, \ - KC_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, XXXXXXX, \ - KC_LCTL, KC_LALT, XXXXXXX, KC_SPC, XXXXXXX, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT \ - ), - [FUNCTION] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, XXXXXXX, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______, \ - _______, XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_STEP, _______, _______, _______, _______, _______, _______, XXXXXXX, \ - _______, _______, XXXXXXX, _______, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______ \ - ), -}; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} - -void matrix_init_user(void) { - #ifdef USE_I2C - i2c_master_init(); - #ifdef SSD1306OLED - // calls code for the SSD1306 OLED - _delay_ms(400); - TWI_Init(TWI_BIT_PRESCALE_1, TWI_BITLENGTH_FROM_FREQ(1, 800000)); - if ( iota_gfx_init() ) { // turns on the display - screenWorks = 1; - } - #endif - #endif - #ifdef AUDIO_ENABLE - startup_user(); - #endif -} - -void matrix_scan_user(void) { - #ifdef SSD1306OLED - if ( screenWorks ) { - iota_gfx_task(); // this is what updates the display continuously - }; - #endif -} - -void matrix_update(struct CharacterMatrix *dest, - const struct CharacterMatrix *source) { - if (memcmp(dest->display, source->display, sizeof(dest->display))) { - memcpy(dest->display, source->display, sizeof(dest->display)); - dest->dirty = true; - } -} - -void iota_gfx_task_user(void) { - #if DEBUG_TO_SCREEN - if (debug_enable) { - return; - } - #endif - - struct CharacterMatrix matrix; - - matrix_clear(&matrix); - matrix_write_P(&matrix, PSTR("TKC1800")); - - uint8_t layer = biton32(layer_state); - - char buf[40]; - snprintf(buf,sizeof(buf), "Undef-%d", layer); - matrix_write_P(&matrix, PSTR("\nLayer: ")); - matrix_write(&matrix, layer_lookup[layer]); - - // Host Keyboard LED Status - char led[40]; - snprintf(led, sizeof(led), "\n\n%s %s %s", - (host_keyboard_leds() & (1<<USB_LED_NUM_LOCK)) ? "NUMLOCK" : " ", - (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) ? "CAPS" : " ", - (host_keyboard_leds() & (1<<USB_LED_SCROLL_LOCK)) ? "SCLK" : " "); - matrix_write(&matrix, led); - matrix_update(&display, &matrix); -} diff --git a/keyboards/tkc1800/keymaps/yanfali/config.h b/keyboards/tkc1800/keymaps/yanfali/config.h deleted file mode 100644 index f1390cb03f..0000000000 --- a/keyboards/tkc1800/keymaps/yanfali/config.h +++ /dev/null @@ -1,24 +0,0 @@ -/* Copyright 2017 Mathias Andersson <wraul@dbox.se> - * - * 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 - -//#define USE_I2C -//#define SSD1306OLED -//#define OLED_ROTATE180 -#define SSD1306_ADDRESS 0x3C - -// place overrides here diff --git a/keyboards/tkc1800/keymaps/yanfali/keymap.c b/keyboards/tkc1800/keymaps/yanfali/keymap.c deleted file mode 100644 index 8dad3446de..0000000000 --- a/keyboards/tkc1800/keymaps/yanfali/keymap.c +++ /dev/null @@ -1,136 +0,0 @@ -/* Copyright 2017 Mathias Andersson <wraul@dbox.se> - * - * 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 QMK_KEYBOARD_H -#include "LUFA/Drivers/Peripheral/TWI.h" -#include "i2c.h" -#include "ssd1306.h" - - -//Layers - -enum { - BASE = 0, - FUNCTION, -}; - -//13 characters max without re-writing the "Layer: " format in iota_gfx_task_user() -static char layer_lookup[][14] = {"Base","Function"}; - - - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Keymap BASE: (Base Layer) Default Layer - * ,-------------------------------------------------------. ,-------------------. - * |Esc| F1| F2| F3| F4| | F5| F6| F7| F8| | F9|F10|F11|F12| |Ins |Home|PgUp|PrSc| - * `-------------------------------------------------------' |-------------------| - * |Del |End |PgDn|ScrL| - * ,-----------------------------------------------------------. |-------------------| - * | ~ | 1 | 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | |NumL| / | * |Paus| - * |-----------------------------------------------------------| |-------------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | | 7 | 8 | 9 | - | - * |-----------------------------------------------------------| |-------------------| - * |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return | | 4 | 5 | 6 | + | - * |-----------------------------------------------------------' |-------------------| - * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up | 1 | 2 | 3 | Ent| - * |--------------------------------------------------------'----`--------------| | - * |Ctrl|Gui |Alt | Space |Alt |Gui|Ctr|Left |Down|Rght| 0 | . | | - * `---------------------------------------------------------------------------------' - */ - [BASE] = LAYOUT( - KC_ESC, 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, KC_HOME, KC_PGUP, KC_PSCR, \ - KC_DEL, KC_END, KC_PGDN, KC_SLCK, \ - 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_BSPC, XXXXXXX, KC_NLCK, KC_PSLS, KC_PAST, KC_PAUS, \ - 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_P7, KC_P8, KC_P9, KC_PMNS, \ - LCTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, XXXXXXX, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, \ - KC_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, XXXXXXX, \ - KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, MO(FUNCTION), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT \ - ), - [FUNCTION] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, XXXXXXX, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______, \ - _______, XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ - ), -}; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} - -void matrix_init_user(void) { - #ifdef USE_I2C - i2c_master_init(); - #ifdef SSD1306OLED - // calls code for the SSD1306 OLED - _delay_ms(400); - TWI_Init(TWI_BIT_PRESCALE_1, TWI_BITLENGTH_FROM_FREQ(1, 800000)); - iota_gfx_init(); // turns on the display - #endif - #endif - #ifdef AUDIO_ENABLE - startup_user(); - #endif -} - -void matrix_scan_user(void) { - #ifdef SSD1306OLED - iota_gfx_task(); // this is what updates the display continuously - #endif -} - -void matrix_update(struct CharacterMatrix *dest, - const struct CharacterMatrix *source) { - if (memcmp(dest->display, source->display, sizeof(dest->display))) { - memcpy(dest->display, source->display, sizeof(dest->display)); - dest->dirty = true; - } -} - -void iota_gfx_task_user(void) { - #if DEBUG_TO_SCREEN - if (debug_enable) { - return; - } - #endif - - struct CharacterMatrix matrix; - - matrix_clear(&matrix); - matrix_write_P(&matrix, PSTR("TKC1800")); - - uint8_t layer = biton32(layer_state); - - char buf[40]; - snprintf(buf,sizeof(buf), "Undef-%d", layer); - matrix_write_P(&matrix, PSTR("\nLayer: ")); - matrix_write(&matrix, layer_lookup[layer]); - - // Host Keyboard LED Status - char led[40]; - snprintf(led, sizeof(led), "\n\n%s %s %s", - (host_keyboard_leds() & (1<<USB_LED_NUM_LOCK)) ? "NUMLOCK" : " ", - (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) ? "CAPS" : " ", - (host_keyboard_leds() & (1<<USB_LED_SCROLL_LOCK)) ? "SCLK" : " "); - matrix_write(&matrix, led); - matrix_update(&display, &matrix); -} diff --git a/keyboards/tkc1800/rules.mk b/keyboards/tkc1800/rules.mk deleted file mode 100644 index 35da90d076..0000000000 --- a/keyboards/tkc1800/rules.mk +++ /dev/null @@ -1,71 +0,0 @@ - -# MCU name -MCU = at90usb1286 - -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# Boot Section Size in *bytes* -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -OPT_DEFS += -DBOOTLOADER_SIZE=8192 - - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # 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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default -RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 - -SRC = i2c.c \ - ssd1306.c diff --git a/keyboards/tkc1800/tkc1800.c b/keyboards/tkc1800/tkc1800.c deleted file mode 100644 index bc6676846d..0000000000 --- a/keyboards/tkc1800/tkc1800.c +++ /dev/null @@ -1,69 +0,0 @@ -/* Copyright 2017 Mathias Andersson <wraul@dbox.se> - * - * 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 "tkc1800.h" -#include "led.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - led_init_ports(); - 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_init_ports(void) { - DDRD |= (1<<2) | (1<<3) | (1<<4); // OUT - DDRB |= (1<<7); // OUT - PORTB |= (1<<7); -} - -void led_set_kb(uint8_t usb_led) { -// led_set_user(usb_led); - if (usb_led & (1<<USB_LED_NUM_LOCK)) { - // Turn numlock on - PORTD |= (1<<2); - } else { - // Turn numlock off - PORTD &= ~(1<<2); - } - if (usb_led & (1<<USB_LED_CAPS_LOCK)) { - // Turn capslock on - PORTD |= (1<<3); - } else { - // Turn capslock off - PORTD &= ~(1<<3); - } - if (usb_led & (1<<USB_LED_SCROLL_LOCK)) { - // Turn scrolllock on - PORTD |= (1<<4); - } else { - // Turn scrolllock off - PORTD &= ~(1<<4); - } -}
\ No newline at end of file diff --git a/keyboards/tkc1800/tkc1800.h b/keyboards/tkc1800/tkc1800.h deleted file mode 100644 index 4d1686cf16..0000000000 --- a/keyboards/tkc1800/tkc1800.h +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright 2017 Mathias Andersson <wraul@dbox.se> - * - * 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 LAYOUT( \ - K00, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, K0G, K0H, K0I, \ - K1F, K1G, K1H, K1I, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H, K2I, \ - K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3F, K3G, K3H, K3I, \ - K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4F, K4G, K4H, K4I, \ - K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C, K5D, K5F, K5G, K5H, K5I, \ - K60, K61, K62, K65, K69, K6A, K6B, K6C, K6D, K6E, K6G, K6H, K6I \ -) { \ - { K00, KC_NO, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KC_NO, K0F, K0G, K0H, K0I }, \ - { 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, KC_NO, K1F, K1G, K1H, K1I }, \ - { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H, K2I }, \ - { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO, K3F, K3G, K3H, K3I }, \ - { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, KC_NO, K4F, K4G, K4H, K4I }, \ - { K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C, K5D, KC_NO, K5F, K5G, K5H, K5I }, \ - { K60, K61, K62, KC_NO, KC_NO, K65, KC_NO, KC_NO, KC_NO, K69, K6A, K6B, K6C, K6D, K6E, KC_NO, K6G, K6H, K6I } \ -} |