Skip to content

kovdavid/dalsik

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DALSIK

Davs Let's Split Keyboard firmware.

1. Motivation

I made this as a fun learning project. The code is working and I've been using it on my keyboard since 2017. You can think of this as "QMK lite". As the code is written for only a single keyboard and MCU, it should be easier to understand as QMK.

The code is designed for the Let's Split keyboard created by wootpatoot.

2. Inspired by

3. Prerequisites

The project can be compiled on Linux, if you have to following packages installed:

  • Arduino (for the HID and Serial libraries and USB implementation)
  • avr-gcc (for compilation)
  • pyserial (for resetting the MCU via USB)
  • avrdude (for flashing)

On Arch linux you can run:

$ pacman -S arduino avr-gcc avrdude python-pyserial

4. Keymap

You need to specify the location of you keymap file (see sample_keymap/sample_keymap.cpp) via the DALSIK_KEYMAP env variable. I recommend using direnv for this:

$ cd ~/where/the/dalsik/project/is/cloned
$ cat .envrc
export DALSIK_KEYMAP=/path/to/my/keymap/file.cpp

5. Compilation & flashing

# Clean the previous build artifacts (optional)
$ make clean
# Compile the project
$ make verify
# Run the tests
$ make test
# Flash the MCU
$ make upload

6. Initial flashing

The project assumes that one side of the split keyboard is always on the left and the other is on the right. The sidedness is encoded in EEPROM. To initially set the sidedness of the keyboards, uncomment the corresponding #define SET_KEYBOARD line in src/dalsik/dalsik.h and do a clean verify upload flashing on both sides.

7. Master election

Master election is automatic based on the USB connection. When changing the keymap, only the master side needs to be reflashed. Should the USB connector break on the master keyboard, you can connect the USB cable to the other side, reflash it with your current keymap (if necessary) and it will work.