forked from forks/qmk_firmware
110 lines
4.8 KiB
Markdown
110 lines
4.8 KiB
Markdown
|
# Viet's Kinesis + Pro Micro
|
||
|
|
||
|
July 2020
|
||
|
|
||
|
This work is inspired by `alvicstep`'s solution. Instead of hooking up the Kinesis to a Teensy 2, this one hooks it up to a Pro Micro.
|
||
|
|
||
|
## Kinesis Board Layout
|
||
|
The following is a reinterpretation of [@chrisandreae](https://github.com/chrisandreae/keyboard-firmware/blob/public/hardware/kinesis.h)'s work.
|
||
|
|
||
|
### Used Pins
|
||
|
* 8 columns mapped to output pins 21 - 28
|
||
|
* 16 rows mapped to 4 input pins: pin 39 - 36. Rows are traversed by iterating and setting 16 values from 0000 to 1111.
|
||
|
* 4 leds (e.g. capslock) mapped to input pin 1 - 4
|
||
|
* keypad key mapped to pin 5
|
||
|
* program key mapped to pin 6
|
||
|
* `VCC` mapped to pin 40
|
||
|
|
||
|
### Matrix Configuration
|
||
|
The matrix configuration of the columns and rows on my Advantage is as follows:
|
||
|
|
||
|
| | row 0 | row 1 | row 2 | row 3 | row 4 | row 5 | row 6 | row 7 | row 8 | row 9 | row A | row B | row C | row D | row E | row F |
|
||
|
| ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- |
|
||
|
| col0 | F6 | F8 | F7 | 5% | 4$ | 3# | 2@ | 1! | =+ | | | | | | | |
|
||
|
| col1 | F3 | F5 | F4 | T | R | E | W | Q | Tab | | | | | | | |
|
||
|
| col2 | Esc | F2 | F1 | G | F | D | S | A | CapsLk | | | | | | | |
|
||
|
| col3 | F9 | F11 | F10 | B | V | C | X | Z | LShift | Up | | Down | | [{ | ]} | |
|
||
|
| col4 | F12 | ScrLk | PrtSc | Right | | Left | Insert | ~ | | 6^ | 7& | 8* | | 9( | 0) | -_ |
|
||
|
| col5 | Pause | | | LAlt | | Home | | End | | Y | U | I | | O | P | `\|` |
|
||
|
| col6 | | | | LCtrl | Delete | Bksp | RCtrl | Enter | Space | H | J | K | | L | ;: | '" |
|
||
|
| col7 | | | | | RGUI | | PageUp | | PageDn | N | M | ,< | | .> | /? | RShift |
|
||
|
|
||
|
(this is a modified copy from [@alvicstep](https://github.com/qmk/qmk_firmware/blob/master/keyboards/kinesis/alvicstep/alvicstep.h))
|
||
|
|
||
|
In the code, keypad and program keys are mapped respectively to col0 and col1 of row C, the 12th row.
|
||
|
|
||
|
### Omitted Pins
|
||
|
There are pins that we currently omit:
|
||
|
* serial eeprom clock line mapped to pin 7
|
||
|
* serial eeprom data line mapped to pin 8
|
||
|
* EEPROM write protect mapped to pin 10.
|
||
|
* foot switch 1 mapped to pin 11
|
||
|
* PS/2 clock mapped to pin 12
|
||
|
* PS/2 data mapped to pin 13
|
||
|
* foot switch 2 mapped to pin 17
|
||
|
* foot switch 3 mapped to pin 15
|
||
|
* audio mapped to pin 32
|
||
|
|
||
|
### DIP Socket
|
||
|
Here's an ASCII drawing of the 40 pin DIP socket.
|
||
|
```
|
||
|
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
|
||
|
```
|
||
|
(this is copied from [@wjanssens](https://raw.githubusercontent.com/wjanssens/tmk_keyboard/master/keyboard/kinesis/doc/readme.txt))
|
||
|
|
||
|
## Pin Mapping to Pro Micro
|
||
|
|
||
|
The following table is ordered by physical Arduino pin order.
|
||
|
|
||
|
| Arduino | Kinesis | Meaning |
|
||
|
| ------- | ------- | ------- |
|
||
|
| D3 | 36 | G |
|
||
|
| D2 | 37 | C |
|
||
|
| GND | | |
|
||
|
| GND | | |
|
||
|
| D1 | 38 | B |
|
||
|
| D0 | 39 | A |
|
||
|
| D4 | 1 | DL2 |
|
||
|
| C6 | 2 | DR1 |
|
||
|
| D7 | 3 | DR2 |
|
||
|
| E6 | 4 | DL1 |
|
||
|
| B4 | 5 | KPD |
|
||
|
| B5 | 6 | PGM |
|
||
|
| B6 | 21 | r1 |
|
||
|
| B2 | 22 | r2 |
|
||
|
| B3 | 23 | r3 |
|
||
|
| B1 | 24 | r4 |
|
||
|
| F7 | 25 | r5 |
|
||
|
| F6 | 26 | r6 |
|
||
|
| F5 | 27 | r7 |
|
||
|
| F4 | 28 | r8 |
|
||
|
| VCC | 40 | |
|
||
|
| RESET | | |
|
||
|
| GND | 20 | |
|
||
|
| RAW | | |
|
||
|
|
||
|
## Notes
|
||
|
|
||
|
* The rows are multiplexed. Instead of reading them out, one sets the row value and corresponding column values are returned through r1-r8.
|
||
|
* On my keyboard, the keypad and program key have dedicated pins. Since row 12 had no mapping in the physical matrix, there's a code override injects the keypad and program pins to the first two bits in the matrix.
|
||
|
* I've experimented with debouncing approaches. The current setting delivers a snappier feeling than Kinesis's factory default for me.
|