kinesis remap

This commit is contained in:
milestogo 2017-01-08 22:02:01 -08:00
parent 176b93d08e
commit f74ff86f9c
45 changed files with 2006 additions and 267 deletions

View File

@ -1,3 +1,5 @@
SUBPROJECT_DEFAULT = alvicstep
ifndef MAKEFILE_INCLUDED
include ../../Makefile
endif
endif

View File

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

View File

@ -0,0 +1,105 @@
#include "kinesis.h"
// begin section origin https://github.com/alvicstep/tmk_keyboard
void all_led_off(void)
{
PORTD = 0b11111111;
}
void all_led_on(void)
{
PORTD = 0b00000000;
}
void num_lock_led_on(void)
{
PORTD = 0b11101111;
}
void caps_lock_led_on(void)
{
PORTD = 0b01111111;
}
void scroll_lock_led_on(void)
{
PORTD = 0b11011111;
}
void keypad_led_on(void)
{
PORTD = 0b10111111;
}
void blink_all_leds(void)
{
all_led_on();
_delay_ms(500);
all_led_off();
_delay_ms(100);
caps_lock_led_on();
_delay_ms(100);
num_lock_led_on();
_delay_ms(100);
scroll_lock_led_on();
_delay_ms(100);
keypad_led_on();
_delay_ms(100);
//back
scroll_lock_led_on();
_delay_ms(100);
num_lock_led_on();
_delay_ms(100);
caps_lock_led_on();
_delay_ms(100);
all_led_off();
}
// End section origin https://github.com/alvicstep/tmk_keyboard
void matrix_init_kb(void) {
blink_all_leds();
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
//Copyright 2014 Warren Janssens <warren.janssens@gmail.com>
uint8_t leds = 0xF0;
if (usb_led & 1 << USB_LED_NUM_LOCK)
leds &= ~0x10;
if (usb_led & 1 << USB_LED_CAPS_LOCK)
leds &= ~0x80;
if (usb_led & 1 << USB_LED_SCROLL_LOCK)
leds &= ~0x20;
PORTD = (PORTD & 0x0F) | leds;
led_set_user(usb_led);
}

View File

