qmk-firmware/keyboards/handwired/unicomp_mini_m
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
..
keymaps/default
config.h
info.json
readme.md
rules.mk
unicomp_mini_m.c
unicomp_mini_m.h

Unicomp Mini M with Teensy2.0++ controller & QMK Firmware

Overview

Goals

The goal of this project was to replace the stock control board of the Unicomp Mini M with a programmable one. The Mini M was released by Unicomp in Q1 of 2021 and is a re-release of The IBM Model M Space Saving Keyboard (SSK) with some enhancements.

This guide strives to achieve the following:

  • Make completely reversable changes, or in other words, no permanent modifications to the Mini M
  • Allow full programmability of the Mini M via QMK
  • Be able to flash firmware without having to take the board apart to hit the reset button
  • Create a default keymap that works just like the stock keymap shipped from Unicomp, including the toggle-able number pad
  • Support all LEDs as normal

My guide will go a few steps further:

  • Convert the wired connection from USB-A to USB-C
  • Install a potentiometer to dim the LEDs if desired

Credits

The following resources were instrumental to the success of this project:

  • Model M 101/102 write-up located in qmk_firmware/keyboards/converter/modelm
  • Model M Subreddit
  • Model M Discord

Hardware

Parts

For a working Mini M with QMK without LEDs working, the following parts are necessary:

  • 1 Adafruit Perma-Proto Full Sized Breadboard. Luckily, this board is a perfect fit for the Mini M case!
  • 1 Teensy2.0++, with headers soldered on if you can find it
    • 2 20-row x 1 column headers, if you can't find a Teensy with headers already soldered on
  • 2 16-pin Ribbon connectors, PCB mount
  • Hookup wire. I used 30AWG wire and while it worked, I should have used 1 gauge (or more) thicker
  • A panel mount male USB-B to female USB-C extender

To get the Mini M working with LEDs, you will need:

  • 3 1kOhm through-hole resistors
Tools

The following were absolutely critical for the project:

  • Soldering iron, preferably one with a narrow tip for small connections
  • Drill, preferably a hand-held rotary tool (such as a Dremel)
  • Wire strippers/cutters
  • A sharp knife

Optional, but worth having around:

  • Helping-hands, PCB holder, preferably both
  • Multi-meter for testing continuity of your connections
  • Hot-glue gun for mounting the USB extender to the Perma-Proto

Assembly

Solder Teensy to the Perma-Proto

  1. Solder headers to Teensy
  2. Solder headers to Perma-Proto

Solder ribbon connectors

  • Rows on the Perma-Proto that line up with membrane ribbons
  • Trim excess under board
  • Test continuity

Solder in hookup wires

  • Ribbon connector used for the right ribbon will need hookup wire to establish connections to the Teensy
  • 12 required, 16 if you want full functionality

Optional: Solder in resistors

Caveat: D6 pin on the Teensy

There are a few ways to mount the Teensy to the Perma-Proto board. I chose to connect my 16 pin ribbon connector to the Teensy pins starting at C7 and ending at D2. If you do this, beware that pin D6 will not work for the purposes of this project. It is possible to modify it to make it so, but that is beyond the scope of this guide.

Bypassing D6 is necessary if you mount your ribbon connector as I have just described. Luckily, it is a simple process! First, with a sharp knife, sever the connection between your ribbon connector pin that is connected to Teensy D6 pin. I would recommend doing this at the closest possible point to the Teensy on the underside of the Perma-Proto board. Once that is done, use a remaining point on the Perma-Proto bus for that ribbon connection (that was previously connected to D6) to add a jumper wire connected to pin B7. If you are using the firmware files provided in this repository, everything is already set for this configuration.

Testing

Software

Build firmware

See qmk documentation on getting your build environment working.

Compile the Mini M firmware files with the default keymap. It allows for the Mini M to be used with the same functionality as shipped from the manufacturer.

$ qmk compile -kb unicomp/mini_m -km default

While plugged in, press the reset button on your Teensy and then:

$ qmk flash -kb unicomp/mini_m -km default

If everything works to this point, congratulations! You now have a programmable Mini M. If you are using the default keymap, you can reset your Teensy by pressing Shift+Pause together, eliminating the need to take apart the case in order to do so.

Keymaps

To build your own keymap, create a new directory in keyboards/unicomp/mini_m/keymaps/<your name>, copy the files from keyboards/unicomp/mini_m/default into your new directory, and edit them as you wish. When you are ready to flash your new keymap to the Mini M, the command will be qmk flash -kb unicomp/mini_m -kb <your name>.