{"id":20954191,"url":"https://github.com/cipulot/pimopoint","last_synced_at":"2026-04-27T06:32:38.011Z","repository":{"id":116621576,"uuid":"410278914","full_name":"Cipulot/PimoPoint","owner":"Cipulot","description":"Code and custom mounting hardware for the Pimoroni Trackball Breakout","archived":false,"fork":false,"pushed_at":"2021-09-26T21:09:36.000Z","size":17690,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-30T14:33:34.842Z","etag":null,"topics":["custom","hardware","pimoroni","qmk","trackball"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Cipulot.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-09-25T13:24:35.000Z","updated_at":"2025-11-09T11:45:52.000Z","dependencies_parsed_at":null,"dependency_job_id":"962d36a0-b3cd-414d-8d4f-7516c4945f21","html_url":"https://github.com/Cipulot/PimoPoint","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Cipulot/PimoPoint","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cipulot%2FPimoPoint","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cipulot%2FPimoPoint/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cipulot%2FPimoPoint/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cipulot%2FPimoPoint/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Cipulot","download_url":"https://codeload.github.com/Cipulot/PimoPoint/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cipulot%2FPimoPoint/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32325937,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T23:26:28.701Z","status":"online","status_checked_at":"2026-04-27T02:00:06.769Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["custom","hardware","pimoroni","qmk","trackball"],"created_at":"2024-11-19T01:07:31.047Z","updated_at":"2026-04-27T06:32:37.881Z","avatar_url":"https://github.com/Cipulot.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PimoTrack Extras\n\nThis repository contains code and custom mounting hardware files for the [Pimoroni Trackball Breakout](https://shop.pimoroni.com/products/trackball-breakout).\n\n![Pimoroni on Planck](https://github.com/Cipulot/PimoPoint/blob/main/media/Pimoroni_on_Planck.jpg?raw=true)\n\n## Firmware\n\nWhile QMK natively supports trackball modules over I²C, the base support is somewhat limited at the moment and requires a bit of tinkering to get other functions.\nThis is why I've created a custom set of firmware files for the Track Ball Breakout that include basic but user friendly features.\n\n### `config.h`\n\nHere you can specify the orientation of the module using `TRACKBALL_ORIENTATION` and the angle of the trackball using `TRACKBALL_ANGLE`.\n\n### `pimoroni_trackball.c`\n\nFile containing the actual code for the trackball. Here you'll add code to your personally defined functions if you want to expand the functionality of the trackball. Remember to add function prototype to `pimoroni_trackball.h`.\n\n### `pimoroni_trackball.h`\n\nHeader file for the trackball firmware. Contains defines for I²C address of the module, addresses for I²C write and read, along with other addresses, function prototypes and struct for trackball state.\n\nIf you changed the I²C address of the module, you'll need to change `#define TRACKBALL_ADDRESS 0x0A` to `#define TRACKBALL_ADDRESS 0x0B`.\n\n### `keymap.c`\n\nExample keymap that shows how to implement the trackball functionality into your keymap.\nFor further explanations see the comments in the code itself.\n\n### `rules.mk`\n\nRules that you'll add to personal keymap.\n\nHaving `PIMORONI_TRACKBALL_ENABLE = yes` will automatically enable pointing device capabilities through `POINTING_DEVICE_ENABLE = yes` and add required files to the build process (`SRC += pimoroni_trackball.c` and the Quantum I²C lib, `QUANTUM_LIB_SRC += i2c_master.c`).\n\n## Hardware\n\nThe Pimoroni Trackball Breakout PCB is a small breakout board with exposed I²C pins and 4 mounting holes.\n\nDimensional measurements:\n![Pimoroni on Planck](https://github.com/Cipulot/PimoPoint/blob/main/media/Mechanical_drawing.jpg?raw=true)\n\nUnfortunately, while being relatively small, the PCB is not small enough to be used in a 1U sized space.\n\nI've therefore designed an angled mounting bracket that can be used to mount the PCB in a 2U sized space.\n\nIt uses 2 Cherry MX style switches, without top casing and glued stems, as mounting points.\nThis allows for smaller and easier to print parts both with FDM and SLA printers, since smaller parts as the clips for plate clip-in would require high degree of accuracy.\n\n![SLA_print_mounting_sys](https://github.com/Cipulot/PimoPoint/blob/main/media/SLA_print_mounting_sys.jpg?raw=true)\n\n### Trackball support w_ fix holes\n\n![w_ fix holes](https://github.com/Cipulot/PimoPoint/blob/main/media/3D_Trackball_support_w__fix_holes.jpg?raw=true)\n\n### Trackball support w_o fix holes\n\n![w_o fix holes](https://github.com/Cipulot/PimoPoint/blob/main/media/3D_Trackball_support_w_o_fix_holes.jpg?raw=true)\n\n### Fabrication example\n\nHere's a collection of printed parts using SLA print method.\n\nSupport w_ fix holes top view:\n![SLA_print_top](https://github.com/Cipulot/PimoPoint/blob/main/media/SLA_print_top.jpg?raw=true)\n\nSupport w_ fix holes bot view:\n![SLA_print_bot](https://github.com/Cipulot/PimoPoint/blob/main/media/SLA_print_bot.jpg?raw=true)\n\nSupport w_ fix holes with pin strip receptor:\n![SLA_print_pin_strip_receptor](https://github.com/Cipulot/PimoPoint/blob/main/media/SLA_print_pin_strip.jpg?raw=true)\n\nPlanck with Trackball Breakout PCB mounted on support:\n\u003cp float=\"left\"\u003e\n  \u003cimg src=\"https://github.com/Cipulot/PimoPoint/blob/main/media/Module_mounted_front_view.jpg?raw=true\" width=\"380\" /\u003e\n  \u003cimg src=\"https://github.com/Cipulot/PimoPoint/blob/main/media/Module_mounted_top_view.jpg?raw=true\" width=\"290\" /\u003e\n  \u003cimg src=\"https://github.com/Cipulot/PimoPoint/blob/main/media/Module_mounted_profile_view.jpg?raw=true\" width=\"200\" /\u003e\n\u003c/p\u003e\n\n## Future features and improvements\n\nThese are the things I'd like to improve in the future:\n\n* 3D model a replacement cover for the trackball, for further customization.\n\n* Create a new support for the Trackball Breakout with a different mounting system. This would allow for a more flexible and user friendly installation since it will not require the use of 2 \"sacrificial\" switches.\n\n  The actual design wouldn't require much changes to the model in use today but considerations must be made in order to make it printable by the average FDM and SLA printers. Generally available FDM printers are not as good as SLA printers and therefore the design would need to be adjusted to make it printable. Durability is another concern that will be investigated once early design is done.\n\n* Make a custom 1U sized space PCB, allowing for a more flexible use by the end user, since it will free up a 1U compared to today's standard 2U sized space.\n\n  The challenging part is the sourcing of raw materials and the design of the PCB. The actual PCB is quite easy to design, since space can be saved by removing the mounting holes and the exposed I²C pins can be swapped for small solder pads. The actual firmware onboard the MCU doesn't appear to be public. This means that it would need to be provided by the Pimoroni team or dumped in some way from a genuine Pimoroni device and later flashed to virgin MCUs.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcipulot%2Fpimopoint","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcipulot%2Fpimopoint","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcipulot%2Fpimopoint/lists"}