@ -0,0 +1,67 @@
#ifndef KINESIS_ALVICSTEP_H
#define KINESIS_ALVICSTEP_H
#include "../kinesis.h"
#define KEYMAP( \
k02,k22,k12,k01,k21,k11,k00,k20,k10, \
k80,k70,k60,k50,k40,k30, \
k81,k71,k61,k51,k41,k31, \
k82,k72,k62,k52,k42,k32, \
k83,k73,k63,k53,k43,k33, \
k74,k64,k54,k34, \
k36,k35, \
k55, \
k56,k46,k75, \
k03,k23,k13,k04,k24,k14,k05,k85,k84, \
k94,kA4,kB4,kD4,kE4,kF4, \
k95,kA5,kB5,kD5,kE5,kF5, \
k96,kA6,kB6,kD6,kE6,kF6, \
k97,kA7,kB7,kD7,kE7,kF7, \
k93,kB3,kD3,kE3, \
k47,k66, \
k67, \
k87,k76,k86 \
) { \
{ k00, k01, k02, k03, k04, k05, KC_NO, KC_NO }, \
{ k10, k11, k12, k13, k14, KC_NO, KC_NO, KC_NO }, \
{ k20, k21, k22, k23, k24, KC_NO, KC_NO, KC_NO }, \
{ k30, k31, k32, k33, k34, k35, k36, KC_NO }, \
{ k40, k41, k42, k43, KC_NO, KC_NO, k46, k47 }, \
{ k50, k51, k52, k53, k54, k55, k56, KC_NO }, \
{ k60, k61, k62, k63, k64, KC_NO, k66, k67 }, \
{ k70, k71, k72, k73, k74, k75, k76, KC_NO }, \
{ k80, k81, k82, k83, k84, k85, k86, k87}, \
{ KC_NO, KC_NO ,KC_NO ,k93, k94, k95, k96, k97}, \
{ KC_NO, KC_NO ,KC_NO ,KC_NO, kA4, kA5, kA6, kA7}, \
{ KC_NO, KC_NO ,KC_NO ,kB3, kB4, kB5, kB6, kB7}, \
{ KC_NO, KC_NO ,KC_NO ,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, \
{ KC_NO, KC_NO ,KC_NO ,kD3, kD4, kD5, kD6, kD7}, \
{ KC_NO, KC_NO ,KC_NO ,kE3, kE4, kE5, kE6, kE7}, \
{ KC_NO, KC_NO ,KC_NO ,KC_NO, kF4, kF5, kF6, kF7} \
}
/* Row pin configuration
PF0 A
PF1 B
PF2 C
PF3 G 0 = U4, 1 = U5
r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 rA rB rC rD rE rF
PB0 c0| f6 f8 f7 5 4 3 2 1 =+
PB1 c1| f3 f5 f4 t r e w q TAB
PB2 c2| ESC f2 f1 g f d s a CL
PB3 c3| f9 f11 f10 b v c x z LS UP DN [{ ]}
PB4 c4| f12 SL PS RT LT §± `~ 6 7 8 9 0 -_
PB5 c5| PB PGM KPD y u i o p \
PB6 c6| LC DL BS RC EN SP h j k l ;: '"
PB7 c7| RA PU PD n m ,< .> /? RS
*/
#endif

View File

@ -0,0 +1,35 @@
#ifndef ALVICSTEP_CONFIG_H
#define ALVICSTEP_CONFIG_H
#include "../config.h"
/* USB Device descriptor parameter */
#define PRODUCT_ID 0x6060
#define DEVICE_VER 0x0001
/* key matrix size */
#define MATRIX_ROWS 16
#define MATRIX_COLS 8
/*
* Keyboard Matrix Assignments
*
* Change this to how you wired your keyboard
* COLS: AVR pins used for columns, left to right
* ROWS: AVR pins used for rows, top to bottom
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
*
*/
//Passed through the port multipler, so 4 pins =16
#define MATRIX_ROW_PINS { F0,F1, F2, F3 }
// May be upside down.
#define MATRIX_COL_PINS { B0,B1, B2, B3, B4, B5, B6, B7 }
#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
#endif

View File

Before

Width:  |  Height:  |  Size: 174 KiB

After

Width:  |  Height:  |  Size: 174 KiB

View File

Before

Width:  |  Height:  |  Size: 336 KiB

After

Width:  |  Height:  |  Size: 336 KiB

View File

Before

Width:  |  Height:  |  Size: 260 KiB

After

Width:  |  Height:  |  Size: 260 KiB

View File

Before

Width:  |  Height:  |  Size: 171 KiB

After

Width:  |  Height:  |  Size: 171 KiB

View File

@ -0,0 +1,232 @@
EESchema-LIBRARY Version 2.3 Date: Wednesday, November 12, 2014 'pmt' 10:15:19 pm
#encoding utf-8
#
# AT90S4414-P
#
DEF AT90S4414-P IC 0 40 Y Y 1 F N
F0 "IC" -850 1880 40 H V L BNN
F1 "AT90S4414-P" 450 -1950 40 H V L BNN
F2 "DIL40" 0 0 30 H V C CIN
F3 "~" 0 0 60 H V C CNN
ALIAS AT90S8515-P
$FPLIST
40DIP-ELL600
40dip600
$ENDFPLIST
DRAW
S -850 1850 850 -1850 0 1 10 f
X (T0)PB0 1 1000 700 150 L 40 40 1 1 B
X (T1)PB1 2 1000 600 150 L 40 40 1 1 B
X (AIN0)PB2 3 1000 500 150 L 40 40 1 1 B
X (AIN1)PB3 4 1000 400 150 L 40 40 1 1 B
X (~SS~)PB4 5 1000 300 150 L 40 40 1 1 B
X (MOSI)PB5 6 1000 200 150 L 40 40 1 1 B
X (MISO)PB6 7 1000 100 150 L 40 40 1 1 B
X (SCK)PB7 8 1000 0 150 L 40 40 1 1 B
X ~RESET 9 -1000 1700 150 R 40 40 1 1 I
X (RXD)PD0 10 1000 -1000 150 L 40 40 1 1 B
X GND 20 0 -2000 150 U 40 40 1 1 W
X ALE 30 1000 850 150 L 40 40 1 1 O
X VCC 40 0 2000 150 D 40 40 1 1 W
X (TXD)PD1 11 1000 -1100 150 L 40 40 1 1 B
X (A8)PC0 21 1000 -150 150 L 40 40 1 1 B
X ICP 31 -1000 -1400 150 R 40 40 1 1 I
X (INT0)PD2 12 1000 -1200 150 L 40 40 1 1 B
X (A9)PC1 22 1000 -250 150 L 40 40 1 1 B
X (AD7)PA7 32 1000 1000 150 L 40 40 1 1 B
X (INT1)PD3 13 1000 -1300 150 L 40 40 1 1 B
X (A10)PC2 23 1000 -350 150 L 40 40 1 1 B
X (AD6)PA6 33 1000 1100 150 L 40 40 1 1 B
X PD4 14 1000 -1400 150 L 40 40 1 1 B
X (A11)PC3 24 1000 -450 150 L 40 40 1 1 B
X (AD5)PA5 34 1000 1200 150 L 40 40 1 1 B
X (OC1A)PD5 15 1000 -1500 150 L 40 40 1 1 B
X (A12)PC4 25 1000 -550 150 L 40 40 1 1 B
X (AD4)PA4 35 1000 1300 150 L 40 40 1 1 B
X (~WR~)PD6 16 1000 -1600 150 L 40 40 1 1 B
X (A13)PC5 26 1000 -650 150 L 40 40 1 1 B
X (AD3)PA3 36 1000 1400 150 L 40 40 1 1 B
X (~RD~)PD7 17 1000 -1700 150 L 40 40 1 1 B
X (A14)PC6 27 1000 -750 150 L 40 40 1 1 B
X (AD2)PA2 37 1000 1500 150 L 40 40 1 1 B
X XTAL2 18 -1000 1200 150 R 40 40 1 1 B
X (A15)PC7 28 1000 -850 150 L 40 40 1 1 B
X (AD1)PA1 38 1000 1600 150 L 40 40 1 1 B
X XTAL1 19 -1000 800 150 R 40 40 1 1 B
X OC1B 29 -1000 -1500 150 R 40 40 1 1 W
X (AD0)PA0 39 1000 1700 150 L 40 40 1 1 B
ENDDRAW
ENDDEF
#
# ATMEGA16U4-A
#
DEF ATMEGA16U4-A U 0 40 Y Y 1 F N
F0 "U" -950 1700 40 H V C CNN
F1 "ATMEGA16U4-A" 700 -1500 40 H V C CNN
F2 "TQFP44" 0 0 35 H V C CIN
F3 "~" 1100 1100 60 H V C CNN
ALIAS ATMEGA16U4RC-A ATMEGA32U4-A ATMEGA32U4RC-A
$FPLIST
TQFP44
$ENDFPLIST
DRAW
S -1000 1650 950 -1450 0 1 10 f
X (INT6/AIN0)PE6 1 1100 -650 150 L 40 40 1 1 B
X UVCC 2 -450 1800 150 D 40 40 1 1 W
X D- 3 -1150 100 150 R 40 40 1 1 B
X D+ 4 -1150 200 150 R 40 40 1 1 B
X UGND 5 -400 -1600 150 U 40 40 1 1 P
X UCAP 6 -1150 -50 150 R 40 40 1 1 P
X VBUS 7 -1150 350 150 R 40 40 1 1 P
X (SS/PCINT0)PB0 8 1100 1550 150 L 40 40 1 1 B
X (SCLK/PCINT1)PB1 9 1100 1450 150 L 40 40 1 1 B
X (PDI/MOSI/PCINT2)PB2 10 1100 1350 150 L 40 40 1 1 B
X (RXD/INT2)PD2 20 1100 150 150 L 40 40 1 1 B
X (ADC13/OC1B/OC4B/PCINT13)PB6 30 1100 950 150 L 40 40 1 1 B
X (ADC1)PF1 40 1100 -950 150 L 40 40 1 1 B
X (PDO/MISO/PCINT3)PB3 11 1100 1250 150 L 40 40 1 1 B
X (TXD/INT3)PD3 21 1100 50 150 L 40 40 1 1 B
X (OC3A/~OC4A~)PC6 31 1100 650 150 L 40 40 1 1 B
X (ADC0)PF0 41 1100 -850 150 L 40 40 1 1 B
X (OC0A/OC1C/~RTS~/PCINT7)PB7 12 1100 850 150 L 40 40 1 1 B
X (XCK1/~CTS~)PD5 22 1100 -150 150 L 40 40 1 1 B
X (ICP3/CLK0/OC4A)PC7 32 1100 550 150 L 40 40 1 1 B
X AREF 42 -1150 -850 150 R 40 40 1 1 P
X ~RESET~ 13 -1150 1550 150 R 40 40 1 1 I
X GND 23 -50 -1600 150 U 40 40 1 1 W
X (~HWB~)PE2 33 1100 -550 150 L 40 40 1 1 B
X GND 43 150 -1600 150 U 40 40 1 1 W
X VCC 14 -200 1800 150 D 40 40 1 1 W
X AVCC 24 150 1800 150 D 40 40 1 1 W
X VCC 34 -100 1800 150 D 40 40 1 1 W
X AVCC 44 250 1800 150 D 40 40 1 1 W
X GND 15 -150 -1600 150 U 40 40 1 1 W
X (ICP2/ADC8)PD4 25 1100 -50 150 L 40 40 1 1 B
X GND 35 50 -1600 150 U 40 40 1 1 W
X XTAL2 16 -1150 950 150 R 40 40 1 1 O
X (T1/~OC4D~/ADC9)PD6 26 1100 -250 150 L 40 40 1 1 B
X (ADC7/TDI)PF7 36 1100 -1350 150 L 40 40 1 1 B
X XTAL1 17 -1150 1150 150 R 40 40 1 1 I
X (T0/OC4D/ADC10)PD7 27 1100 -350 150 L 40 40 1 1 B
X (ADC6/TDO)PF6 37 1100 -1250 150 L 40 40 1 1 B
X (OC0B/SCL/INT0)PD0 18 1100 350 150 L 40 40 1 1 B
X (ADC11/PCINT4)PB4 28 1100 1150 150 L 40 40 1 1 B
X (ADC5/TMS)PF5 38 1100 -1150 150 L 40 40 1 1 B
X (SDA/INT1)PD1 19 1100 250 150 L 40 40 1 1 B
X (ADC12/OC1A/~OC4B~/PCINT12)PB5 29 1100 1050 150 L 40 40 1 1 B
X (ADC4/TCK)PF4 39 1100 -1050 150 L 40 40 1 1 B
ENDDRAW
ENDDEF
#
# C
#
DEF C C 0 10 N Y 1 F N
F0 "C" 0 100 40 H V L CNN
F1 "C" 6 -85 40 H V L CNN
F2 "~" 38 -150 30 H V C CNN
F3 "~" 0 0 60 H V C CNN
$FPLIST
SM*
C?
C1-1
$ENDFPLIST
DRAW
P 2 0 1 20 -80 -30 80 -30 N
P 2 0 1 20 -80 30 80 30 N
X ~ 1 0 200 170 D 40 40 1 1 P
X ~ 2 0 -200 170 U 40 40 1 1 P
ENDDRAW
ENDDEF
#
# CONN_7
#
DEF CONN_7 P 0 40 Y N 1 F N
F0 "P" -30 0 60 V V C CNN
F1 "CONN_7" 70 0 60 V V C CNN
F2 "~" 0 0 60 H V C CNN
F3 "~" 0 0 60 H V C CNN
DRAW
S -100 350 150 -350 0 1 0 N
X P1 1 -350 300 250 R 50 50 1 1 P I
X P2 2 -350 200 250 R 50 50 1 1 P I
X P3 3 -350 100 250 R 50 50 1 1 P I
X P4 4 -350 0 250 R 50 50 1 1 P I
X P5 5 -350 -100 250 R 50 50 1 1 P I
X P6 6 -350 -200 250 R 50 50 1 1 P I
X P7 7 -350 -300 250 R 50 50 1 1 P I
ENDDRAW
ENDDEF
#
# GND
#
DEF ~GND #PWR 0 0 Y Y 1 F P
F0 "#PWR" 0 0 30 H I C CNN
F1 "GND" 0 -70 30 H I C CNN
F2 "~" 0 0 60 H V C CNN
F3 "~" 0 0 60 H V C CNN
DRAW
P 4 0 1 0 -50 0 0 -50 50 0 -50 0 N
X GND 1 0 0 0 U 30 30 1 1 W N
ENDDRAW
ENDDEF
#
# R
#
DEF R R 0 0 N Y 1 F N
F0 "R" 80 0 40 V V C CNN
F1 "R" 7 1 40 V V C CNN
F2 "~" -70 0 30 V V C CNN
F3 "~" 0 0 30 H V C CNN
$FPLIST
R?
SM0603
SM0805
R?-*
SM1206
$ENDFPLIST
DRAW
S -40 150 40 -150 0 1 12 N
X ~ 1 0 250 100 D 60 60 1 1 P
X ~ 2 0 -250 100 U 60 60 1 1 P
ENDDRAW
ENDDEF
#
# USB-MINI-B
#
DEF USB-MINI-B CON 0 40 Y Y 1 F N
F0 "CON" -250 450 60 H V C CNN
F1 "USB-MINI-B" -50 -500 60 H V C CNN
F2 "~" 0 0 60 H V C CNN
F3 "~" 0 0 60 H V C CNN
$FPLIST
USB-Mini-B-Jack
$ENDFPLIST
DRAW
S -350 400 350 -400 0 1 0 N
X VBUS 1 -550 300 200 R 50 50 1 1 W
X D- 2 -550 150 200 R 50 50 1 1 B
X D+ 3 -550 0 200 R 50 50 1 1 B
X ID 4 -550 -150 200 R 50 50 1 1 B
X GND 5 -550 -300 200 R 50 50 1 1 W
X SHELL1 6 550 300 200 L 50 50 1 1 B
X SHELL2 7 550 150 200 L 50 50 1 1 B
X SHELL3 8 550 -150 200 L 50 50 1 1 B
X SHELL4 9 550 -300 200 L 50 50 1 1 B
ENDDRAW
ENDDEF
#
# VCC
#
DEF VCC #PWR 0 0 Y Y 1 F P
F0 "#PWR" 0 100 30 H I C CNN
F1 "VCC" 0 100 30 H V C CNN
F2 "~" 0 0 60 H V C CNN
F3 "~" 0 0 60 H V C CNN
DRAW
X VCC 1 0 0 0 U 20 20 0 0 W N
C 0 50 20 0 1 0 N
P 3 0 1 0 0 0 0 30 0 30 N
ENDDRAW
ENDDEF
#
#End Library

View File

@ -0,0 +1,83 @@
update=Wednesday, November 05, 2014 'pmt' 12:08:47 pm
version=1
last_client=pcbnew
[cvpcb]
version=1
NetIExt=net
[cvpcb/libraries]
EquName1=devcms
[general]
version=1
[eeschema]
version=1
PageLayoutDescrFile=
SubpartIdSeparator=0
SubpartFirstId=65
LibDir=../../../lib/kicad/library
NetFmtName=
RptD_X=0
RptD_Y=100
RptLab=1
LabSize=60
[eeschema/libraries]
LibName1=power
LibName2=device
LibName3=transistors
LibName4=conn
LibName5=linear
LibName6=regul
LibName7=74xx
LibName8=cmos4000
LibName9=adc-dac
LibName10=memory
LibName11=xilinx
LibName12=special
LibName13=microcontrollers
LibName14=dsp
LibName15=microchip
LibName16=analog_switches
LibName17=motorola
LibName18=texas
LibName19=intel
LibName20=audio
LibName21=interface
LibName22=digital-audio
LibName23=philips
LibName24=display
LibName25=cypress
LibName26=siliconi
LibName27=opto
LibName28=atmel
LibName29=contrib
LibName30=valves
LibName31=custom
[pcbnew]
version=1
LastNetListRead=
UseCmpFile=1
PadDrill=1.016000000000
PadDrillOvalY=1.016000000000
PadSizeH=1.524000000000
PadSizeV=1.524000000000
PcbTextSizeV=1.500000000000
PcbTextSizeH=1.500000000000
PcbTextThickness=0.300000000000
ModuleTextSizeV=1.000000000000
ModuleTextSizeH=1.000000000000
ModuleTextSizeThickness=0.150000000000
SolderMaskClearance=0.000000000000
SolderMaskMinWidth=0.000000000000
DrawSegmentWidth=0.200000000000
BoardOutlineThickness=0.100000000000
ModuleOutlineThickness=0.150000000000
[pcbnew/libraries]
LibDir=../../../lib/kicad/modules
LibName1=custom
LibName2=Sockets
LibName3=Connect
LibName4=Discret
LibName5=Divers
LibName6=Display
LibName7=LEDs
LibName8=SMD_Packages
LibName9=Sockets_DIP

View File

@ -0,0 +1,634 @@
EESchema Schematic File Version 2
LIBS:power
LIBS:device
LIBS:transistors
LIBS:conn
LIBS:linear
LIBS:regul
LIBS:74xx
LIBS:cmos4000
LIBS:adc-dac
LIBS:memory
LIBS:xilinx
LIBS:special
LIBS:microcontrollers
LIBS:dsp
LIBS:microchip
LIBS:analog_switches
LIBS:motorola
LIBS:texas
LIBS:intel
LIBS:audio
LIBS:interface
LIBS:digital-audio
LIBS:philips
LIBS:display
LIBS:cypress
LIBS:siliconi
LIBS:opto
LIBS:atmel
LIBS:contrib
LIBS:valves
LIBS:custom
LIBS:kinesis-cache
EELAYER 27 0
EELAYER END
$Descr A4 11693 8268
encoding utf-8
Sheet 1 1
Title ""
Date "13 nov 2014"
Rev ""
Comp ""
Comment1 ""
Comment2 ""
Comment3 ""
Comment4 ""
$EndDescr
$Comp
L C C4
U 1 1 545804FB
P 2850 4250
F 0 "C4" H 2850 4350 40 0000 L CNN
F 1 "1uF" H 2856 4165 40 0000 L CNN
F 2 "~" H 2888 4100 30 0000 C CNN
F 3 "~" H 2850 4250 60 0000 C CNN
1 2850 4250
-1 0 0 1
$EndComp
$Comp
L R R3
U 1 1 545805E8
P 2500 4000
F 0 "R3" V 2580 4000 40 0000 C CNN
F 1 "22" V 2507 4001 40 0000 C CNN
F 2 "~" V 2430 4000 30 0000 C CNN
F 3 "~" H 2500 4000 30 0000 C CNN
1 2500 4000
0 -1 -1 0
$EndComp
$Comp
L R R2
U 1 1 545805FA
P 2500 3800
F 0 "R2" V 2580 3800 40 0000 C CNN
F 1 "22" V 2507 3801 40 0000 C CNN
F 2 "~" V 2430 3800 30 0000 C CNN
F 3 "~" H 2500 3800 30 0000 C CNN
1 2500 3800
0 -1 -1 0
$EndComp
Entry Wire Line
6450 2450 6550 2550
Entry Wire Line
6450 2550 6550 2650
Entry Wire Line
6450 2650 6550 2750
Entry Wire Line
6450 2750 6550 2850
Entry Wire Line
6450 2950 6550 3050
Entry Wire Line
6450 3050 6550 3150
Entry Wire Line
6450 2850 6550 2950
Entry Wire Line
6450 3150 6550 3250
Wire Wire Line
10250 1800 10750 1800
Entry Wire Line
10750 1800 10850 1900
Entry Wire Line
10750 1900 10850 2000
Entry Wire Line
10750 2000 10850 2100
Entry Wire Line
10750 2800 10850 2900
Entry Wire Line
10750 2900 10850 3000
Entry Wire Line
10750 3000 10850 3100
Entry Wire Line
10750 3100 10850 3200
Entry Wire Line
10750 3200 10850 3300
Entry Wire Line
10750 3300 10850 3400
$Comp
L AT90S8515-P IC2
U 1 1 545A62EA
P 9250 3500
F 0 "IC2" H 8400 5380 40 0000 L BNN
F 1 "AT90S8515-P" H 9700 1550 40 0000 L BNN
F 2 "DIL40" H 9250 3500 30 0000 C CIN
F 3 "" H 9250 3500 60 0000 C CNN
1 9250 3500
1 0 0 -1
$EndComp
NoConn ~ 10250 2650
Entry Wire Line
10750 3650 10850 3750
Entry Wire Line
10750 3750 10850 3850
Entry Wire Line
10750 3850 10850 3950
Entry Wire Line
10750 3950 10850 4050
Entry Wire Line
10750 4050 10850 4150
Entry Wire Line
10750 4150 10850 4250
Entry Wire Line
10750 4350 10850 4450
Entry Wire Line
10750 4250 10850 4350
NoConn ~ 8250 4900
NoConn ~ 8250 5000
NoConn ~ 8250 1800
Wire Wire Line
10250 1900 10750 1900
Wire Wire Line
10250 2000 10750 2000
Wire Wire Line
10250 2100 10750 2100
Wire Wire Line
10250 2200 10750 2200
Wire Wire Line
10250 2300 10750 2300
Wire Wire Line
10250 2400 10750 2400
Wire Wire Line
10250 2500 10750 2500
Text Label 10350 1800 0 60 ~ 0
A
Text Label 10350 1900 0 60 ~ 0
B
Text Label 10350 2000 0 60 ~ 0
C
Text Label 10350 2100 0 60 ~ 0
G
Wire Wire Line
10250 2800 10750 2800
Wire Wire Line
10250 2900 10750 2900
Wire Wire Line
10250 3000 10750 3000
Wire Wire Line
10250 3100 10750 3100
Wire Wire Line
10250 3200 10750 3200
Wire Wire Line
10250 3300 10750 3300
Wire Wire Line
10250 3400 10750 3400
Wire Wire Line
10250 3500 10750 3500
Text Label 10350 2800 0 60 ~ 0
DL2
Text Label 10350 2900 0 60 ~ 0
DR1
Text Label 10350 3000 0 60 ~ 0
DR2
Text Label 10350 3100 0 60 ~ 0
DL1
Text Label 10350 3400 0 60 ~ 0
SCL
Text Label 10350 3500 0 60 ~ 0
SDA
Wire Wire Line
10250 3650 10750 3650
Wire Wire Line
10250 3750 10750 3750
Wire Wire Line
10250 3850 10750 3850
Wire Wire Line
10250 3950 10750 3950
Wire Wire Line
10250 4050 10750 4050
Wire Wire Line
10250 4150 10750 4150
Wire Wire Line
10250 4250 10750 4250
Wire Wire Line
10250 4350 10750 4350
Text Label 10350 3650 0 60 ~ 0
R1
Text Label 10350 3750 0 60 ~ 0
R2
Text Label 10350 3850 0 60 ~ 0
R3
Text Label 10350 3950 0 60 ~ 0
R4
Text Label 10350 4050 0 60 ~ 0
R5
Text Label 10350 4150 0 60 ~ 0
R6
Text Label 10350 4250 0 60 ~ 0
R7
Text Label 10350 4350 0 60 ~ 0
R8
Wire Wire Line
10250 4500 10750 4500
Wire Wire Line
10250 4600 10750 4600
Wire Wire Line
10250 4700 10750 4700
Wire Wire Line
10250 4800 10750 4800
Wire Wire Line
10250 4900 10750 4900
Wire Wire Line
10250 5000 10750 5000
Wire Wire Line
10250 5100 10750 5100
Wire Wire Line
10250 5200 10750 5200
Text Label 10350 4600 0 60 ~ 0
FS1
Text Label 10350 5000 0 60 ~ 0
FS3
Text Label 10350 5200 0 60 ~ 0
FS2
$Comp
L GND #PWR01
U 1 1 545A7377
P 9250 5600
F 0 "#PWR01" H 9250 5600 30 0001 C CNN
F 1 "GND" H 9250 5530 30 0001 C CNN
F 2 "" H 9250 5600 60 0000 C CNN
F 3 "" H 9250 5600 60 0000 C CNN
1 9250 5600
1 0 0 -1
$EndComp
Wire Wire Line
9250 5500 9250 5600
Text Label 10350 4700 0 60 ~ 0
CLOCK
Text Label 10350 4800 0 60 ~ 0
DATA
NoConn ~ 10750 4700
NoConn ~ 10750 4800
Text Label 10350 3200 0 60 ~ 0
KP
Text Label 10350 3300 0 60 ~ 0
PGM
Text Label 10350 2500 0 60 ~ 0
BUZZ
NoConn ~ 8250 2300
NoConn ~ 8250 2700
$Comp
L GND #PWR02
U 1 1 545A7565
P 4750 5700
F 0 "#PWR02" H 4750 5700 30 0001 C CNN
F 1 "GND" H 4750 5630 30 0001 C CNN
F 2 "" H 4750 5700 60 0000 C CNN
F 3 "" H 4750 5700 60 0000 C CNN
1 4750 5700
1 0 0 -1
$EndComp
Entry Wire Line
6450 3650 6550 3750
Entry Wire Line
6450 3750 6550 3850
Entry Wire Line
6450 4150 6550 4250
Entry Wire Line
6450 4250 6550 4350
Entry Wire Line
6450 4050 6550 4150
Entry Wire Line
6450 4350 6550 4450
NoConn ~ 3750 2850
Wire Wire Line
1200 2000 6450 2000
NoConn ~ 3750 3050
Wire Wire Line
2750 3800 3750 3800
Wire Wire Line
2750 3900 3750 3900
Wire Wire Line
2750 3900 2750 4000
Wire Bus Line
6550 2100 6550 6050
Wire Bus Line
10850 1600 10850 6050
Text Label 6050 4350 0 60 ~ 0
DL1
Text Label 6050 4250 0 60 ~ 0
DR2
Text Label 6050 4150 0 60 ~ 0
DR1
Text Label 6050 4050 0 60 ~ 0
DL2
Text Label 6050 2450 0 60 ~ 0
R1
Text Label 6050 2550 0 60 ~ 0
R2
Text Label 6050 2650 0 60 ~ 0
R3
Text Label 6050 2750 0 60 ~ 0
R4
Text Label 6050 2850 0 60 ~ 0
R5
Text Label 6050 2950 0 60 ~ 0
R6
Text Label 6050 3050 0 60 ~ 0
R7
Text Label 6050 3150 0 60 ~ 0
R8
Text Label 6050 5050 0 60 ~ 0
A
Text Label 6050 5150 0 60 ~ 0
B
Text Label 6050 5250 0 60 ~ 0
C
Text Label 6050 5350 0 60 ~ 0
G
Text Label 1300 3800 0 60 ~ 0
D+
Text Label 1300 4000 0 60 ~ 0
D-
NoConn ~ 10750 2200
NoConn ~ 10750 2300
NoConn ~ 10750 2400
Text Label 10350 4500 0 60 ~ 0
GND
NoConn ~ 10750 4900
NoConn ~ 10750 5100
Text Label 6050 3450 0 60 ~ 0
KP
Text Label 6050 3350 0 60 ~ 0
PGM
$Comp
L ATMEGA32U4-A U1
U 1 1 5462E0B1
P 4900 4000
F 0 "U1" H 3950 5700 40 0000 C CNN
F 1 "ATMEGA32U4-A" H 5600 2500 40 0000 C CNN
F 2 "TQFP44" H 4900 4000 35 0000 C CIN
F 3 "" H 6000 5100 60 0000 C CNN
1 4900 4000
1 0 0 -1
$EndComp
Wire Wire Line
3750 4850 3750 5600
Wire Wire Line
4450 2200 5150 2200
Connection ~ 4700 2200
Connection ~ 4800 2200
Connection ~ 5050 2200
Connection ~ 4800 2000
Wire Wire Line
6000 2450 6450 2450
Wire Wire Line
6000 2550 6450 2550
Wire Wire Line
6000 2650 6450 2650
Wire Wire Line
6000 2750 6450 2750
Wire Wire Line
6000 2850 6450 2850
Wire Wire Line
6000 2950 6450 2950
Wire Wire Line
6000 3050 6450 3050
Wire Wire Line
6000 3150 6450 3150
Wire Wire Line
6000 5050 6450 5050
Wire Wire Line
6000 5150 6450 5150
Wire Wire Line
6000 5250 6450 5250
Wire Wire Line
6000 4050 6450 4050
Wire Wire Line
6000 4150 6450 4150
Wire Wire Line
6000 4250 6450 4250
Wire Wire Line
6000 4350 6450 4350
Wire Wire Line
6000 4550 6450 4550
Entry Wire Line
6450 3350 6550 3450
Entry Wire Line
6450 3450 6550 3550
Entry Wire Line
6450 5050 6550 5150
Entry Wire Line
6450 5150 6550 5250
Entry Wire Line
6450 5250 6550 5350
Entry Wire Line
6450 5350 6550 5450
Entry Wire Line
6450 4650 6550 4750
Wire Wire Line
6000 3350 6450 3350
Wire Wire Line
6000 3450 6450 3450
Wire Wire Line
1200 5600 6450 5600
Connection ~ 4950 5600
Connection ~ 4850 5600
Wire Wire Line
4750 5600 4750 5700
Connection ~ 4750 5600
Connection ~ 4500 5600
Text Label 6050 4550 0 60 ~ 0
HWB
Wire Wire Line
6000 5350 6450 5350
Wire Wire Line
6000 3650 6450 3650
Wire Wire Line
6000 3750 6450 3750
Text Label 6050 3650 0 60 ~ 0
SCL
Text Label 6050 3750 0 60 ~ 0
SDA
Wire Wire Line
6000 3850 6450 3850
Wire Wire Line
6000 3950 6450 3950
Wire Wire Line
6000 4650 6450 4650
Text Label 6050 4650 0 60 ~ 0
BUZZ
NoConn ~ 10750 4600
NoConn ~ 10750 5000
NoConn ~ 10750 5200
Entry Wire Line
10750 3400 10850 3500
Entry Wire Line
10750 3500 10850 3600
Entry Wire Line
10750 4500 10850 4600
Wire Wire Line
2850 4050 3750 4050
Text Label 2950 4050 0 60 ~ 0
UCAP
Wire Wire Line
6000 4850 6450 4850
Wire Wire Line
6000 4950 6450 4950
NoConn ~ 6450 4850
NoConn ~ 6450 4950
NoConn ~ 6450 4550
$Comp
L USB-MINI-B CON1
U 1 1 546431C1
P 2100 5050
F 0 "CON1" H 1850 5500 60 0000 C CNN
F 1 "USB-MINI-B" H 2050 4550 60 0000 C CNN
F 2 "" H 2100 5050 60 0000 C CNN
F 3 "" H 2100 5050 60 0000 C CNN
1 2100 5050
0 1 1 0
$EndComp
$Comp
L VCC #PWR03
U 1 1 54643698
P 2400 4400
F 0 "#PWR03" H 2400 4500 30 0001 C CNN
F 1 "VCC" H 2400 4500 30 0000 C CNN
F 2 "" H 2400 4400 60 0000 C CNN
F 3 "" H 2400 4400 60 0000 C CNN
1 2400 4400
1 0 0 -1
$EndComp
Text Notes 2600 2750 0 60 ~ 0
Teensy 2.0\n(not fully drawn)
$Comp
L CONN_7 B7K-PH-K-S1
U 1 1 54643939
P 1950 6900
F 0 "B7K-PH-K-S1" V 1920 6900 60 0000 C CNN
F 1 "CONN_7" V 2020 6900 60 0000 C CNN
F 2 "" H 1950 6900 60 0000 C CNN
F 3 "" H 1950 6900 60 0000 C CNN
1 1950 6900
1 0 0 -1
$EndComp
Connection ~ 3750 5600
Connection ~ 2400 5600
Connection ~ 2250 5600
Connection ~ 1950 5600
Wire Wire Line
2400 4400 2400 4500
Wire Wire Line
2250 4000 2250 4500
Wire Wire Line
1200 3800 2250 3800
Wire Wire Line
2100 3800 2100 4500
Wire Wire Line
2850 4450 2850 5600
Connection ~ 2850 5600
Entry Wire Line
1100 6800 1200 6900
Entry Wire Line
1100 6900 1200 7000
Entry Wire Line
1100 7000 1200 7100
Entry Wire Line
1100 6700 1200 6800
Wire Wire Line
1200 6600 1600 6600
Wire Wire Line
1200 6700 1600 6700
Wire Wire Line
1200 6800 1600 6800
Wire Wire Line
1200 6900 1600 6900
Wire Wire Line
1200 7000 1600 7000
Wire Wire Line
1200 7100 1600 7100
Wire Wire Line
1200 7200 1600 7200
Text Label 1300 6600 0 60 ~ 0
FS2
Text Label 1300 6700 0 60 ~ 0
FS1
Text Label 1300 6800 0 60 ~ 0
VCC
Text Label 1300 6900 0 60 ~ 0
D-
Text Label 1300 7000 0 60 ~ 0
D+
Text Label 1300 7100 0 60 ~ 0
GND
Text Label 1300 7200 0 60 ~ 0
FS3
NoConn ~ 3750 2450
Wire Wire Line
3600 2000 3600 3650
Wire Wire Line
3600 3650 3750 3650
NoConn ~ 1950 4500
Wire Bus Line
1100 1900 1100 7100
NoConn ~ 1200 6600
NoConn ~ 1200 6700
NoConn ~ 1200 7200
Connection ~ 2100 3800
Wire Wire Line
1200 4000 2250 4000
Entry Wire Line
1100 3700 1200 3800
Entry Wire Line
1100 3900 1200 4000
Text Label 10350 1500 0 60 ~ 0
VCC
Entry Wire Line
1100 1900 1200 2000
Text Label 1250 2000 0 60 ~ 0
VCC
Entry Wire Line
1100 5500 1200 5600
Connection ~ 1800 5600
Text Label 1300 5600 0 60 ~ 0
GND
Wire Wire Line
9250 5500 10750 5500
Entry Wire Line
10750 5500 10850 5600
Text Label 10350 5500 0 60 ~ 0
GND
Wire Wire Line
9250 1500 10750 1500
Entry Wire Line
10750 1500 10850 1600
Connection ~ 3600 2000
Wire Wire Line
4800 2000 4800 2200
Entry Wire Line
6450 2000 6550 2100
Text Label 6050 2000 0 60 ~ 0
VCC
Connection ~ 5050 5600
Entry Wire Line
6450 5600 6550 5700
Text Label 6050 5600 0 60 ~ 0
GND
NoConn ~ 6450 3850
NoConn ~ 6450 3950
Wire Wire Line
1800 4500 1500 4500
Wire Wire Line
1500 4500 1500 5600
Connection ~ 1500 5600
Entry Wire Line
10750 2500 10850 2600
Entry Wire Line
10750 2100 10850 2200
Text Notes 1000 5300 1 60 ~ 0
Sacrificial USB cable from header to Teensy
Text Notes 7850 5950 0 60 ~ 0
Ribbon cable between Teensy pins and socket
Wire Bus Line
10850 6050 6550 6050
$EndSCHEMATC

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 336 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 KiB

View File

@ -0,0 +1,52 @@
This directory of documentation was copied from https://github.com/wjanssens/tmk_keyboard/tree/master/keyboard/kinesis
and is probably Copyright 2014 Warren Janssens <warren.janssens@gmail.com>
and probably released under GPL v2, which may be recovered at <http://www.gnu.org/licenses/>.
Row configuration
PF0 A
PF1 B
PF2 C
PF3 G 0 = U4, 1 = U5
Column configuration
4y0 4y1 4y2 4y3 4y4 4y5 4y6 4y7 5y0 5y1 5y2 5y3 5y4 5y5 5y6 5y7
r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 r16
PB0 21 c1 f6 f8 f7 5 4 3 2 1 =+
PB1 22 c2 f3 f5 f4 t r e w q TAB
PB2 23 c3 ESC f2 f1 g f d s a CL
PB3 24 c4 f9 f11 f10 b v c x z LS UP DN [{ ]}
PB4 25 c5 f12 SL PS RT LT §± `~ 6 7 8 9 0 -_
PB5 26 c6 PB PGM KPD y u i o p \
PB6 27 c7 LC DL BS RC EN SP h j k l ;: '"
PB7 28 c8 RA PU PD n m ,< .> /? RS
*/
40 pin connector
DL2 1 40 VCC
DR1 2 39 A
DR2 3 38 B
DL1 4 37 C
KPD 5 36 G
PGM 6 35
SCL 7 34
SDA 8 33
RST 9 32 BUZZ
WP 10 31 EA
FS1 11 30 ALE
CLOCK 12 29 PSEN
DATA 13 28 r8
14 27 r7
FS3 15 26 r6
16 25 r5
FS2 17 24 r4
XTAL1 18 23 r3
XTAL2 19 22 r2
GND 20 21 r1
references:
https://github.com/chrisandreae/keyboard-firmware

Binary file not shown.

After

Width:  |  Height:  |  Size: 171 KiB

View File

@ -0,0 +1,46 @@
kinesis-advantage keyboard firmware
======================
This directory is called alvicstep because https://github.com/alvicstep did the heavy work and took the photos in the doc directory.
alvicstep did NOT do anything related to the QMK implementation, so don't bug him/her.
There are other ways of replacing the CPU in the kinesis, this one uses jumper wires from the Teensy to the original DIP socket
## Kinesis specific information
This is a port of https://github.com/alvicstep/tmk_keyboard,
which is a fork of https://github.com/wjanssens/tmk_keyboard,
which is based on work from https://github.com/chrisandreae/keyboard-firmware
If you replace the kinesis CPU as described in the doc folder, then this code should allow you to use QMK.
I've tested with a Teensy 2++, remember to change the CPU if you use a 32u4 instead.
Not yet implemented:
- Kinesis EEProm reading or writing
- Audio - this should be simple if we remove hardcoded pins from audio.h and switch to E7
## Quantum MK Firmware
For the full Quantum feature list, see [the parent readme.md](/doc/readme.md).
## Building
Download or clone the whole firmware and navigate to the keyboards/kinesis-advantage folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file.
Depending on which keymap you would like to use, you will have to compile slightly differently.
### Default
To build with the default keymap, simply run `make`.
### Other Keymaps
Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant keymap files.
To build the firmware binary hex file with a keymap just do `make` with `keymap` option like:
$ make keymap=[default|jack|<name>]
Keymaps follow the format **__keymap.c__** and are stored in folders in the `keymaps` folder, eg `keymaps/my_keymap/`

View File

@ -0,0 +1,10 @@
ifndef QUANTUM_DIR
include ../../../Makefile
endif
# just silently stop, since we need to upload with teensy uploader
upload: build

View File

@ -22,58 +22,22 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x6060
#define DEVICE_VER 0x0001
#define MANUFACTURER You
#define PRODUCT kinesis-advantage
#define DESCRIPTION A custom keyboard
// Mouse
#define MOUSEKEY_DELAY 20
#define MOUSEKEY_DELAY 60
#define MOUSEKEY_INTERVAL 20
#define MOUSEKEY_MAX_SPEED 4
#define MOUSEKEY_TIME_TO_MAX 20
#define MOUSEKEY_TIME_TO_MAX 10
#define MOUSEKEY_WHEEL_MAX_SPEED 1
#define MOUSEKEY_WHEEL_DELTA 1
#define MOUSEKEY_WHEEL_TIME_TO_MAX 1
/* key matrix size */
#define MATRIX_ROWS 16
#define MATRIX_COLS 8
/*
* Keyboard Matrix Assignments
*
* Change this to how you wired your keyboard
* COLS: AVR pins used for columns, left to right
* ROWS: AVR pins used for rows, top to bottom
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
*
*/
//Passed through the port multipler, so 4 pins =16
#define MATRIX_ROW_PINS { F0,F1, F2, F3 }
// May be upside down.
#define MATRIX_COL_PINS { B0,B1, B2, B3, B4, B5, B6, B7 }
#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
// #define BACKLIGHT_PIN B7
// #define BACKLIGHT_BREATHING
// #define BACKLIGHT_LEVELS 3
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCING_DELAY 5
/* define if matrix has ghost (lacks anti-ghosting diodes) */
//#define MATRIX_HAS_GHOST
/* number of backlight levels */
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
@ -171,4 +135,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
#ifdef SUBPROJECT_alvicstep
#include "alvicstep/config.h"
#endif
#ifdef SUBPROJECT_stapelberg
#include "stapelberg/config.h"
#endif
#endif

View File

@ -1,10 +1,6 @@
#include "kinesis.h"
#include "action_layer.h"
#define QWERTY 0 // Base qerty
#define SYMB 1// Symbol layer
// An almost entirely blank keymap. Test layers with the upper right hand key - 1 in normal mode, reset in layer 2.
#define QWERTY 0 // Base qwerty
/****************************************************************************************************
@ -33,7 +29,6 @@
* `--------------------' `--------------------'
*/
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[QWERTY] = KEYMAP(
KC_ESC, KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 ,KC_F7 ,KC_F8,
@ -45,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL,KC_LALT,
KC_HOME,
KC_BSPC,KC_DEL ,KC_END ,
KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_PSCR ,KC_SLCK ,KC_PAUS, KC_FN0, KC_1,
KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_PSCR ,KC_SLCK ,KC_PAUS, KC_FN0, KC_1,
KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS,
KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS,
KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN,KC_QUOT,
@ -54,32 +49,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_RGUI,KC_RCTL,
KC_PGUP,
KC_PGDN,KC_ENTER ,KC_SPC
),
[SYMB] = KEYMAP(
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_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_FN0, RESET,
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_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
)
};
const uint16_t PROGMEM fn_actions[] = {
[0] = ACTION_LAYER_TAP_TOGGLE(SYMB) , // FN1 - Momentary Layer 1 (Symbols)
const uint16_t PROGMEM fn_actions[] = {
};

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 = no # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # 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,8 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
// place overrides here
#endif

View File

@ -0,0 +1,93 @@
#include "kinesis.h"
#define _DVORAK 0 // Base Dvorak layer
#define _MEDIA 1 // Media layer
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_DVORAK] = KEYMAP(
// left hand
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5,
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y,
KC_BSPC, KC_A, KC_O, KC_E, KC_U, KC_I,
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X,
KC_ESC, KC_LBRC, KC_DOWN, KC_UP,
// left thumb
KC_LGUI, KC_LCTL,
KC_LALT,
KC_BSPC, KC_DEL, TG(_MEDIA),
// right hand
KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_FN0, KC_1,
KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL,
KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH,
KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS,
KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT,
KC_LEFT, KC_RIGHT, KC_RBRC, KC_BSLS,
// right thumb
KC_RCTL, KC_RGUI,
KC_RALT,
TG(_MEDIA), KC_ENT, KC_SPC
),
[_MEDIA] = KEYMAP(
// left hand
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,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_BTN4, KC_BTN3, KC_BTN2, KC_BTN1, KC_NO,
KC_NO, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO,
KC_NO, KC_NO, KC_MS_D, KC_MS_U,
// left thumb
KC_NO, KC_NO,
KC_NO,
KC_NO, KC_NO, KC_TRNS,
// right hand
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_POWER,
KC_NO, KC_VOLU, KC_MS_U, KC_VOLD, KC_NO, KC_NO,
KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_NO,
KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_NO, KC_NO,
KC_MS_L, KC_MS_R, KC_NO, KC_NO,
// right thumb
KC_NO, KC_NO,
KC_NO,
KC_TRNS, KC_ENT, KC_NO
)
};
const uint16_t PROGMEM fn_actions[] = {
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
// MACRODOWN only works in this function
switch(id) {
case 0:
if (record->event.pressed) {
register_code(KC_RSFT);
} else {
unregister_code(KC_RSFT);
}
break;
}
return MACRO_NONE;
};
void matrix_init_user(void) {
}
void matrix_scan_user(void) {
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return true;
}
void led_set_user(uint8_t usb_led) {
}

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 = no # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # 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,8 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
// place overrides here
#endif

