Merge pull request #69 from KMKfw/topic-circuitpy-over-msc

Address #52 almost entirely
This commit is contained in:
Josh Klar 2018-10-16 00:23:41 -07:00 committed by GitHub
commit 10ca6816a2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 107 additions and 249 deletions

View File

@ -16,38 +16,6 @@ jobs:
- run: make test - run: make test
build_feather_m4_express:
docker:
- image: 'kmkfw/base'
environment:
KMK_TEST: 1
PIPENV_VENV_IN_PROJECT: 1
steps:
- checkout
- restore_cache:
keys:
- v2-kmk-venv-{{ checksum "Pipfile.lock" }}
- run: make SKIP_KEYMAP_VALIDATION=1 USER_KEYMAP=user_keymaps/noop.py build-feather-m4-express
build_itsybitsy_m4_express:
docker:
- image: 'kmkfw/base'
environment:
KMK_TEST: 1
PIPENV_VENV_IN_PROJECT: 1
steps:
- checkout
- restore_cache:
keys:
- v2-kmk-venv-{{ checksum "Pipfile.lock" }}
- run: make SKIP_KEYMAP_VALIDATION=1 USER_KEYMAP=user_keymaps/noop.py build-itsybitsy-m4-express
build_pyboard: build_pyboard:
docker: docker:
- image: 'kmkfw/base' - image: 'kmkfw/base'
@ -74,22 +42,6 @@ workflows:
only: /.*/ only: /.*/
tags: tags:
only: /.*/ only: /.*/
- build_feather_m4_express:
filters:
branches:
only: /.*/
tags:
only: /.*/
requires:
- test
- build_itsybitsy_m4_express:
filters:
branches:
only: /.*/
tags:
only: /.*/
requires:
- test
- build_pyboard: - build_pyboard:
filters: filters:
branches: branches:

4
.gitmodules vendored
View File

@ -1,7 +1,3 @@
[submodule "circuitpython"]
path = vendor/circuitpython
url = https://github.com/kmkfw/circuitpython.git
ignore = dirty
[submodule "upy-lib"] [submodule "upy-lib"]
path = vendor/upy-lib path = vendor/upy-lib
url = https://github.com/kmkfw/micropython-lib.git url = https://github.com/kmkfw/micropython-lib.git

210
Makefile
View File

