# SPKB
*SolidPython-based Keyboard Builder*
[![API Documentation on ReadTheDocs](https://readthedocs.org/projects/spkb/badge/?version=latest)][API docs]
[![Python package](https://github.com/whitelynx/spkb/actions/workflows/python-package.yml/badge.svg)](https://github.com/whitelynx/spkb/actions/workflows/python-package.yml)
![Action Shot](images/action-shot.jpg)
A [SolidPython][]-based library for building custom keyboards with [Python][] and [OpenSCAD][].
Some portions ported from Clojure, originally from [the Dactyl Keyboard][] and my fork thereof,
[the Dactyl Lynx Keyboard][].
[SolidPython]: https://github.com/jeff-dh/SolidPython
[Python]: https://www.python.org/
[OpenSCAD]: https://openscad.org/
[the Dactyl Keyboard]: https://github.com/adereth/dactyl-keyboard
[the Dactyl Lynx Keyboard]: https://github.com/whitelynx/dactyl-lynx-keyboard
## Using SPKB
### Installing
Simply install the library in your project, using your preferred package manager.
[Poetry][]:
```bash
poetry add spkb
```
[PDM](https://pdm-project.org/):
```bash
pdm add
```
[pipenv](https://pipenv.pypa.io/):
```bash
pipenv install spkb
```
[Poetry]: https://python-poetry.org/
### Usage
In your project, you can simply import what you need from the submodules of `spkb`:
```python
from spkb.switch_plate import plate_thickness, mx_plate
from spkb.board_mount import stm32_blackpill
from spkb.keycaps import sa_double_length, sa_cap
```
See the sidebar of [the documentation][API docs] for a reference of what's available.
#### Examples
See the example scripts in the `examples/` directory. You can run them by setting `PYTHONPATH` to include the current
directory:
```bash
env PYTHONPATH=$PWD poetry run python examples/stm32_blackpill_mount.py
```
---
## Developing SPKB
### Prerequisites
* [Python][] version 3.11 or newer
* [Poetry][]
### Installing dependencies
```bash
poetry install
```
### Usage
For simply generating interesting key testers, see the example scripts in the `examples/`
directory.
### Running tests
You can run simple tests from some of the submodules:
```bash
poetry run python -m spkb.keycaps # Renders the built-in keycap approximations
poetry run python -m spkb.single_key_pcb # Renders a simple approximation of a single-key PCB
poetry run python -m spkb.single_tester # Renders a single-key tester
poetry run python -m spkb.keyswitch.base # Renders a switch socket negative, plate with board mount, and dummy switch shape
poetry run python -m spkb.keyswitch.choc # Renders a switch socket with backplate for a Kailh Choc switch
poetry run python -m spkb.keyswitch.mx # Renders a switch socket with backplate for an MX-style switch
# Deprecated modules
poetry run python -m spkb.switch_plate # Renders a variety of keyswitch plates (sockets)
poetry run python -m spkb.keyswitch # Renders a basic approximation of an MX-style switch body
```
You can also run all module tests and check for appropriate outputs with this script:
```bash
scripts/run-module-tests.sh
```
---
## Documentation
You can view the documentation online [on ReadTheDocs][API docs].
You can also view the generated API documentation locally by running [pdoc][]:
```bash
poetry run pdoc -n -t templates spkb
```
[API docs]: https://spkb.readthedocs.io/
[pdoc]: https://pdoc.dev/
## Links
* [parametric-key-tester](https://github.com/whitelynx/parametric-key-tester) - the original project this library was forked from
* [the Dactyl Keyboard][] and my fork, [the Dactyl Lynx Keyboard][] - original switch sockets, keycap approximations, etc.
## License
This project is released under [the BSD 3-Clause License](https://opensource.org/licenses/BSD-3-Clause).
Raw data
{
"_id": null,
"home_page": "https://github.com/whitelynx/spkb",
"name": "spkb",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.12",
"maintainer_email": null,
"keywords": "keyboard, OpenSCAD",
"author": "David H. Bronke",
"author_email": "whitelynx@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/75/1c/4628b2c9650c7968c85d1c6ccfed2af7d51676a31993e1ac5c0b2fc51252/spkb-0.1.1.tar.gz",
"platform": null,
"description": "# SPKB\n\n*SolidPython-based Keyboard Builder*\n\n[![API Documentation on ReadTheDocs](https://readthedocs.org/projects/spkb/badge/?version=latest)][API docs]\n[![Python package](https://github.com/whitelynx/spkb/actions/workflows/python-package.yml/badge.svg)](https://github.com/whitelynx/spkb/actions/workflows/python-package.yml)\n\n![Action Shot](images/action-shot.jpg)\n\nA [SolidPython][]-based library for building custom keyboards with [Python][] and [OpenSCAD][].\n\nSome portions ported from Clojure, originally from [the Dactyl Keyboard][] and my fork thereof,\n[the Dactyl Lynx Keyboard][].\n\n[SolidPython]: https://github.com/jeff-dh/SolidPython\n[Python]: https://www.python.org/\n[OpenSCAD]: https://openscad.org/\n[the Dactyl Keyboard]: https://github.com/adereth/dactyl-keyboard\n[the Dactyl Lynx Keyboard]: https://github.com/whitelynx/dactyl-lynx-keyboard\n\n\n## Using SPKB\n\n### Installing\n\nSimply install the library in your project, using your preferred package manager.\n\n[Poetry][]:\n```bash\npoetry add spkb\n```\n\n[PDM](https://pdm-project.org/):\n```bash\npdm add\n```\n\n[pipenv](https://pipenv.pypa.io/):\n```bash\npipenv install spkb\n```\n\n[Poetry]: https://python-poetry.org/\n\n\n### Usage\n\nIn your project, you can simply import what you need from the submodules of `spkb`:\n```python\nfrom spkb.switch_plate import plate_thickness, mx_plate\nfrom spkb.board_mount import stm32_blackpill\nfrom spkb.keycaps import sa_double_length, sa_cap\n```\n\nSee the sidebar of [the documentation][API docs] for a reference of what's available.\n\n\n#### Examples\n\nSee the example scripts in the `examples/` directory. You can run them by setting `PYTHONPATH` to include the current\ndirectory:\n```bash\nenv PYTHONPATH=$PWD poetry run python examples/stm32_blackpill_mount.py\n```\n\n\n---\n\n\n## Developing SPKB\n\n### Prerequisites\n\n* [Python][] version 3.11 or newer\n* [Poetry][]\n\n### Installing dependencies\n\n```bash\npoetry install\n```\n\n\n### Usage\n\nFor simply generating interesting key testers, see the example scripts in the `examples/`\ndirectory.\n\n\n### Running tests\n\nYou can run simple tests from some of the submodules:\n```bash\npoetry run python -m spkb.keycaps # Renders the built-in keycap approximations\npoetry run python -m spkb.single_key_pcb # Renders a simple approximation of a single-key PCB\npoetry run python -m spkb.single_tester # Renders a single-key tester\npoetry run python -m spkb.keyswitch.base # Renders a switch socket negative, plate with board mount, and dummy switch shape\npoetry run python -m spkb.keyswitch.choc # Renders a switch socket with backplate for a Kailh Choc switch\npoetry run python -m spkb.keyswitch.mx # Renders a switch socket with backplate for an MX-style switch\n\n# Deprecated modules\npoetry run python -m spkb.switch_plate # Renders a variety of keyswitch plates (sockets)\npoetry run python -m spkb.keyswitch # Renders a basic approximation of an MX-style switch body\n```\n\nYou can also run all module tests and check for appropriate outputs with this script:\n```bash\nscripts/run-module-tests.sh\n```\n\n\n---\n\n\n## Documentation\n\nYou can view the documentation online [on ReadTheDocs][API docs].\n\nYou can also view the generated API documentation locally by running [pdoc][]:\n```bash\npoetry run pdoc -n -t templates spkb\n```\n\n[API docs]: https://spkb.readthedocs.io/\n[pdoc]: https://pdoc.dev/\n\n\n## Links\n\n* [parametric-key-tester](https://github.com/whitelynx/parametric-key-tester) - the original project this library was forked from\n* [the Dactyl Keyboard][] and my fork, [the Dactyl Lynx Keyboard][] - original switch sockets, keycap approximations, etc.\n\n\n## License\n\nThis project is released under [the BSD 3-Clause License](https://opensource.org/licenses/BSD-3-Clause).\n",
"bugtrack_url": null,
"license": "BSD-3-Clause",
"summary": "A SolidPython-based library for building custom keyboards with Python and OpenSCAD.",
"version": "0.1.1",
"project_urls": {
"Bug Tracker": "https://github.com/whitelynx/spkb/issues",
"Documentation": "https://spkb.readthedocs.io",
"Homepage": "https://github.com/whitelynx/spkb",
"Repository": "https://github.com/whitelynx/spkb"
},
"split_keywords": [
"keyboard",
" openscad"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "5ccbbda5bc3dfe9e26824b21658a9c4ab9e03ce5af06e0578d926ecf234f66d0",
"md5": "c2186431f108b19aa3936990901c35eb",
"sha256": "eaa3a57ffe93242b4493c032ce88c841ce5041109605ab11f3d3a85c8350af17"
},
"downloads": -1,
"filename": "spkb-0.1.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "c2186431f108b19aa3936990901c35eb",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.12",
"size": 18400,
"upload_time": "2024-12-16T02:11:29",
"upload_time_iso_8601": "2024-12-16T02:11:29.540182Z",
"url": "https://files.pythonhosted.org/packages/5c/cb/bda5bc3dfe9e26824b21658a9c4ab9e03ce5af06e0578d926ecf234f66d0/spkb-0.1.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "751c4628b2c9650c7968c85d1c6ccfed2af7d51676a31993e1ac5c0b2fc51252",
"md5": "6136af2b0834f22935e7eab9749c0a84",
"sha256": "430ccff75bfdb6ceea3210168fcf09f24973b58252df3040ffc939db0679fc54"
},
"downloads": -1,
"filename": "spkb-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "6136af2b0834f22935e7eab9749c0a84",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.12",
"size": 13888,
"upload_time": "2024-12-16T02:11:32",
"upload_time_iso_8601": "2024-12-16T02:11:32.209822Z",
"url": "https://files.pythonhosted.org/packages/75/1c/4628b2c9650c7968c85d1c6ccfed2af7d51676a31993e1ac5c0b2fc51252/spkb-0.1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-16 02:11:32",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "whitelynx",
"github_project": "spkb",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "ply",
"specs": [
[
"==",
"3.11"
]
]
},
{
"name": "setuptools",
"specs": [
[
"==",
"75.5.0"
]
]
},
{
"name": "solidpython2",
"specs": [
[
"==",
"2.1.0"
]
]
}
],
"lcname": "spkb"
}