View File

@ -0,0 +1,331 @@
#include "kinesis.h"
#include "action_layer.h"
#include "mousekey.h"
#define _QWERTY 0 // Base qerty
#define _SYMB 1// Symbol layer
#define _MOUSE 2//
#define _TRANS 3//
/* Macros */
enum {
NONE = 0,
// Diagonal mouse movement
A_MUL,
A_MUR,
A_MDL,
A_MDR,
};
// Why so many gui keys, why not just map all the OS X stuff to buttons? Good question.
/****************************************************************************************************
*
* Keymap: Default Layer in Qwerty
*
* ,-------------------------------------------------------------------------------------------------------------------.
* | ESC | F1 | F2 | F3 | F4 | F5 | F6 | F8 | F9 | F10 | F12 | FN0 | FN1 | FN2 | | bOOT |
* |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------|
* | =+ | 1! | 2@ | 3# | 4$ | 5% | | 6^ | 7& | 8* | 9( | 0) | -_ |
* |--------+------+------+------+------+------| +------+------+------+------+------+--------|
* | Tab | Q | W | E | R | T | | Y | U | I | O | P | \| |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* |MouseFN0| A | S | D | F | G | | H | J | K | L | ;: | '" |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | Shift | Z | X | C | V | B | | N | M | ,. | .> | /? | Shift |
* `--------+------+------+------+------+------- `------+------+------+------+------+--------'
* | ~` | ESC |GUI/L |L1/RT | | L1/UP|GUI/DN| [{ | ]} |
* `---------------------------' `---------------------------'
* ,-------------. ,-------------.
* | CTRL | GUI | | ALT | GUI |
* ,------|------|------| |------+------+------.
* | | | Home | | PgUp | | |
* | BkSp | Del |------| |------|Return| Space|
* | | | End | | PgDn | | |
* `--------------------' `--------------------'
*/
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = KEYMAP(
KC_ESC, KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 ,KC_F7 ,KC_F8,
KC_EQL, KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,
KC_TAB, KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,
KC_FN0 ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,
KC_LSFT,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,
KC_GRAVE, KC_ESC, KC_FN4, KC_FN5,
KC_LCTL,KC_LGUI,
KC_HOME,
KC_BSPC,KC_DEL ,KC_FN0 ,
KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_FN0 ,KC_FN1 ,KC_FN2, KC_NO, RESET,
KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS,
KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS,
KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN,KC_QUOT,
KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_RSFT,
KC_FN6, KC_FN7, KC_LBRC ,KC_RBRC,
KC_RALT,KC_RGUI,
KC_PGUP,
KC_PGDN,KC_ENTER ,KC_SPC
),
/* _SYMBol level
*
* ,-------------------------------------------------------------------------------------------------------------------.
* | | | | | | | | | | | | | | | | bOOT |
* |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------|
* | | | * | # | | | | | | | | | |
* |--------+------+------+------+------+------| +------+------+------+------+------+--------|
* | | / | [ | ] | | | | | | | | | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | | { | } | | | | | | | | | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | = | ( | ) | | | | | | | | | |
* `--------+------+------+------+------+------- `------+------+------+------+------+--------'
* | | |GUI/L |L1/RT | | L1/UP|GUI/DN| { | } |
* `---------------------------' `---------------------------'
* ,-------------. ,-------------.
* | CTRL | GUI | | ALT | GUI |
* ,------|------|------| |------+------+------.
* | | | Home | | PgUp | | |
* | BkSp | Del |------| |------|Mouse1|Mouse2|
* | | | End | | PgDn |LClick|Rclick|
* `--------------------' `--------------------'
*/
[_SYMB] = KEYMAP(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_ASTR, KC_HASH, KC_TRNS, KC_TRNS,
KC_TRNS, KC_SLSH, KC_LBRC, KC_RBRC, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, RSFT(KC_LBRC), RSFT(KC_RBRC), KC_TRNS, KC_TRNS,
KC_TRNS, KC_EQL, RSFT(KC_9), RSFT(KC_0), KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_FN4, KC_FN5,
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_FN0, KC_2,
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_FN6, KC_FN7, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
),
/* Keymap: Movement and function layer
*
* ,-------------------------------------------------------------------------------------------------------------------.
* | Caps | F1 | F2 | F3 | F4 | F5 | F6 | F8 | F9 | F10 | F12 | FN0 | FN1 | FN2 | Tada | bOOT |
* |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------|
* | =+ | ! | @ | # | $ | % | | ^ | & | * | ( | ) |MS Fast |
* |--------+------+------+------+------+------| +------+------+------+------+------+--------|
* | Tab | | | Up | |PgUp | | MwU |MS_UL | MS_U |MS_UR | | Ms Norm|
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* |MouseFN1| C^A | Left | Down |Right | C^E | | | MS_L |Mouse1| MS_R | |MS Slow |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | GuiZ | GUI X| GUI C| GUI_V|PgDown| | MWD | MDown|MS Dwn|MS_DR | ? | |
* `--------+------+------+------+------+------- `------+------+------+------+------+--------'
* | `~ | ESC | | | | | | { | } |
* `---------------------------' `---------------------------'
* ,-------------. ,-------------.
* | CTRL | GUI | | ALT | GUI |
* ,------|------|------| |------+------+------.
* | | | Home | | PgUp | | |
* | BkSp | Del |------| |------|Mouse1|Mouse2|
* | | | End | | PgDn |LClick|Rclick|
* `--------------------' `--------------------'
*/
[_MOUSE] = KEYMAP(
KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_EXLM ,KC_AT, KC_HASH, KC_DLR ,KC_PERC ,
KC_TRNS, KC_NO, KC_NO, KC_UP, KC_NO, KC_PGUP,
KC_FN1, LCTL(KC_A),KC_LEFT, KC_DOWN, KC_RIGHT, LCTL(KC_E),
KC_TRNS, LGUI(KC_Z),LGUI(KC_X),LGUI(KC_C),LGUI(KC_V),KC_PGDN,
KC_TRNS, KC_TRNS, KC_NO, KC_NO,
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_FN0,RESET,
KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_ACL2,
KC_WH_U, M(A_MUL), KC_MS_U, M(A_MUR), KC_NO, KC_ACL1,
KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_ACL0,
KC_WH_D, M(A_MDL), KC_MS_D, M(A_MDR), RSFT(KC_LBRC), RSFT(KC_RBRC),
KC_LCBR, KC_RCBR, KC_NO, KC_NO,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_BTN1, KC_BTN2
),
/* EMPTY
*
* ,-------------------------------------------------------------------------------------------------------------------.
* | | | | | | | | | | | | | | | | bOOT |
* |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------|
* | | | | | | | | | | | | | |
* |--------+------+------+------+------+------| +------+------+------+------+------+--------|
* | | | | | | | | | | | | | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | | | | | | | | | | | | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | | | | | | | | | | | | |
* `--------+------+------+------+------+------- `------+------+------+------+------+--------'
* | | | | | | | | | |
* `---------------------------' `---------------------------'
* ,-------------. ,-------------.
* | Ctrl | Alt | | Gui | Ctrl |
* ,------|------|------| |------+------+------.
* | | | Home | | PgUp | | |
* | BkSp | Del |------| |------|Mouse1|Mouse2|
* | | | End | | PgDn |LClick|Rclick|
* `--------------------' `--------------------'
*/
[_TRANS] = KEYMAP(
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_FN10, KC_FN11, 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_FN0, KC_2,
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_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
),
};
const uint16_t PROGMEM fn_actions[] = {
[0] = ACTION_LAYER_TAP_TOGGLE(_MOUSE) ,
[1] = ACTION_LAYER_TOGGLE(_MOUSE) ,
[2] = ACTION_LAYER_TAP_TOGGLE(_SYMB) ,
[5]= ACTION_LAYER_TAP_KEY(_SYMB,KC_RIGHT),
[4]= ACTION_MODS_TAP_KEY(MOD_LGUI,KC_LEFT),
[6]= ACTION_LAYER_TAP_KEY(_SYMB,KC_UP),
[7]= ACTION_MODS_TAP_KEY(MOD_LGUI,KC_DOWN),
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
// MACRODOWN only works in this function
switch(id) {
case 0:
if (record->event.pressed) {
register_code(KC_RSFT);
} else {
unregister_code(KC_RSFT);
}
break;
// from algernon's ErgoDox EZ layout,
case A_MUL:
if (record->event.pressed) {
mousekey_on(KC_MS_UP);
mousekey_on(KC_MS_LEFT);
} else {
mousekey_off(KC_MS_UP);
mousekey_off(KC_MS_LEFT);
}
mousekey_send();
break;
case A_MUR:
if (record->event.pressed) {
mousekey_on(KC_MS_UP);
mousekey_on(KC_MS_RIGHT);
} else {
mousekey_off(KC_MS_UP);
mousekey_off(KC_MS_RIGHT);
}
mousekey_send();
break;
case A_MDL:
if (record->event.pressed) {
mousekey_on(KC_MS_DOWN);
mousekey_on(KC_MS_LEFT);
} else {
mousekey_off(KC_MS_DOWN);
mousekey_off(KC_MS_LEFT);
}
mousekey_send();
break;
case A_MDR:
if (record->event.pressed) {
mousekey_on(KC_MS_DOWN);
mousekey_on(KC_MS_RIGHT);
} else {
mousekey_off(KC_MS_DOWN);
mousekey_off(KC_MS_RIGHT);
}
mousekey_send();
break;
}
return MACRO_NONE;
};
void matrix_init_user(void) {
}
void matrix_scan_user(void) {
#ifdef ALVICSTEP_CONFIG_H
int8_t layer = biton32(layer_state);
switch (layer) {
case 1:
if (!(host_keyboard_leds() & (1 << USB_LED_CAPS_LOCK))) {
all_led_off();
caps_lock_led_on();
}
break;
case 2:
if (!(host_keyboard_leds() & (1 << USB_LED_SCROLL_LOCK))) {
all_led_off();
scroll_lock_led_on();
}
case 0:
all_led_off();
num_lock_led_on();
break;
default:
break;
}
#endif
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return true;
}
void led_set_user(uint8_t usb_led) {
}