@ -1,13 +1,11 @@
.SILENT: .SILENT:
.PHONY: \ .PHONY: \
build-feather \
circuitpy-deps \
circuitpy-freeze-kmk-nrf \
devdeps \ devdeps \
freeze-nrf-build-deps \
lint lint
.DEFAULT: all
DOCKER_BASE_TAG ?= latest DOCKER_BASE_TAG ?= latest
DOCKER_TAG ?= latest DOCKER_TAG ?= latest
@ -17,6 +15,8 @@ AMPY_DELAY ?= 1.5
ARDUINO ?= /usr/share/arduino ARDUINO ?= /usr/share/arduino
PIPENV ?= $(shell which pipenv) PIPENV ?= $(shell which pipenv)
all: copy-kmk copy-keymap copy-main.py
.docker_base: Dockerfile_base .docker_base: Dockerfile_base
@echo "===> Building Docker base image kmkfw/base:${DOCKER_BASE_TAG}" @echo "===> Building Docker base image kmkfw/base:${DOCKER_BASE_TAG}"
@docker build -f Dockerfile_base -t kmkfw/base:${DOCKER_BASE_TAG} . @docker build -f Dockerfile_base -t kmkfw/base:${DOCKER_BASE_TAG} .
@ -75,15 +75,6 @@ test: lint micropython-build-unix
@rsync -ah vendor/ build/ @rsync -ah vendor/ build/
@touch .submodules @touch .submodules
.circuitpy-deps: .submodules
@echo "===> Building circuitpython/mpy-cross"
@echo "===> Building circuitpython/mpy-cross" >> .build.log
@pipenv run $(MAKE) -C build/circuitpython/mpy-cross 2>&1 >> .build.log
@echo "===> Pulling Nordic BLE stack"
@echo "===> Pulling Nordic BLE stack" >> .build.log
@cd build/circuitpython/ports/nrf && ./drivers/bluetooth/download_ble_stack.sh 2>/dev/null >/dev/null
@touch .circuitpy-deps
.micropython-deps: .submodules .micropython-deps: .submodules
@echo "===> Building micropython/mpy-cross" @echo "===> Building micropython/mpy-cross"
@echo "===> Building micropython/mpy-cross" >> .build.log @echo "===> Building micropython/mpy-cross" >> .build.log
@ -91,7 +82,6 @@ test: lint micropython-build-unix
@touch .micropython-deps @touch .micropython-deps
submodules: .submodules submodules: .submodules
circuitpy-deps: .circuitpy-deps
micropython-deps: .micropython-deps micropython-deps: .micropython-deps
build/micropython/ports/unix/micropython: micropython-deps build/micropython/ports/unix/modules/.kmk_frozen build/micropython/ports/unix/micropython: micropython-deps build/micropython/ports/unix/modules/.kmk_frozen
@ -101,10 +91,6 @@ build/micropython/ports/unix/micropython: micropython-deps build/micropython/por
micropython-build-unix: build/micropython/ports/unix/micropython micropython-build-unix: build/micropython/ports/unix/micropython
freeze-atmel-samd-build-deps: build/circuitpython/ports/atmel-samd/modules/.kmk_frozen
freeze-nrf-build-deps: build/circuitpython/ports/nrf/freeze/.kmk_frozen
freeze-stm32-build-deps: build/micropython/ports/stm32/freeze/.kmk_frozen
build/micropython/ports/unix/modules/.kmk_frozen: upy-freeze.txt submodules.toml build/micropython/ports/unix/modules/.kmk_frozen: upy-freeze.txt submodules.toml
@echo "===> Preparing vendored dependencies for bundling into MicroPython for Unix" @echo "===> Preparing vendored dependencies for bundling into MicroPython for Unix"
@echo "===> Preparing vendored dependencies for bundling into MicroPython for Unix" >> .build.log @echo "===> Preparing vendored dependencies for bundling into MicroPython for Unix" >> .build.log
@ -113,21 +99,7 @@ build/micropython/ports/unix/modules/.kmk_frozen: upy-freeze.txt submodules.toml
xargs -I '{}' rsync -ah {} build/micropython/ports/unix/modules/ xargs -I '{}' rsync -ah {} build/micropython/ports/unix/modules/
@touch $@ @touch $@
build/circuitpython/ports/atmel-samd/modules/.kmk_frozen: upy-freeze.txt submodules.toml freeze-stm32-build-deps: build/micropython/ports/stm32/freeze/.kmk_frozen
@echo "===> Preparing vendored dependencies for bundling into CircuitPython for atmel-samd"
@echo "===> Preparing vendored dependencies for bundling into CircuitPython for atmel-samd" >> .build.log
@rm -rf build/circuitpython/ports/atmel-samd/modules/*
@cat upy-freeze.txt | egrep -v '(^#|^\s*$|^\s*\t*#)' | grep CIRCUITPY | cut -d'|' -f2- | \
xargs -I '{}' rsync -ah {} build/circuitpython/ports/atmel-samd/modules/
@touch $@
build/circuitpython/ports/nrf/freeze/.kmk_frozen: upy-freeze.txt submodules.toml
@echo "===> Preparing vendored dependencies for bundling into CircuitPython for NRF"
@echo "===> Preparing vendored dependencies for bundling into CircuitPython for NRF" >> .build.log
@rm -rf build/circuitpython/ports/nrf/freeze/*
@cat upy-freeze.txt | egrep -v '(^#|^\s*$|^\s*\t*#)' | grep CIRCUITPY | cut -d'|' -f2- | \
xargs -I '{}' rsync -ah {} build/circuitpython/ports/nrf/freeze/
@touch $@
build/micropython/ports/stm32/freeze/.kmk_frozen: upy-freeze.txt submodules.toml build/micropython/ports/stm32/freeze/.kmk_frozen: upy-freeze.txt submodules.toml
@echo "===> Preparing vendored dependencies for bundling into MicroPython for STM32" @echo "===> Preparing vendored dependencies for bundling into MicroPython for STM32"
@ -138,66 +110,12 @@ build/micropython/ports/stm32/freeze/.kmk_frozen: upy-freeze.txt submodules.toml
xargs -I '{}' rsync -ah {} build/micropython/ports/stm32/freeze/ xargs -I '{}' rsync -ah {} build/micropython/ports/stm32/freeze/
@touch $@ @touch $@
circuitpy-freeze-kmk-atmel-samd: freeze-atmel-samd-build-deps
@echo "===> Preparing KMK source for bundling into CircuitPython for atmel-samd"
@echo "===> Preparing KMK source for bundling into CircuitPython for atmel-samd" >> .build.log
@rm -rf build/circuitpython/ports/atmel-samd/modules/kmk*
@rsync -ah kmk build/circuitpython/ports/atmel-samd/modules/ --exclude kmk/micropython
circuitpy-freeze-kmk-nrf: freeze-nrf-build-deps
@echo "===> Preparing KMK source for bundling into CircuitPython for NRF"
@echo "===> Preparing KMK source for bundling into CircuitPython for NRF" >> .build.log
@rm -rf build/circuitpython/ports/nrf/kmk*
@rsync -ah kmk build/circuitpython/ports/nrf/freeze/ --exclude kmk/micropython
micropython-freeze-kmk-stm32: freeze-stm32-build-deps micropython-freeze-kmk-stm32: freeze-stm32-build-deps
@echo "===> Preparing KMK source for bundling into MicroPython for STM32" @echo "===> Preparing KMK source for bundling into MicroPython for STM32"
@echo "===> Preparing KMK source for bundling into MicroPython for STM32" >> .build.log @echo "===> Preparing KMK source for bundling into MicroPython for STM32" >> .build.log
@rm -rf build/micropython/ports/stm32/freeze/kmk* @rm -rf build/micropython/ports/stm32/freeze/kmk*
@rsync -ah kmk build/micropython/ports/stm32/freeze/ --exclude kmk/circuitpython @rsync -ah kmk build/micropython/ports/stm32/freeze/ --exclude kmk/circuitpython
circuitpy-build-feather-m4-express:
@echo "===> Building CircuitPython for atmel-samd - Feather M4 Express"
@echo "===> Building CircuitPython for atmel-samd - Feather M4 Express" >> .build.log
@pipenv run $(MAKE) -C build/circuitpython/ports/atmel-samd BOARD=feather_m4_express FROZEN_MPY_DIRS="modules" clean all 2>&1 >> .build.log
circuitpy-build-itsybitsy-m4-express:
@echo "===> Building CircuitPython for atmel-samd - ItsyBitsy M4 Express"
@echo "===> Building CircuitPython for atmel-samd - ItsyBitsy M4 Express" >> .build.log
@pipenv run $(MAKE) -C build/circuitpython/ports/atmel-samd BOARD=itsybitsy_m4_express FROZEN_MPY_DIRS="modules" clean all 2>&1 >> .build.log
circuitpy-build-nrf:
@echo "===> Building CircuitPython for NRF - Feather NRF52832"
@echo "===> Building CircuitPython for NRF - Feather NRF52832" >> .build.log
@pipenv run $(MAKE) -C build/circuitpython/ports/nrf BOARD=feather_nrf52832 SERIAL=${AMPY_PORT} SD=s132 FROZEN_MPY_DIR=freeze clean all 2>&1 >> .build.log
circuitpy-flash-feather-m4-express:
@echo
@echo "!!!!!!!!!!!!!!!!!!!!"
@echo "Flashing not available for Feather M4 Express over bossa right now"
@echo "First, double tap the reset button on the Feather. You should see a red light near the USB port"
@echo "Then, find and (if necessary) mount the USB drive that will show up (should be about 4MB)"
@echo "Copy build/circuitpython/ports/atmel-samd/build-feather_m4_express/firmware.uf2 to this device"
@echo "The device will auto-reboot. You may need to forcibly unmount the drive on Linuxes, with umount -f path/to/mountpoint"
@echo "!!!!!!!!!!!!!!!!!!!!"
@echo
circuitpy-flash-itsybitsy-m4-express:
@echo
@echo "!!!!!!!!!!!!!!!!!!!!"
@echo "Flashing not available for ItsyBitsy M4 Express over bossa right now"
@echo "First, double tap the reset button on the ItsyBitsy. You should see a red light near the USB port"
@echo "Then, find and (if necessary) mount the USB drive that will show up (should be about 4MB)"
@echo "Copy build/circuitpython/ports/atmel-samd/build-itsybitsy_m4_express/firmware.uf2 to this device"
@echo "The device will auto-reboot. You may need to forcibly unmount the drive on Linuxes, with umount -f path/to/mountpoint"
@echo "!!!!!!!!!!!!!!!!!!!!"
@echo
circuitpy-flash-nrf: circuitpy-build-nrf
@echo "===> Flashing CircuitPython with KMK and your keymap"
@echo "===> Flashing CircuitPython with KMK and your keymap" >> .build.log
@pipenv run $(MAKE) -C build/circuitpython/ports/nrf BOARD=feather_nrf52832 SERIAL=${AMPY_PORT} SD=s132 FROZEN_MPY_DIR=freeze dfu-gen dfu-flash 2>&1 >> .build.log
micropython-build-pyboard: micropython-build-pyboard:
@echo "===> Building MicroPython for STM32 - PYBV11" @echo "===> Building MicroPython for STM32 - PYBV11"
@echo "===> Building MicroPython for STM32 - PYBV11" >> .build.log @echo "===> Building MicroPython for STM32 - PYBV11" >> .build.log
@ -208,74 +126,6 @@ micropython-flash-pyboard: micropython-build-pyboard
@echo "===> Flashing MicroPython with KMK and your keymap" >> .build.log @echo "===> Flashing MicroPython with KMK and your keymap" >> .build.log
@pipenv run $(MAKE) -j4 -C build/micropython/ports/stm32/ BOARD=PYBV11 FROZEN_MPY_DIR=freeze deploy 2>&1 >> .build.log @pipenv run $(MAKE) -j4 -C build/micropython/ports/stm32/ BOARD=PYBV11 FROZEN_MPY_DIR=freeze deploy 2>&1 >> .build.log
circuitpy-flash-nrf-entrypoint:
@echo "===> Flashing entrypoint if it doesn't already exist"
@sleep 2
@-timeout -k 5s 10s $(PIPENV) run ampy -p ${AMPY_PORT} -d ${AMPY_DELAY} -b ${AMPY_BAUD} rm main.py 2>/dev/null
@-timeout -k 5s 10s $(PIPENV) run ampy -p ${AMPY_PORT} -d ${AMPY_DELAY} -b ${AMPY_BAUD} put entrypoints/feather_nrf52832.py main.py
@echo "===> Flashed keyboard successfully!"
ifndef USER_KEYMAP
build-feather-m4-express:
@echo "===> Must provide a USER_KEYMAP (usually from user_keymaps/...) to build!" && exit 1
flash-feather-m4-express:
@echo "===> Must provide a USER_KEYMAP (usually from user_keymaps/...) to build!" && exit 1
else
ifndef SKIP_KEYMAP_VALIDATION
build-feather-m4-express: clean-build-log lint circuitpy-deps circuitpy-freeze-kmk-atmel-samd micropython-build-unix
else
build-feather-m4-express: clean-build-log lint circuitpy-deps circuitpy-freeze-kmk-atmel-samd
endif
@echo "===> Preparing keyboard script for bundling into CircuitPython for atmel-samd"
ifndef SKIP_KEYMAP_VALIDATION
@MICROPYPATH=./ ./bin/micropython.sh bin/keymap_sanity_check.py ${USER_KEYMAP}
endif
@rsync -ah ${USER_KEYMAP} build/circuitpython/ports/atmel-samd/modules/kmk_keyboard_user.py
@rsync -ah kmk/entrypoints/global.py build/circuitpython/ports/atmel-samd/modules/_main.py
@$(MAKE) circuitpy-build-feather-m4-express
flash-feather-m4-express: build-feather-m4-express circuitpy-flash-feather-m4-express
endif
ifndef USER_KEYMAP
build-feather-nrf52832:
@echo "===> Must provide a USER_KEYMAP (usually from user_keymaps/...) to build!" && exit 1
flash-feather-nrf52832:
@echo "===> Must provide a USER_KEYMAP (usually from user_keymaps/...) to build!" && exit 1
else
build-feather-nrf52832: clean-build-log lint circuitpy-deps circuitpy-freeze-kmk-nrf
@echo "===> Preparing keyboard script for bundling into CircuitPython for NRF"
@rsync -ah ${USER_KEYMAP} build/circuitpython/ports/nrf/freeze/kmk_keyboard_user.py
@$(MAKE) circuitpy-build-nrf
flash-feather-nrf52832: clean-build-log build-feather-nrf52832 circuitpy-flash-nrf circuitpy-flash-nrf-endpoint
endif
ifndef USER_KEYMAP
build-itsybitsy-m4-express:
@echo "===> Must provide a USER_KEYMAP (usually from user_keymaps/...) to build!" && exit 1
flash-itsybitsy-m4-express:
@echo "===> Must provide a USER_KEYMAP (usually from user_keymaps/...) to build!" && exit 1
else
ifndef SKIP_KEYMAP_VALIDATION
build-itsybitsy-m4-express: clean-build-log lint circuitpy-deps circuitpy-freeze-kmk-atmel-samd micropython-build-unix
else
build-itsybitsy-m4-express: clean-build-log lint circuitpy-deps circuitpy-freeze-kmk-atmel-samd
endif
@echo "===> Preparing keyboard script for bundling into CircuitPython for atmel-samd"
ifndef SKIP_KEYMAP_VALIDATION
@MICROPYPATH=./ ./bin/micropython.sh bin/keymap_sanity_check.py ${USER_KEYMAP}
endif
@rsync -ah ${USER_KEYMAP} build/circuitpython/ports/atmel-samd/modules/kmk_keyboard_user.py
@rsync -ah kmk/entrypoints/global.py build/circuitpython/ports/atmel-samd/modules/_main.py
@$(MAKE) circuitpy-build-itsybitsy-m4-express
flash-itsybitsy-m4-express: build-itsybitsy-m4-express circuitpy-flash-itsybitsy-m4-express
endif
ifndef USER_KEYMAP ifndef USER_KEYMAP
build-pyboard: build-pyboard:
@echo "===> Must provide a USER_KEYMAP (usually from user_keymaps/...) to build!" && exit 1 @echo "===> Must provide a USER_KEYMAP (usually from user_keymaps/...) to build!" && exit 1
@ -292,8 +142,8 @@ endif
ifndef SKIP_KEYMAP_VALIDATION ifndef SKIP_KEYMAP_VALIDATION
@MICROPYPATH=./ ./bin/micropython.sh bin/keymap_sanity_check.py ${USER_KEYMAP} @MICROPYPATH=./ ./bin/micropython.sh bin/keymap_sanity_check.py ${USER_KEYMAP}
endif endif
@rsync -ah ${USER_KEYMAP} build/micropython/ports/stm32/freeze/kmk_keyboard_user.py @rsync -ah ${USER_KEYMAP} build/micropython/ports/stm32/freeze/main.py
@rsync -ah kmk/entrypoints/global.py build/micropython/ports/stm32/freeze/_main.py @rsync -ah main.py build/micropython/ports/stm32/freeze/_main.py
@rsync -ah kmk/entrypoints/handwire/pyboard_boot.py build/micropython/ports/stm32/freeze/_boot.py @rsync -ah kmk/entrypoints/handwire/pyboard_boot.py build/micropython/ports/stm32/freeze/_boot.py
@$(MAKE) AMPY_PORT=/dev/ttyACM0 AMPY_BAUD=115200 micropython-build-pyboard @$(MAKE) AMPY_PORT=/dev/ttyACM0 AMPY_BAUD=115200 micropython-build-pyboard
@ -301,7 +151,53 @@ flash-pyboard: build-pyboard micropython-flash-pyboard
endif endif
reset-bootloader: reset-bootloader:
@echo "===> Rebooting your board to bootloader (safe to ignore file not found errors)"
@-timeout -k 5s 10s $(PIPENV) run ampy -p /dev/ttyACM0 -d ${AMPY_DELAY} -b ${AMPY_BAUD} run util/bootloader.py @-timeout -k 5s 10s $(PIPENV) run ampy -p /dev/ttyACM0 -d ${AMPY_DELAY} -b ${AMPY_BAUD} run util/bootloader.py
reset-board: reset-board:
@echo "===> Rebooting your board (safe to ignore file not found errors)"
@-timeout -k 5s 10s $(PIPENV) run ampy -p /dev/ttyACM0 -d ${AMPY_DELAY} -b ${AMPY_BAUD} run util/reset.py @-timeout -k 5s 10s $(PIPENV) run ampy -p /dev/ttyACM0 -d ${AMPY_DELAY} -b ${AMPY_BAUD} run util/reset.py
ifdef MOUNTPOINT
$(MOUNTPOINT)/kmk/.copied: $(shell find kmk/ -name "*.py" | xargs -0)
@echo "===> Copying KMK source folder"
@rsync -rh kmk $(MOUNTPOINT)/
@cat upy-freeze.txt | egrep -v '(^#|^\s*$|^\s*\t*#)' | grep CIRCUITPY | cut -d'|' -f2- | \
xargs -I '{}' rsync -h {} $(MOUNTPOINT)/
@touch $(MOUNTPOINT)/kmk/.copied
@sync
copy-kmk: $(MOUNTPOINT)/kmk/.copied
else
copy-kmk:
echo "**** MOUNTPOINT must be defined (wherever your CIRCUITPY drive is mounted) ****" && exit 1
endif
ifdef MOUNTPOINT
$(MOUNTPOINT)/main.py: main.py
@echo "===> Copying a basic main.py"
@rsync -rh main.py $@
@sync
copy-main.py: $(MOUNTPOINT)/main.py
else
copy-main.py:
echo "**** MOUNTPOINT must be defined (wherever your CIRCUITPY drive is mounted) ****" && exit 1
endif
ifdef MOUNTPOINT
ifndef USER_KEYMAP
$(MOUNTPOINT)/kmk_keyboard.py:
@echo "**** USER_KEYMAP must be defined (ex. USER_KEYMAP=user_keymaps/noop.py) ****" && exit 1
else
$(MOUNTPOINT)/kmk_keyboard.py: $(USER_KEYMAP)
@echo "===> Copying your keymap to kmk_keyboard.py"
@rsync -rh $(USER_KEYMAP) $@
@sync
endif # USER_KEYMAP
copy-keymap: $(MOUNTPOINT)/kmk_keyboard.py
else
copy-keymap:
echo "**** MOUNTPOINT must be defined (wherever your CIRCUITPY drive is mounted) ****" && exit 1
endif # MOUNTPOINT

View File

@ -1,18 +1,26 @@
# Flashing Instructions # Flashing Instructions
Flashing sequence: KMK sits on top of an existing CircuitPython install, flash that for your board
as appropriate (see [Adafruit's
documentation](https://learn.adafruit.com/welcome-to-circuitpython/installing-circuitpython),
though it doesn't cover all CircuitPython boards - you may need to glance around
the CircuitPython source or ask on Discord). We primarily target CircuitPython
4.0-alpha1 and above, though many features should work on 3.x. You'll only need
to flash CircuitPython once (unless we update our baseline supported version).
1. Press the `KC.RESET` keycode, or tap the RESET button. After CircuitPython has been flashed, a `CIRCUITPY` drive should show up on your
2. Wait for the OS to detect the device computer (some Linux/BSD users without drive automounting will want to poke
3. Flash a .hex file (May be done automatically) around `dmesg` to find the drive identifier and mount this drive manually
4. Reset the device into application mode (May be done automatically) somewhere - ex. `mkdir -p ~/mnt && sudo mount -o uid=1000,gid=1000 /dev/sdf1
~/mnt`, where `uid` and `gid` are your user ID and primary group ID, as found in
or: `id -u` and `id -g`). Take note of the path that this is mounted to (for MacOS
users, this will probably look something like `/Volumes/CIRCUITPY`).
make flash-<board> USER_KEYMAP=user_keymaps/...
Example:
make flash-feather-m4-express USER_KEYMAP=user_keymaps/kdb424/handwire_planck_featherm4.py
To "flash" all of KMK, your keymap, and a basic `main.py` that will start
everything up, run `make MOUNTPOINT=/path/to/wherever
USER_KEYMAP=path/to/keymap.py`. For example, if my `CIRCUITPY` volume is mounted
to `~/mnt`, I might flash my development breadboard with the following:
```sh
make MOUNTPOINT=~/mnt USER_KEYMAP=user_keymaps/klardotsh/itsybitsy_m4_express/threethree.py
```

View File

@ -1,4 +0,0 @@
from kmk_keyboard_user import main
if __name__ == '__main__':
main()

View File

@ -5,14 +5,14 @@ def main():
from kmk.firmware import Firmware from kmk.firmware import Firmware
from kmk.matrix import MatrixScanner from kmk.matrix import MatrixScanner
import kmk_keyboard_user import kmk_keyboard
cols = getattr(kmk_keyboard_user, 'cols') cols = getattr(kmk_keyboard, 'cols')
diode_orientation = getattr(kmk_keyboard_user, 'diode_orientation') diode_orientation = getattr(kmk_keyboard, 'diode_orientation')
keymap = getattr(kmk_keyboard_user, 'keymap') keymap = getattr(kmk_keyboard, 'keymap')
rows = getattr(kmk_keyboard_user, 'rows') rows = getattr(kmk_keyboard, 'rows')
debug_enable = getattr(kmk_keyboard_user, 'debug_enable', False) debug_enable = getattr(kmk_keyboard, 'debug_enable', False)
if debug_enable: if debug_enable:
from logging import DEBUG as log_level from logging import DEBUG as log_level

View File

@ -8,13 +8,13 @@ from kmk.micropython.pyb_hid import HIDHelper
def main(): def main():
import kmk_keyboard_user import kmk_keyboard
cols = getattr(kmk_keyboard_user, 'cols') cols = getattr(kmk_keyboard, 'cols')
diode_orientation = getattr(kmk_keyboard_user, 'diode_orientation') diode_orientation = getattr(kmk_keyboard, 'diode_orientation')
keymap = getattr(kmk_keyboard_user, 'keymap') keymap = getattr(kmk_keyboard, 'keymap')
rows = getattr(kmk_keyboard_user, 'rows') rows = getattr(kmk_keyboard, 'rows')
debug_enable = getattr(kmk_keyboard_user, 'debug_enable', False) debug_enable = getattr(kmk_keyboard, 'debug_enable', False)
if debug_enable: if debug_enable:
from logging import DEBUG as log_level from logging import DEBUG as log_level

View File

@ -19,8 +19,8 @@ class Firmware:
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
logger.setLevel(log_level) logger.setLevel(log_level)
import kmk_keyboard_user import kmk_keyboard
self.encoders = getattr(kmk_keyboard_user, 'encoders', []) self.encoders = getattr(kmk_keyboard, 'encoders', [])
self.hydrated = False self.hydrated = False

View File

@ -90,11 +90,11 @@ class InternalState:
_oldstates = [] _oldstates = []
def __init__(self, preserve_intermediate_states=False): def __init__(self, preserve_intermediate_states=False):
import kmk_keyboard_user import kmk_keyboard
self.unicode_mode = getattr(kmk_keyboard_user, 'unicode_mode', UnicodeModes.NOOP) self.unicode_mode = getattr(kmk_keyboard, 'unicode_mode', UnicodeModes.NOOP)
self.tap_time = getattr(kmk_keyboard_user, 'tap_time', 300) self.tap_time = getattr(kmk_keyboard, 'tap_time', 300)
self.leader_mode = getattr(kmk_keyboard_user, 'leader_mode', LeaderMode.ENTER) self.leader_mode = getattr(kmk_keyboard, 'leader_mode', LeaderMode.ENTER)
self.leader_dictionary = getattr(kmk_keyboard_user, 'leader_dictionary', {}) self.leader_dictionary = getattr(kmk_keyboard, 'leader_dictionary', {})
self.preserve_intermediate_states = preserve_intermediate_states self.preserve_intermediate_states = preserve_intermediate_states
def __enter__(self): def __enter__(self):

3
main.py Normal file
View File

@ -0,0 +1,3 @@
from kmk_keyboard import main
main()

View File

@ -1,4 +1,3 @@
[submodules] [submodules]
"vendor/circuitpython" = "2cec23c"
"vendor/micropython" = "65a49fa" "vendor/micropython" = "65a49fa"
"vendor/upy-lib" = "451b1c0" "vendor/upy-lib" = "451b1c0"

View File

@ -86,3 +86,6 @@ keymap = [
[KC.DF(0), KC.DF(1), KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.F1, KC.F2, KC.F3, KC.NO], [KC.DF(0), KC.DF(1), KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.F1, KC.F2, KC.F3, KC.NO],
], ],
] ]
if __name__ == '__main__':
main()

View File

@ -71,3 +71,6 @@ keymap = [
[KC.O, KC.P, KC.Q], [KC.O, KC.P, KC.Q],
], ],
] ]
if __name__ == '__main__':
main()

View File

@ -87,3 +87,6 @@ keymap = [
[KC.TRNS, KC.P, MACRO_HELLO_WORLD], [KC.TRNS, KC.P, MACRO_HELLO_WORLD],
], ],
] ]
if __name__ == '__main__':
main()

@ -1 +0,0 @@
Subproject commit 2cec23cb632b9c01c5c718444e05fa62f4fd8807