qmk_firmware/keyboards/kinesis/nguyenvietyen
James Young a03aa301de
Remove Full Bootmagic (#13846)
* disambiguate Bootmagic rules in keymaps

The files edited by this commit were added at a point in time where `BOOTMAGIC_ENABLE = yes` enabled full Bootmagic.

This commit edits the files to specify that full Bootmagic is intended.

* remove BOOTMAGIC_ENABLE=full setting

* unify commented BOOTMAGIC_ENABLE rules in keyboards

Explicitly sets `BOOTMAGIC_ENABLE = no` in keyboards where the rule was commented out.

Command:

```
find keyboards/ -type f -name 'rules.mk' -and -not -path '*/keymaps/*' -exec sed -i -e 's;#[ \t]*\(BOOTMAGIC_ENABLE\)[ \t=]\+\([a-zA-Z]\+\).*;\1 = no       # Virtual DIP switch configuration;g' {} +
```

* remove commented Bootmagic rules from keymap/user level

Command:

```
find keyboards/ layouts/ users/ -type f -name 'rules.mk' -exec sed -i -e '/#.*\(BOOTMAGIC_ENABLE\)[ \t=]\+\([a-z]\+\).*/d' {} +
```

* update keyboard BOOTMAGIC_ENABLE rule formatting

Sets the formatting of BOOTMAGIC_ENABLE rules to `BOOTMAGIC_ENABLE = [value]`, without the inline comments (which will be replaced later).

Command:

```
find keyboards/ -type f -name 'rules.mk' -and -not -path '*/keymaps/*' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE\)[ \t=]\+\([a-z]\+\).*;\1 = \2;g' '{}' +
```

* update keyboards' BOOTMAGIC_ENABLE settings

Updates keyboard `rules.mk` files to use `BOOTMAGIC_ENABLE = lite` where `BOOTMAGIC_ENABLE = full` was being used.

Command:

```
find keyboards/ -type f -name 'rules.mk' -and -not -path '*/keymaps/*' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE = \)full;\1lite;g' '{}' +
```

* update keymap/user BOOTMAGIC_ENABLE settings

Updates keymap/user `rules.mk` files to use `BOOTMAGIC_ENABLE = lite` where `BOOTMAGIC_ENABLE = full` was being used.

Commands:

```
find keyboards/ -type f -name 'rules.mk' -and -path '*/keymaps/*' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE[ \t=]\+\)full;\1lite;g' '{}' +
find layouts/community/ users/ -type f -name 'rules.mk' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE[ \t=]\+\)full;\1lite;g' '{}' +
```

* remove and replace inline comments in keyboards and keymap/user files

Removes and replaces the inline comments, which have been updated to read `Enable Bootmagic Lite`.

Commands:

```
find keyboards/ -type f -name 'rules.mk' -and -path '*/keymaps/*' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE\)[ \t=]\+\([a-z]\+\).*;\1 = \2;g' '{}' +
find layouts/community/ users/ -type f -name 'rules.mk' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE\)[ \t=]\+\([a-z]\+\).*;\1 = \2;g' '{}' +
find keyboards/ layouts/community/ users/ -type f -name 'rules.mk' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE = lite\);\1     # Enable Bootmagic Lite;g' '{}' +
find keyboards/ layouts/community/ users/ -type f -name 'rules.mk' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE = yes\);\1      # Enable Bootmagic Lite;g' '{}' +
find keyboards/ layouts/community/ users/ -type f -name 'rules.mk' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE = no\);\1       # Enable Bootmagic Lite;g' '{}' +
```

* rename improperly named makefiles

Some files intended to be used as makefiles had improper names causing them to not be used as intended when building.

This commit corrects the filenames of the affected files.

* update renamed file with new rule formatting

* update QMK's template files

Updates QMK's `rules.mk` templates to use the new inline comment.

* update QMK Docs

- remove documentation of full Bootmagic
- update links to Bootmagic Lite doc
- add doc for Magic Keycodes

* rules.mk patch for coarse/ixora and coarse/vinta
2021-08-06 23:59:56 -07:00
..
config.h first pass: matrix consistency improvements (#13471) 2021-07-11 08:41:57 -07:00
matrix.c [Keyboard] Kinesis + Pro Micro (#9944) 2020-08-16 18:37:42 -07:00
nguyenvietyen.c Refactor to use led config - Part 6 (#12115) 2021-03-10 22:48:18 +00:00
nguyenvietyen.h
readme.md
rules.mk Remove Full Bootmagic (#13846) 2021-08-06 23:59:56 -07:00

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'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)

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)

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.