View File

@ -0,0 +1,2 @@
# a programmer friendly keymap for the kinesis-advantage
# not really baked yet.

View File

@ -1,106 +1 @@
#include "kinesis.h"
// begin section origin https://github.com/alvicstep/tmk_keyboard
void all_led_off(void)
{
PORTD = 0b11111111;
}
void all_led_on(void)
{
PORTD = 0b00000000;
}
void num_lock_led_on(void)
{
PORTD = 0b11101111;
}
void caps_lock_led_on(void)
{
PORTD = 0b01111111;
}
void scroll_lock_led_on(void)
{
PORTD = 0b11011111;
}
void keypad_led_on(void)
{
PORTD = 0b10111111;
}
void blink_all_leds(void)
{
all_led_on();
_delay_ms(500);
all_led_off();
_delay_ms(100);
caps_lock_led_on();
_delay_ms(100);
num_lock_led_on();
_delay_ms(100);
scroll_lock_led_on();
_delay_ms(100);
keypad_led_on();
_delay_ms(100);
//back
scroll_lock_led_on();
_delay_ms(100);
num_lock_led_on();
_delay_ms(100);
caps_lock_led_on();
_delay_ms(100);
all_led_off();
}
// End section origin https://github.com/alvicstep/tmk_keyboard
void matrix_init_kb(void) {
blink_all_leds();
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
//Copyright 2014 Warren Janssens <warren.janssens@gmail.com>
uint8_t leds = 0xF0;
if (usb_led & 1 << USB_LED_NUM_LOCK)
leds &= ~0x10;
if (usb_led & 1 << USB_LED_CAPS_LOCK)
leds &= ~0x80;
if (usb_led & 1 << USB_LED_SCROLL_LOCK)
leds &= ~0x20;
PORTD = (PORTD & 0x0F) | leds;
led_set_user(usb_led);
}

