documents/keyboards/qmk.md

QMK

Setup Linux

  • Install make
    • For archlinux sudo pacman -Sy base-devel
  • git clone git@github.com:EnotionZ/qmk_firmware.git && git checkout dominick && git submodule init && git submodule update
  • Install avrdude (caterina)
    • For archlinux sudo pacman -Sy avrdude
  • make kb:km:avrdude
    • example: sudo make libra_mini:dominick:avrdude

Setup Mac

  1. Get Apps
    1. brew install --cask qmk-toolbox Download Manually
    2. brew tap osx-cross/arm
    3. brew tap osx-cross/avr
    4. brew install qmk/qmk/qmk
  2. Setup Environment
    1. git clone git@github.com:EnotionZ/qmk_firmware.git
    2. git checkout dominick - track origin/dominick branch
    3. git submodule init
    4. git remote add upstream https://github.com/qmk/qmk_firmware.git
    5. Commit to origin/dominick
    6. Fetch & merge from upstream/master remote
  3. Compile
  4. qmk setup -H /Users/dominick/Work/qmk_firmware 2. qmk compile -kb gmmk/pro/rev1/ansi -km dominick 3. make gmmk/pro/rev1/ansi:dominick 4. make crkbd:dominick 5. qmk compile -kb handwired/dactyl_manuform/5x6 -km dominick 6. If getting stale errors, run qmk clean first

Create shared.h (per-keymap)

Place this in each keymap directory (e.g. keyboards/handwired/dactyl_manuform/5x6/keymaps/dominick/shared.h). The userspace (users/dominick/) approach doesn't resolve as an include path on this fork.

#define CPWDME "152434Dd"
#define CPWDAA "152434Qq"
#define CPWD1P "152434Aa!!"
#define CPWDEV "152434Dd"

#define EMAIL_STR "dominick.pham@gmail.com"

QMK Pin Maps

              ._|~~|_.
    D3 [Tx0] -|      |- [RAW]
    D2 [Rx1] -|      |- [GND]
       [GND] -|      |- [RST]
       [GND] -|Pro   |- [Vcc]
SDA/D1 [  2] -|Micro |- [ A3] F4
SCL/D0 [  3] -|      |- [ A2] F5
    D4 [  4] -|      |- [ A1] F6
    C6 [  5] -|      |- [ A0] F7
    D7 [  6] -|      |- [ 15] B1
    E6 [  7] -|      |- [ 14] B3
    B4 [  8] -|      |- [ 16] B2
    B5 [  9] -|______|- [ 10] B6

TRRS Wiring

https://github.com/qmk/qmk_firmware/blob/master/docs/feature_split_keyboard.md#i2c-wiring

  1. Tip = Gnd
  2. Ring = D0
  3. Ring = D1
  4. Sleeve = Vcc

Tap Dance

enum tapdance_keycodes {
  TD_ALT_GUI,
  TD_GUI_ALT,
};

qk_tap_dance_action_t tap_dance_actions[] = {
  [TD_ALT_GUI]  = ACTION_TAP_DANCE_DOUBLE(KC_RALT, KC_RGUI),
  [TD_GUI_ALT]  = ACTION_TAP_DANCE_DOUBLE(KC_LGUI, KC_LALT),
};

#define TD_ALTG TD(TD_ALT_GUI)
#define TD_GUIA TD(TD_GUI_ALT)

LAYOUT(TD_ALTG)