keychron_qmk_firmware/users/bbaserdem
2022-09-26 14:40:15 +10:00
..
keymap-bitmaps
.gitignore
bb-audio.c
bb-audio.h
bb-backlight.c
bb-backlight.h
bb-encoder.c
bb-encoder.h
bb-macro.c
bb-macro.h
bb-oled-extra.c
bb-oled-extra.h
bb-oled.c
bb-oled.h
bb-rgb.c
bb-rgb.h
bb-underglow.c
bb-underglow.h
bbaserdem.c Merge remote-tracking branch 'upstream/master' into develop 2022-07-02 21:13:06 +10:00
bbaserdem.h
config.h Change {LED,RGB}_DISABLE_TIMEOUT to {LED,RGB}_MATRIX_TIMEOUT (#18415) 2022-09-26 14:40:15 +10:00
readme.md
rules.mk

BBASERDEM userspace code for qmk

My userspace code for my various keyboards; available here.

Builds

These are my keyboard builds and info, it allows me to plan out my builds.

Planck SERVER

  • Board: kprepublic/jj40
  • Microcontroller: Embedded
  • Layout: ortho_4x12
  • Functionality: Underglow RGB Lighting, LED diode lighting.
  • Case: Clear Acrylic Top and Bottow, with Frosted Acrylic Diffuser (Smashing Acrylics)
  • Switches: BOX Navy
  • Keycaps: Datamancer Tall Deco Typewriter Keycaps

Just a decorative planck replacement (for my rev4 PCB that died.)

Planck Light

  • Board: planck/light
  • Microcontroller: Embedded
  • Layout: ortho_4x12
  • Functionality: Per-key RGB Lighting, Audio.
  • Case: Clear Acrylic Top and Bottow, with Frosted Acrylic Diffuser (Smashing Acrylics)
  • Switches: BOX Navy
  • Keycaps: Datamancer Tall Deco Typewriter Keycaps

Just a decorative planck replacement (for my rev4 PCB that died.)

Corne ARM

  • Board: crkbd/rev1
  • Microcontroller: Proton C (x2)
  • Layout: split_3x6_3
  • Functionality: OLED, Audio, Per-key RGB Lighting, Rotary Encoder (x2)
  • Case: IMK Corne Case v2 Polycarbonate
  • Switches: Healios V2
  • Keycaps: POM Jelly

PCB is actually Proton-C Compatible crkbd PCB.

Corne Lite

  • Board: crkbd/rev1
  • Microcontroller: Pro Micro (x2)
  • Layout: split_3x5_3
  • Functionality: Per-key RGB Lighting, OLED (No firmware space)
  • Case: Custom
  • Switches: Choc Low Burnt Orange
  • Keycaps: Scooped Choc Keycaps

Maybe try adding a trackpad for this, as detailed here.

Kyria

  • Board: splitkb/kyria/rev1
  • Microcontroller: Pro Micro (x2)
  • Layout: split_3x6_6
  • Functionality: OLED, Underglow RGB Lighting (No firmware space), Rotary Encoder (x2)
  • Case: Matte Black Acrylic High-Profile case
  • Switches: Gateron Ink Silent Black
  • Keycaps: Oblotzky SA Oblivion

Main driver at work currently; love the switches and the board layout.

Firmware building

Archlinux

On archlinux, the package arm-none-eabi-gcc is too new. To fix; add to the environment CFLAGS="-Wno-error=deprecated" to compilation commands. Also; says to run avr-gcc version 8.4.0 for smaller firmware, but I find that it only saves a few bytes.

Bootloader

Needed to type this out from the QMK website. If I want to flash a new bootloader for a machine; here are steps;

  1. Flash the util/pro_micro_ISP_B6_10.hex to a spare promicro using; avrdude -p atmega32u4 -P "$(ls /dev/ttyACM*)" -c avr109 -D -U flash:w:pro_micro_ISP_B6_10.hex
  2. Wire the pins; (first is the ISP pro micro; second is the target)
Pro Micro 10 (B6)  <-> Keyboard RESET
Pro Micro 15 (B1)  <-> Keyboard B1 (SCLK)
Pro Micro 16 (B2)  <-> Keyboard B2 (MOSI)
Pro Micro 14 (B3)  <-> Keyboard B3 (MISO)
Pro Micro VCC      <-> Keyboard VCC
Pro Micro GND      <-> Keyboard GND

I do have this on hand I believe; from massdrop's planck light firmware updater. 3. Connect the flashed pro micro to my computer and run avrdude -c avrisp -P "$(ls /dev/ttyACM*)" -p atmega32u4 -U flash:w:bootloader_atmega32u4_1.0.0.hex:i -U lfuse:w:0x5E:m -U hfuse:w:0xD9:m -U efuse:w:0xC3:m

The avrisp here refers to the firmware on the ISP flasher pro micro. The atmega32u4 refers to the CPU used in the respective breakout boards. The avrdude command interacts with catalina bootloader. The shell call after the -P flag auto finds the port that the pro micro connects to. The last few arguments are some jumpers apparently.

Features

My userspace has a lot of shared code between different keyboards. These files are prefixed with sbp- to remove any naming clash.

  • bb-audio: Code dealing with audio playback using onboard sound.
  • bb-encoder: Rotary encoder sutff.
  • bb-macro: My custom keycodes; macros, tap dances, etc.
  • bb-oled: Controls OLED displays. For higher memory; there is also bb-oled-extra.
  • bb-rgb: Controls per-key RGB LED matrix stuff, and layer indication. Uses RGB_MATRIX.
  • bb-underglaw: Controls RGB LED strip, and layer indication. Uses RGBLIGHT.

Layout

My personal layout is mostly inspired by the Miryoku layout. There are some changes to make it friendlier to international keyboards. My board is compatible with software implementation of Dvorak and Turkish F.

Base

Base layer uses tap-hold functionality to have access to modifiers. The modifiers are mirrored on each half of the layout; as to make those modifiers accessible to the keys that overlap them. Besides the Alt key; each side has the proper L/R version of the modifier. Since Right Alt key functions as AltGr key; both the L and R versions are available on each side.