View File

@ -1,67 +1,23 @@
#ifndef KINESIS_H
#define KINESIS_H
#ifdef SUBPROJECT_alvicstep
#include "alvicstep.h"
#endif
#ifdef SUBPROJECT_stapelberg
#include "stapelberg.h"
#endif
#include "quantum.h"
// The first section contains all of the arguements
// The second converts the arguments into a two-dimensional array
void all_led_off(void);
void all_led_on(void);
void num_lock_led_on(void);
void caps_lock_led_on(void);
void scroll_lock_led_on(void);
void keypad_led_on(void);
#define KEYMAP( \
k02,k22,k12,k01,k21,k11,k00,k20,k10, \
k80,k70,k60,k50,k40,k30, \
k81,k71,k61,k51,k41,k31, \
k82,k72,k62,k52,k42,k32, \
k83,k73,k63,k53,k43,k33, \
k74,k64,k54,k34, \
k36,k35, \
k55, \
k56,k46,k75, \
k03,k23,k13,k04,k24,k14,k05,k85,k84, \
k94,kA4,kB4,kD4,kE4,kF4, \
k95,kA5,kB5,kD5,kE5,kF5, \
k96,kA6,kB6,kD6,kE6,kF6, \
k97,kA7,kB7,kD7,kE7,kF7, \
k93,kB3,kD3,kE3, \
k47,k66, \
k67, \
k87,k76,k86 \
) { \
{ k00, k01, k02, k03, k04, k05, KC_NO, KC_NO }, \
{ k10, k11, k12, k13, k14, KC_NO, KC_NO, KC_NO }, \
{ k20, k21, k22, k23, k24, KC_NO, KC_NO, KC_NO }, \
{ k30, k31, k32, k33, k34, k35, k36, KC_NO }, \
{ k40, k41, k42, k43, KC_NO, KC_NO, k46, k47 }, \
{ k50, k51, k52, k53, k54, k55, k56, KC_NO }, \
{ k60, k61, k62, k63, k64, KC_NO, k66, k67 }, \
{ k70, k71, k72, k73, k74, k75, k76, KC_NO }, \
{ k80, k81, k82, k83, KC_NO ,KC_NO, k86, k87}, \
{ KC_NO, KC_NO ,KC_NO ,k93, k94, k95, k96, k97}, \
{ KC_NO, KC_NO ,KC_NO ,KC_NO, kA4, kA5, kA6, kA7}, \
{ KC_NO, KC_NO ,KC_NO ,kB3, kB4, kB5, kB6, kB7}, \
{ KC_NO, KC_NO ,KC_NO ,KC_NO, KC_NO, KC_NO, k84, k85}, \
{ KC_NO, KC_NO ,KC_NO ,kD3, kD4, kD5, kD6, kD7}, \
{ KC_NO, KC_NO ,KC_NO ,kE3, kE4, kE5, kE6, kE7}, \
{ KC_NO, KC_NO ,KC_NO ,KC_NO, kF4, kF5, kF6, kF7} \
}
/* 4y0 A 4y1 B 4y2 4y3 D 4y4 E 4y5 F 4y6 G 4y7 H 5y0 I 5y1 J 5y2 K 5y3 L 5y4 M 5y5 N 5y6 O 5y7 P */
/*
0 1 2 3 4 5 6 7 8 9 A B C D E F
A B C D E F G H I J K L M N O P
4y0 4y1 4y2 4y3 4y4 4y5 4y6 4y7 5y0 5y1 5y2 5y3 5y4 5y5 5y6 5y7
r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15
0 PB0 21 c0 f6 f8 f7 5 4 3 2 1 =+
1 PB1 22 c1 f3 f5 f4 t r e w q TAB
2 PB2 23 c2 ESC f2 f1 g f d s a CL
3 PB3 24 c3 f9 f11 f10 b v c x z LS UP DN [{ ]}
4 PB4 25 c4 f12 SL PS RT LT §± `~ 6 7 8 9 0 -_
5 PB5 26 c5 PB PGM KPD LA HM END y u i o p \
6 PB6 27 c6 LC DEL BS RC ENT SP h j k l ;: '"
7 PB7 28 c7 RA PU PD n m ,< .> /? RS
*/
#endif

