keychron_qmk_firmware/keyboards/ymd96
Kenneth Aloysius f2bc70a264 ps2avrgb: fix incorrect avr ports specified (for numlock and capslock LEDs) (#3453)
* Add M6-A keymap

* Update XD60 keymap

* Update XD60 keymap readme

* Update JJ40 and Let's Split keymaps

* Add readme for M6-A

* Fix typo, update JJ40 README

* Update jj40 readme

* Cleanup jj40 keymap

* Revert Let's Split QWERTY layer to default before #2010

* Update numpad layers

* Fix: Let's Split keymap getting stuck mods due to having keycodes assigned on the Raise layer

* Keep ASCII art consistent with keymap

* Staryu: initial port

* Add personal keymap

* Added and updated READMEs

* Fix: default keymap for staryu

* Rudimentary backlight support.

* Enabled mousekeys for default keymap

* use QMK_KEYBOARD_H and LAYOUT

* Update readme.md for NIU mini: flash using avrdude

* Fix missing linebreaks for Staryu README

* Update readme.md

* Update PS2AVRGB boards with new matrix.c

* Update canoe matrix.c; untested

* Fix canoe.c for building (needs matrix_scan_user and matrix_init_user)

* Add personal Iris keymap

* Update keymap

* Update keymap

* Update keymap, disable backlighting and underglow

* Move PrintScreen button

* Add README

* Update personal keymaps

* Add INS key

* Limit USB max power consumption, change Fn to MENU

* Remove Numpad layer (easy to accidentally toggle)

* Fix backlighting for ps2avrgb

* Update comments to refer to actual pin naming

* Possible fix for xyverz ortho keymap: define RGBLED_NUM

* Make led_set_user in backlight.c overridable

* Add changes to address points raised in code review, untested (don't have build env right now)
2018-07-23 12:11:56 -07:00
..
keymaps YMD96 complete QMK port (#3105) 2018-06-01 12:07:49 -07:00
tools YMD96 complete QMK port (#3105) 2018-06-01 12:07:49 -07:00
backlight_custom.h YMD96 complete QMK port (#3105) 2018-06-01 12:07:49 -07:00
backlight.c ps2avrgb: fix incorrect avr ports specified (for numlock and capslock LEDs) (#3453) 2018-07-23 12:11:56 -07:00
breathing_custom.h YMD96 complete QMK port (#3105) 2018-06-01 12:07:49 -07:00
config.h YMD96 complete QMK port (#3105) 2018-06-01 12:07:49 -07:00
i2c.c
i2c.h
matrix.c YMD96 complete QMK port (#3105) 2018-06-01 12:07:49 -07:00
program
README.md YMD96 complete QMK port (#3105) 2018-06-01 12:07:49 -07:00
rules.mk YMD96 complete QMK port (#3105) 2018-06-01 12:07:49 -07:00
usbconfig.h YMD96 complete QMK port (#3105) 2018-06-01 12:07:49 -07:00
ymd96.c YMD96 complete QMK port (#3105) 2018-06-01 12:07:49 -07:00
ymd96.h YMD96 complete QMK port (#3105) 2018-06-01 12:07:49 -07:00

YMD96

This is a port of the QMK firmware for boards that are based on the ps2avrGB firmware, like the ps2avrGB keyboard, for use on the YMD96.

Note that this is a complete replacement for the firmware, so you won't be using Bootmapper Client to change any keyboard settings, since not all the USB report options are supported.

Here is the default layout, it is fairly simple with a few function keys: YMD96 Layout
If you have a different layout (since there were many options during the GB), please feel free to contribute!

Keyboard maintainer: Andrew
Hardware Supported: YMD96 with the ATmega32a chip.
Hardware Availability: The GB was run June 2017, in this thread. The vendor has stated that they plan on selling more rounds.

A very big thanks to @krusli for making the RGB underglow, Backlight, CapsLock and NumLock LEDs working correctly.

Finding your specific matrix

This firmware was modified from ps2avrGB, also found on this qmk repo, to work with the YMD96 keyboard. However, I only have one board to test with, which might have a different layout than yours. To get qmk working with your specific layout, you'll need to follow these steps:

  1. Follow the guide here to get Bootmapper Client setup. While you won't need it after you get qmk working, you need to use Bootmapper Client to figure out how the matrix is laid out. In the end, here's an example of what it should look like: BMC
  2. Next is the tricky part: editing the ymd96.h file. Here, you have to figure out how the keys are laid out physically and assign each key the right keycode. Study how the codes in brackets correspond to the BMC columns. Consider the first column: K000 corresponds to Col 1 Row 1, and K100 corresponds to Col 2 Row 1. K111 = Col 2 Row 10.
  3. First, you need to define the codes that are actually used in the brackets. KC_NO is used whenever a cell isn't used, such as col 1 row 4-6 in BMC.
  4. Once you have all those set up, you need to put the keycodes where they physically are in the KEYMAP( area. Since the columns aren't all uniform (e.g. col2row6 is B, but col2row7 is the numpad 1), the keycodes will be all over the place.
  5. Finally! Hard part is pretty much done. Next, you simply have to edit the keymap.c file to actually assign the keycodes to do something. You essentially replace the keycodes (e.g. K000) with actual codes that do something, e.g. KC_ENTER. Modify these to your hearts content, and of course this is where all the extra functionality of QMK shines. I won't get into it here, but hopefully you've made it this far!

Installing and Building

Since the YMD96 uses an ATmega32a chip instead of the 32u4, you need to download HIDBootFlash v.1.0 for Windows. If anyone knows of a Linux/Mac bootflasher that works, edit this readme!
On Windows, I use MINGw to compile the keymaps. On Linux, you can simply use the terminal.

Once you have those two pieces of software: Build the keyboard with

$ make ymd96-default  

If you make your own layout, change the default word to whatever your layout is.

And flash the compiled hex file with HIDBootFlash. Simply put the board in flashing mode by plugging it in while holding control, and click find device. Then you can specify the .hex file and flash it to the device.

Troubleshooting

From my experience, it's really hard to brick these boards. But these tricks have been useful when it got stuck in a weird scenario.

  1. Try plugging the board in while pressing L_Ctrl. This will force it to boot only the bootloader without loading the firmware. Once this is done, just reflash the board with the original firmware.
  2. Sometimes USB hubs can act weird, so try connecting the board directly to your computer or plugging/unplugging the USB hub.

Lastly, if you still need help, you can add me on Discord and I'll be happy to help.