{"id":15670003,"url":"https://github.com/plasticrake/qmk_userspace","last_synced_at":"2025-04-06T08:20:05.352Z","repository":{"id":204362002,"uuid":"709448182","full_name":"plasticrake/qmk_userspace","owner":"plasticrake","description":null,"archived":false,"fork":false,"pushed_at":"2023-10-29T23:52:25.000Z","size":25,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-12T13:56:21.473Z","etag":null,"topics":["qmk","qmk-keymap"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/plasticrake.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":"2023-10-24T18:33:41.000Z","updated_at":"2023-10-29T23:59:55.000Z","dependencies_parsed_at":null,"dependency_job_id":"0f05bdaf-0e49-46da-98d0-9ca6e07d78b7","html_url":"https://github.com/plasticrake/qmk_userspace","commit_stats":null,"previous_names":["plasticrake/qmk_userspace"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plasticrake%2Fqmk_userspace","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plasticrake%2Fqmk_userspace/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plasticrake%2Fqmk_userspace/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plasticrake%2Fqmk_userspace/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/plasticrake","download_url":"https://codeload.github.com/plasticrake/qmk_userspace/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247452292,"owners_count":20941074,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["qmk","qmk-keymap"],"created_at":"2024-10-03T14:41:54.534Z","updated_at":"2025-04-06T08:20:05.308Z","avatar_url":"https://github.com/plasticrake.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# plasticrake's QMK Userspace\n\n## Overview\n\nThe \"smallest\" keyboards I use are 65%. I try not to be too clever with my\nlayers; as I like to keep good muscle memory for \"standard\" keyboards or laptop\nkeyboards. I do like RGB keys, but I like them to be utilized practically and\nnot for just \"looks\". And I wanted to find a good balance of features.\n\nThe code in this userspace is designed to be very modular. Modular code also\nmeans that it should be easy to identify and adapt specific pieces to your own firmware.\n\n### Keyboards and Keymaps\n\nThe following keyboards use the files in this userspace:\n\n-   GMMK Pro\n    -   `qmk compile users/plasticrake/keymaps/gmmk-pro-rev1-ansi.json`\n-   Keychron Q1\n    -   `qmk compile users/plasticrake/keymaps/keychron-q1v2-ansi_encoder.json`\n\n## Features\n\n-   **[Caps Word](https://github.com/qmk/qmk_firmware/blob/master/docs/feature_caps_word.md)**,\n    `CAPS_WORD_ENABLE` and `BOTH_SHIFTS_TURNS_ON_CAPS_WORD` are on by default.\n-   **Mouse jiggler**, adapted from [replicaJunction](https://github.com/qmk/qmk_firmware/blob/master/users/replicaJunction/readme.md)\n-   **Secrets**, adapted from [replicaJunction](https://github.com/qmk/qmk_firmware/blob/master/users/replicaJunction/readme.md)\n    and [Drashna](https://github.com/qmk/qmk_firmware/blob/master/users/drashna/keyrecords/secrets.md)\n-   **Dip Switch Layers**. Many Keychron keyboards have a dip switch that swaps\n    the default layers from 0/1 to 2/3. This userspace makes the layer count\n    configurable and also updates the [tri layer feature](https://docs.qmk.fm/#/feature_tri_layer)\n    to match. I use it to have 4 layers per switch and the tri layer feature\n    lets me access all 4 of each set of layers.\n-   **Layer colors**. Each layer has a configurable color and non-transparent\n    keys in a layer will change color when active.\n\n### Mouse Jiggler\n\nThis adds a keycode that will move the mouse cursor on each matrix scan. Used to\nprevent the screen from locking if you're temporarily doing something else\n(working on a different machine, reading/writing, etc.).\n\nSettings for `rules.mk` (with defaults):\n\n-   `USER_MOUSE_JIGGLE_ENABLE`, set to `yes` to enable\n-   `USER_MOUSE_JIGGLE_OUTPUT = no`\n-   `USER_MOUSE_JIGGLE_RGB_MATRIX_MODE = RGB_MATRIX_BAND_VAL`\n\nIf `USER_MOUSE_JIGGLE_OUTPUT` is set to yes, when you press the keycode, the\nkeyboard will optionally write the text \"Mouse jiggler enabled\" to signify\nthat the behavior is active. I suggest opening a Notepad window before pressing\nthe key.\n\nIf `USER_MOUSE_JIGGLE_RGB_MATRIX_MODE` is set to an [`rgb_matrix_effect`](https://github.com/qmk/qmk_firmware/blob/master/docs/feature_rgb_matrix.md#rgb-matrix-effects-idrgb-matrix-effects)\nsetting, it will be activated while the jiggler is enabled.\n\nPressing any key will automatically disable the feature again. This is because\nit causes a huge hit to the reliability and performance of the keyboard while\nit's active (adding stuff to every matrix scan will do that).\n\nThe feature also depends on the Mouse Keys feature, so ensure you don't disable\n`MOUSEKEY_ENABLE`.\n\n### Secrets\n\nThis implementation of the \"secrets\" concept is nearly identical to `replicaJunction`\nwhich was based on `Drashna`'s. The only thing missing is a file called\n`user_secret_definitions.h` (configurable with `USER_SECRET_DEFINITIONS_H`),\nwhich contains the actual text contained in those macros.\n\nSettings for `rules.mk`:\n\n-   `USER_SECRETS_ENABLE`, set to `yes` to enable\n\nSettings for `config.h`:\n\n-   `USER_SECRET_DEFINITIONS_H`, location of secrets header file.\n\nTo use my implementation, create a file of that name in the same directory. Make\nsure you've got a `.gitignore` file in place, and add these contents to the\ndefinitions file:\n\n```c\n#pragma once\nstatic const char * const secrets[] = {\n  \"secret1\",\n  \"secret2\",\n  \"secret3\",\n  \"secret4\",\n  \"secret5\"\n}\n```\n\nChange the quoted text to the text you'd like and you're golden. If you need\nmore (or fewer) items, you'll probably need to adjust the code in `secrets.c`\nas well, since it looks for up to five items in a switch case.\n\n## Credits\n\n[replicaJunction](https://github.com/qmk/qmk_firmware/blob/master/users/replicaJunction/readme.md)\n\n[Drashna](https://github.com/qmk/qmk_firmware/blob/master/users/drashna/readme.md)\n\n## License\n\nCopyright 2023 D Patrick Seal (@plasticrake)\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 2 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program. If not, see \u003chttp://www.gnu.org/licenses/\u003e.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplasticrake%2Fqmk_userspace","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fplasticrake%2Fqmk_userspace","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplasticrake%2Fqmk_userspace/lists"}