View File

@ -1,42 +1,12 @@
kinesis-advantage keyboard firmware
======================
# Firmware for the Kinesis advantage keyboard
## Kinesis specific information
This is a port of https://github.com/alvicstep/tmk_keyboard,
which is a fork of https://github.com/wjanssens/tmk_keyboard,
which is based on work from https://github.com/chrisandreae/keyboard-firmware
There are at least two different ways to replace the controller in this keyboard.
If you replace the kinesis CPU as described in the doc folder, then this code should allow you to use QMK.
I've tested with a Teensy 2++, remember to change the CPU if you use a 32u4 instead.
The Stapelberg folder contains the docs and configuration for using the custom controller created by Michael Stapelberg.
Not yet implemented:
- Kinesis EEProm reading or writing
- Audio - this should be simple if we remove hardcoded pins from audio.h and switch to E7
The alvicstep folder contains docs and configuration for directly wiring a Teensy2++ to the existing controller board. This follows the pinouts described in https://github.com/alvicstep/tmk_keyboard, which is where the name comes from.
## Keymaps
Both hardware solutions should work with the same keymaps
## Quantum MK Firmware
For the full Quantum feature list, see [the parent readme.md](/doc/readme.md).
## Building
Download or clone the whole firmware and navigate to the keyboards/kinesis-advantage folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file.
Depending on which keymap you would like to use, you will have to compile slightly differently.
### Default
To build with the default keymap, simply run `make default`.
### Other Keymaps
Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant keymap files.
To build the firmware binary hex file with a keymap just do `make` with a keymap like this:
```
$ make [default|jack|<name>]
```
Keymaps follow the format **__keymap.c__** and are stored in folders in the `keymaps` folder, eg `keymaps/my_keymap/`

