diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 4c2b8cd..0000000 --- a/.gitmodules +++ /dev/null @@ -1,8 +0,0 @@ -[submodule "upy-lib"] - path = vendor/upy-lib - url = https://github.com/kmkfw/micropython-lib.git - ignore = dirty -[submodule "micropython"] - path = vendor/micropython - url = https://github.com/kmkfw/micropython.git - ignore = dirty diff --git a/LICENSE.md b/LICENSE.md index 2fb2e74..ad610ae 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,3 +1,14 @@ +Almost all of KMK is licensed under the GPLv3. There are a couple of +exceptions: + +- `kmk/string.py` is copied directly from + [micropython-lib](https://github.com/micropython/micropython-lib) and is + under the MIT license, copyrighted by the micropython-lib contributors +- Hardware schematics are licensed under individual terms per schematic + +Files/components not listed above or containing its own copyright header in the +file itself are licensed under GPLv3 as follows: + ### GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 diff --git a/Makefile b/Makefile index 9af964a..22a01e9 100644 --- a/Makefile +++ b/Makefile @@ -43,7 +43,7 @@ fix-isort: devdeps clean: clean-build-log @echo "===> Cleaning build artifacts" - @rm -rf .submodules .circuitpy-deps .micropython-deps .devdeps build + @rm -rf .devdeps build clean-build-log: @echo "===> Clearing previous .build.log" @@ -57,38 +57,6 @@ powerwash: clean test: lint -.submodules: .gitmodules submodules.toml - @echo "===> Pulling dependencies, this may take several minutes" - @echo "===> Pulling dependencies, this may take several minutes" >> .build.log - @git submodule sync 2>&1 >> .build.log - @git submodule update --init --recursive 2>&1 >> .build.log - @rsync -ah vendor/ build/ - @touch .submodules - -.micropython-deps: .submodules - @echo "===> Building micropython/mpy-cross" - @echo "===> Building micropython/mpy-cross" >> .build.log - @pipenv run $(MAKE) -C build/micropython/mpy-cross 2>&1 >> .build.log - @touch .micropython-deps - -submodules: .submodules -micropython-deps: .micropython-deps - -build/micropython/ports/unix/micropython: micropython-deps build/micropython/ports/unix/modules/.kmk_frozen - @echo "===> Building MicroPython for Unix" - @echo "===> Building MicroPython for Unix" >> .build.log - @pipenv run $(MAKE) -j4 -C build/micropython/ports/unix 2>&1 >> .build.log - -micropython-build-unix: build/micropython/ports/unix/micropython - -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" >> .build.log - @rm -rf build/micropython/ports/unix/modules/* - @cat upy-freeze.txt | egrep -v '(^#|^\s*$|^\s*\t*#)' | grep MICROPY | cut -d'|' -f2- | \ - xargs -I '{}' rsync -ah {} build/micropython/ports/unix/modules/ - @touch $@ - 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 @@ -101,8 +69,6 @@ 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 diff --git a/bin/micropython.sh b/bin/micropython.sh deleted file mode 100755 index 154dd23..0000000 --- a/bin/micropython.sh +++ /dev/null @@ -1,6 +0,0 @@ -if [ ! -f build/micropython/ports/unix/micropython ]; then - echo "Run make micropython-build-unix" - exit 1 -fi - -build/micropython/ports/unix/micropython $@ diff --git a/kmk/macros/simple.py b/kmk/macros/simple.py index 9fb1734..2bbf2d0 100644 --- a/kmk/macros/simple.py +++ b/kmk/macros/simple.py @@ -1,6 +1,5 @@ -import string - from kmk.keycodes import Keycodes, Macro, char_lookup, lookup_kc_with_cache +from kmk.string import ascii_letters, digits def simple_key_sequence(seq): @@ -18,7 +17,7 @@ def send_string(message): if char in char_lookup: kc = char_lookup[char] - elif char in string.ascii_letters + string.digits: + elif char in ascii_letters + digits: kc = lookup_kc_with_cache(char) if char.isupper(): diff --git a/kmk/string.py b/kmk/string.py new file mode 100644 index 0000000..bab4454 --- /dev/null +++ b/kmk/string.py @@ -0,0 +1,51 @@ +# This file copied from micropython-lib +# https://github.com/micropython/micropython-lib +# +# The MIT License (MIT) +# +# Copyright (c) 2013, 2014 micropython-lib contributors +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +# Some strings for ctype-style character classification +whitespace = ' \t\n\r\v\f' +ascii_lowercase = 'abcdefghijklmnopqrstuvwxyz' +ascii_uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' +ascii_letters = ascii_lowercase + ascii_uppercase +digits = '0123456789' +hexdigits = digits + 'abcdef' + 'ABCDEF' +octdigits = '01234567' +punctuation = """!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~""" +printable = digits + ascii_letters + punctuation + whitespace + + +def translate(s, map): + import io + sb = io.StringIO() + for c in s: + v = ord(c) + if v in map: + v = map[v] + if isinstance(v, int): + sb.write(chr(v)) + elif v is not None: + sb.write(v) + else: + sb.write(c) + return sb.getvalue() diff --git a/main.py b/main.py deleted file mode 100644 index a29d7d9..0000000 --- a/main.py +++ /dev/null @@ -1,3 +0,0 @@ -from kmk_keyboard import main - -main() diff --git a/submodules.toml b/submodules.toml deleted file mode 100644 index 79e0cde..0000000 --- a/submodules.toml +++ /dev/null @@ -1,3 +0,0 @@ -[submodules] -"vendor/micropython" = "65a49fa" -"vendor/upy-lib" = "451b1c0" diff --git a/upy-freeze.txt b/upy-freeze.txt deleted file mode 100644 index 1e1b44a..0000000 --- a/upy-freeze.txt +++ /dev/null @@ -1,4 +0,0 @@ -# CircuitPython provides collections, don't overwrite it -MICROPY|vendor/upy-lib/collections/collections - -MICROPYCIRCUITPY|vendor/upy-lib/string/string.py diff --git a/upy-unix-stubs/digitalio.py b/upy-unix-stubs/digitalio.py deleted file mode 100644 index b293fa2..0000000 --- a/upy-unix-stubs/digitalio.py +++ /dev/null @@ -1,3 +0,0 @@ -class DigitalInOut: - def __init__(self, *args, **kwargs): - pass diff --git a/upy-unix-stubs/machine/__init__.py b/upy-unix-stubs/machine/__init__.py deleted file mode 100644 index 6199bc0..0000000 --- a/upy-unix-stubs/machine/__init__.py +++ /dev/null @@ -1,38 +0,0 @@ -class Anything: - ''' - A stub class which will repr as a provided name - ''' - def __init__(self, name): - self.name = name - - def __call__(self, *args, **kwargs): - return self - - def __repr__(self): - return 'Anything<{}>'.format(self.name) - - def init(self, *args, **kwargs): - pass - - @property - def value(self): - return False - - -class Passthrough: - def __getattr__(self, attr): - return Anything(attr) - - -class Pin: - board = Passthrough() - IN = 'IN' - OUT = 'OUT' - PULL_DOWN = 'PULL_DOWN' - PULL_UP = 'PULL_UP' - - def __call__(self, *args, **kwargs): - return self.board - - def __getattr__(self, attr): - return getattr(self.board, attr) diff --git a/upy-unix-stubs/pyb/USB_HID.py b/upy-unix-stubs/pyb/USB_HID.py deleted file mode 100644 index e69de29..0000000 diff --git a/upy-unix-stubs/pyb/__init__.py b/upy-unix-stubs/pyb/__init__.py deleted file mode 100644 index 9b894c1..0000000 --- a/upy-unix-stubs/pyb/__init__.py +++ /dev/null @@ -1,14 +0,0 @@ -try: - from collections import namedtuple -except ImportError: - from ucollections import namedtuple - -HIDMode = namedtuple('HIDMode', ( - 'subclass', - 'protocol', - 'max_packet_length', - 'polling_interval', - 'report_descriptor', -)) - -hid_keyboard = HIDMode(0, 0, 0, 0, bytearray(0)) diff --git a/upy-unix-stubs/pyb/delay.py b/upy-unix-stubs/pyb/delay.py deleted file mode 100644 index e69de29..0000000 diff --git a/upy-unix-stubs/usb_hid.py b/upy-unix-stubs/usb_hid.py deleted file mode 100644 index 1b2034a..0000000 --- a/upy-unix-stubs/usb_hid.py +++ /dev/null @@ -1 +0,0 @@ -devices = [] diff --git a/vendor/micropython b/vendor/micropython deleted file mode 160000 index 65a49fa..0000000 --- a/vendor/micropython +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 65a49fa3c80e7432ccb35b9f34e5c4c0a62b933d diff --git a/vendor/upy-lib b/vendor/upy-lib deleted file mode 160000 index 451b1c0..0000000 --- a/vendor/upy-lib +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 451b1c07567de85062ef35b672b2101647285e9a