View File

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

View File

@ -0,0 +1,50 @@
#ifndef STAPELBERG_CONFIG_H
#define STAPELBERG_CONFIG_H
#include "../config.h"
/* USB Device descriptor parameter */
#define PRODUCT_ID 0x6060
#define DEVICE_VER 0x0002
/* key matrix size */
#define MATRIX_ROWS 15
#define MATRIX_COLS 7
/*
* Keyboard Matrix Assignments
*
* Change this to how you wired your keyboard
* COLS: AVR pins used for columns, left to right
* ROWS: AVR pins used for rows, top to bottom
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
*
*/
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D4, D5, D6, D7, C0, C1, C2, C3, C4, C5, C6 }
#define MATRIX_COL_PINS { B0, B1, B2, B3, B4, B5, B6 }
#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCING_DELAY 5
/* don't know if this should be defined at the board or top level. Assuming board
#define MOUSEKEY_DELAY 100
#define MOUSEKEY_INTERVAL 20
#define MOUSEKEY_MAX_SPEED 3
#define MOUSEKEY_TIME_TO_MAX 10
*/
#define IGNORE_MOD_TAP_INTERRUPT
/* key combination for magic key command */
#define IS_COMMAND() ( \
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
#endif

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

View File

@ -0,0 +1,55 @@
# kinesis_stapelberg keyboard firmware
This folder contains the firmware customization required to run QMK on the custom controller for the Kinesis Advantage created by Michael Stapelberg.
It differs from the `alvicstep keyboard in that the existing QMK Kinesis Advantage project uses the existing controller board provided by Kinesis.
The controller board hardware is described
[here](http://michael.stapelberg.de/Artikel/kinesis_custom_controller)
Mapping the pin assignments was done using the corresponding matrix description provided at this
[link](https://github.com/stapelberg/kinesis-firmware/blob/master/kb_kinesis/config.kspec)
This code makes no attempt to drive the four LEDs provided on the controller board.
## Building the Hardware
If you want to perform this customization, these parts may be helpful.
| Function | Quantity | Vendor | Part Number |
| ------------------------------------------------------ | -------- | ------- | ------------ |
| 13 pin connector for function keys and finger keywells | 4 | Digi-Key | WM14526-ND |
| 10 pin headers for thumb clusters | 4 | Digi-Key | 609-3250-ND |
| 8 pin cable for thumb clusters | 2 | Digi-Key | SAM8928-ND |
| Teensy++ 2.0 | 1 | Digi-Key | 1528-1056-ND |
| 2 pin right angle header for reset | 1 | Digi-Key | 3M9467-ND |
| Reset cables | 2 | Sparkfun | PRT-09140 |
The board and connections are shown here
![](images/controller_board.jpg)
The Teensy mounting detail can be seen here.
I used a socket for prototyping.
![](images/teensy_detail.jpg)
Since the proper mounting of the Teensy board places the reset button in a tight space, I added a 2-pin header to the reset and ground pins on the edge of the board.
Shorting these two pins together will reset the board.
I also put female to male header jumper cables on these so they could be accessed outside the enclosure.
The exterior cables can be seen here.
![](images/exterior_reset.jpg)
## Keymaps
### Default
To build with the default keymap, run `make default` while in the
`kinesis_stapelberg` working directory.
### Dvorak
This keymap contains a dvorak implementation as well as media and symbol layers.
Run `make dvorak` while in the `kinesis_stapelberg` working directory.

View File

@ -0,0 +1,10 @@
ifndef QUANTUM_DIR
include ../../../Makefile
endif
# just silently stop, since we need to upload with teensy uploader
upload: build

View File

@ -0,0 +1,28 @@
#include "stapelberg.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,72 @@
#ifndef KINESIS_STAPELBERG_H
#define KINESIS_STAPELBERG_H
#include "quantum.h"
// This a shortcut to help you visually see your layout.
// The first section contains all of the arguments as on the physical keyboard
// The second converts the arguments into the 2-D scanned array
#define KEYMAP( \
kC0,kD0,kE0,kC1,kD1,kE1,kC2,kD2,kE2, \
k00,k10,k20,k30,k40,k50, \
k01,k11,k21,k31,k41,k51, \
k02,k12,k22,k32,k42,k52, \
k03,k13,k23,k33,k43,k53, \
k14,k24,k34,k54, \
k56,k55, \
k35, \
k36,k46,k25, \
kC3,kD3,kE3,kC4,kD4,kE4,kC5,kE5,kD5, \
k60,k70,k80,k90,kA0,kB0, \
k61,k71,k81,k91,kA1,kB1, \
k62,k72,k82,k92,kA2,kB2, \
k63,k73,k83,k93,kA3,kB3, \
k64,k84,k94,kA4, \
k96,k85, \
k86, \
k66,k75,k65 \
) { \
{ k00, k01, k02, k03, KC_NO, KC_NO, KC_NO }, \
{ k10, k11, k12, k13, k14, KC_NO, KC_NO }, \
{ k20, k21, k22, k23, k24, k25, KC_NO }, \
{ k30, k31, k32, k33, k34, k35, k36 }, \
{ k40, k41, k42, k43, KC_NO, KC_NO, k46 }, \
{ k50, k51, k52, k53, k54, k55, k56 }, \
{ k60, k61, k62, k63, k64, k65, k66 }, \
{ k70, k71, k72, k73, KC_NO, k75, KC_NO }, \
{ k80, k81, k82, k83, k84, k85, k86 }, \
{ k90, k91, k92, k93, k94, KC_NO, k96 }, \
{ kA0, kA1, kA2, kA3, kA4, KC_NO, KC_NO }, \
{ kB0, kB1, kB2, kB3, KC_NO, KC_NO, KC_NO }, \
{ kC0, kC1, kC2, kC3, kC4, kC5, KC_NO }, \
{ kD0, kD1, kD2, kD3, kD4, kD5, KC_NO }, \
{ kE0, kE1, kE2, kE3, kE4, kE5, KC_NO } \
}
/*
This is the Stapelberg matrix as published at
https://github.com/stapelberg/kinesis-firmware/blob/master/kb_kinesis/config.kspec
Along with the pins for each row and column
PB0 PB1 PB2 PB3 PB4 PB5 PB6
kx0 kx1 kx2 kx3 kx4 kx5 kx6
PD0 k0x Row: EQL TAB CAP LSH X2 -- --
PD1 k1x Row: 1 Q A Z BQ -- --
PD2 k2x Row: 2 W S X INS END --
PD3 k3x Row: 3 E D C LFT HOM BAK
PD4 k4x Row: 4 R F V -- -- DEL
PD5 k5x Row: 5 T G B RT LAL LCT
PD6 k6x Row: 6 Y H N UP SPC PGD
PD7 k7x Row: 7 U J M -- RET --
PB0 k8x Row: 8 I K COM DWN RCT PGU
PB1 k9x Row: 9 O L PER LBR -- RAL
PB2 kAx Row: 0 P SEM SLA RBR -- --
PB3 kBx Row: MIN BSL APO RSH X1 -- --
PB4 kCx Row: ESC F3 F6 F9 F12 PAU --
PB5 kDx Row: F1 F4 F7 F10 PRT PRG --
PB6 kEx Row: F2 F5 F8 F11 SLK KEY --
*/
#endif