├── .eleventy.js ├── .github ├── FUNDING.yml └── workflows │ ├── broken-links-crawler.yml │ └── build.yml ├── .gitignore ├── CNAME ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── db_fields_reference.md ├── how_to_submit_a_keymap.md ├── lib ├── collections │ ├── pagedPosts.js │ ├── pagedPostsByTag.js │ ├── posts.js │ └── tagList.js ├── filters │ ├── minifyJs.js │ └── readableDate.js └── transforms │ └── minifyHtml.js ├── netlify.toml ├── package-lock.json ├── package.json ├── screens_mock.png ├── src ├── 404.njk ├── _data │ ├── db_fields.json │ ├── maintainer.json │ ├── menu.json │ ├── process.js │ └── site.js ├── _includes │ ├── icons │ │ ├── frown.svg │ │ ├── menu.svg │ │ └── search.svg │ ├── layouts │ │ ├── default.njk │ │ └── keymapdb_entry.njk │ ├── macros │ │ ├── boolean_to_yes_no.njk │ │ ├── show_categorical_array.njk │ │ └── yes_no_switch_field.njk │ └── partials │ │ ├── disqus.njk │ │ ├── footer.njk │ │ ├── header.njk │ │ ├── keymaps_metadata.json.njk │ │ ├── paginator.njk │ │ ├── post_grid.njk │ │ └── sidebar.njk ├── about.njk ├── assets │ ├── css │ │ ├── extras.css │ │ ├── main.css │ │ └── nouislider.css │ ├── img │ │ ├── apple-touch-icon.png │ │ ├── cover.png │ │ ├── favicon.svg │ │ ├── keymaps │ │ │ ├── Dakes.json │ │ │ ├── Dakes.png │ │ │ ├── MakotoKurauchi-helix_froggy.webp │ │ │ ├── NeonSpork.png │ │ │ ├── Vermoot.png │ │ │ ├── aidancz.webp │ │ │ ├── alper.png │ │ │ ├── alterecco-zmk.png │ │ │ ├── bingocaller.png │ │ │ ├── bpruitt_goddard.png │ │ │ ├── brandonschlack.png │ │ │ ├── datagrok.png │ │ │ ├── dbroqua.png │ │ │ ├── dchenex.webp │ │ │ ├── default-ferris.png │ │ │ ├── dickiedyce-corneish_zen.png │ │ │ ├── dovenyi.png │ │ │ ├── eldritch_elder-splaytoraid40.webp │ │ │ ├── fculpo.png │ │ │ ├── fluffactually.png │ │ │ ├── fsck-eco.png │ │ │ ├── ishtob.png │ │ │ ├── josefadamcik.png │ │ │ ├── jwon.png │ │ │ ├── kawamashi.webp │ │ │ ├── khitsule-atreus.png │ │ │ ├── khitsule-iris.png │ │ │ ├── kkga.png │ │ │ ├── konomu.png │ │ │ ├── lehoff.png │ │ │ ├── lolo.png │ │ │ ├── magicmonty.png │ │ │ ├── markstos.png │ │ │ ├── nerdypepper.png │ │ │ ├── nfriend.png │ │ │ ├── optozorax.webp │ │ │ ├── pfn.png │ │ │ ├── precondition.jpg │ │ │ ├── purple_rw.jpg │ │ │ ├── ranzq.png │ │ │ ├── ratoru.webp │ │ │ ├── rytjens.webp │ │ │ ├── scylla_german_gaming.webp │ │ │ ├── seancolsen.webp │ │ │ ├── shaykalyan.webp │ │ │ ├── smt-minivan.png │ │ │ ├── t00mietum.png │ │ │ ├── timeopochin-rsi_terminated.png │ │ │ ├── trguhq.webp │ │ │ ├── tw1t611.png │ │ │ ├── tynanbe.jpg │ │ │ ├── via-charybdis_nano.webp │ │ │ ├── wochap.webp │ │ │ ├── xsznix.jpg │ │ │ └── yhaliaw.png │ │ └── no-image.svg │ ├── js │ │ ├── card.js │ │ ├── dual_sliders_conf.js │ │ ├── filter_keymaps.js │ │ ├── main.js │ │ ├── nouislider.js │ │ ├── search.js │ │ └── sidebar_filters.js │ └── svg │ │ ├── OS │ │ ├── Linux.svg │ │ ├── MacOS.svg │ │ └── Windows.svg │ │ └── logo │ │ └── light.svg ├── index.njk ├── misc │ ├── bundle.js.njk │ ├── bundle_extras.js.njk │ ├── filter_keymaps.js.njk │ ├── keymaps_metadata.json.njk │ ├── misc.11tydata.js │ ├── robots.txt.njk │ └── sitemap.xml.njk └── posts │ └── keymaps │ ├── 0xcharly.md │ ├── ARTSEY.md │ ├── AlaaSaadAbdo.md │ ├── Dakes.md │ ├── DesyncTheThird.md │ ├── JannikWibker.md │ ├── Lysquid.md │ ├── MakotoKurauchi-helix_froggy.md │ ├── MattSturgeon.md │ ├── MicahElliot.md │ ├── NeonSpork.md │ ├── ScriBanana.md │ ├── Vermoot.md │ ├── Wimads.md │ ├── aidancz.md │ ├── ajarov.md │ ├── alper.md │ ├── alterecco-zmk.md │ ├── alvaro_prieto.md │ ├── andrewjrae.md │ ├── archydragon.md │ ├── argenkiwi.md │ ├── bingocaller.md │ ├── bpruitt_goddard.md │ ├── braindefender-wellum.md │ ├── brandonschlack.md │ ├── bsag.md │ ├── caksoylar.md │ ├── callum_oakley.md │ ├── casuanoob.md │ ├── chaosk.md │ ├── chusecubr.md │ ├── cyb3rkun.md │ ├── daisukekoba.md │ ├── dasmikko.md │ ├── datagrok.md │ ├── dbroqua.md │ ├── dchenex.md │ ├── default-ferris.md │ ├── default-kyria.md │ ├── dickiedyce-corneish_zen.md │ ├── dlip-engram.md │ ├── dolie.md │ ├── dovenyi.md │ ├── dschil138.md │ ├── duckyb.md │ ├── eldritch_elder-splaytoraid40.md │ ├── fculpo.md │ ├── ferrance.md │ ├── finex.md │ ├── fluffactually.md │ ├── frogmouth-kyria-rsthd_prime.md │ ├── fsck-eco.md │ ├── getreuer.md │ ├── gfolgert.md │ ├── godalming123.md │ ├── grassfedreeve.md │ ├── h_youhei.md │ ├── haraldkubota.md │ ├── isaacsa51-halcyon_kyria.md │ ├── isaacsa51.md │ ├── ishtob.md │ ├── jcmkk3.md │ ├── josefadamcik.md │ ├── jporter_dev.md │ ├── justinmklam.md │ ├── jwon.md │ ├── kawamashi.md │ ├── keymaps.11tydata.js │ ├── khitsule-atreus.md │ ├── khitsule-iris.md │ ├── kkga.md │ ├── konomu.md │ ├── lehoff.md │ ├── lolo.md │ ├── lucordes.md │ ├── magicmonty.md │ ├── manna_harbour.md │ ├── markstos.md │ ├── matobaa-braille.md │ ├── mattgemmell.md │ ├── metheon.md │ ├── minusfive.md │ ├── mrkskk.md │ ├── nerdypepper.md │ ├── nfriend.md │ ├── optozorax.md │ ├── pcoves.md │ ├── peterxjang.md │ ├── pfn.md │ ├── precondition.md │ ├── pseudoku-ergowarp.md │ ├── purple_rw.md │ ├── rafaelromao.md │ ├── ranzq.md │ ├── ratoru.md │ ├── rayduck.md │ ├── rearman.md │ ├── reinier.md │ ├── rootiest.md │ ├── rstacruz.md │ ├── rytjens.md │ ├── sartak.md │ ├── scylla_german_gaming.md │ ├── seancolsen.md │ ├── sennomo-stifluqz.md │ ├── shaykalyan.md │ ├── skychil.md │ ├── smallcat.md │ ├── smt-minivan.md │ ├── squizzler.md │ ├── stevep99.md │ ├── t00mietum.md │ ├── theol0403.md │ ├── timeopochin-oat_y.md │ ├── timeopochin-rsi_terminated.md │ ├── treeman.md │ ├── trguhq.md │ ├── tw1t611.md │ ├── tynanbe.md │ ├── ulounge.md │ ├── urob.md │ ├── via-charybdis_nano.md │ ├── vvhg1.md │ ├── waffle87.md │ ├── waynehoover.md │ ├── wochap.md │ ├── xsznix.md │ ├── yaelol1.md │ ├── yhaliaw.md │ └── zzkt.md └── tailwind.config.js /.eleventy.js: -------------------------------------------------------------------------------- 1 | const pluginTailwind = require('eleventy-plugin-tailwindcss'); 2 | 3 | module.exports = (config) => { 4 | config.addPlugin(pluginTailwind, { 5 | src: 'src/assets/css/*', 6 | // excludeNonCssFiles is bugged in 7 | // eleventy-plugin-tailwindcss@0.3.0 (git+ssh://git@github.com/dafiulh/eleventy-plugin-tailwindcss.git#c8b8d4d7419e2f5fcf4483b8556cce163bd4d0a9). 8 | // See https://github.com/dafiulh/eleventy-plugin-tailwindcss/pull/34 9 | excludeNonCssFiles: false 10 | }); 11 | 12 | config.setDataDeepMerge(true); 13 | 14 | config.addPassthroughCopy('src/assets/img/**/*'); 15 | config.addPassthroughCopy({ 'src/posts/img/**/*': 'assets/img/' }); 16 | 17 | config.addPassthroughCopy('src/assets/svg/'); 18 | 19 | config.addWatchTarget("src/assets/js/"); 20 | 21 | config.addLayoutAlias('default', 'layouts/default.njk'); 22 | config.addLayoutAlias('post', 'layouts/post.njk'); 23 | 24 | config.addFilter('readableDate', require('./lib/filters/readableDate')); 25 | config.addFilter('minifyJs', require('./lib/filters/minifyJs')); 26 | 27 | config.addTransform('minifyHtml', require('./lib/transforms/minifyHtml')); 28 | 29 | config.addCollection('posts', require('./lib/collections/posts')); 30 | config.addCollection('tagList', require('./lib/collections/tagList')); 31 | config.addCollection('pagedPosts', require('./lib/collections/pagedPosts')); 32 | config.addCollection('pagedPostsByTag', require('./lib/collections/pagedPostsByTag')); 33 | 34 | // The difference between `uniq` and `unique` is that the former assumes the input collection 35 | // is already sorted, which lets it drop the duplicates in a more efficient way. 36 | config.addNunjucksFilter("uniq", sortedColl => sortedColl.filter(function(item, pos, ar) { 37 | if (pos === 0) { return true; } 38 | return item != ar[pos - 1]; 39 | })); 40 | config.addNunjucksFilter("unique", coll => [...new Set(coll)]); 41 | config.addNunjucksFilter("flatten", coll => coll.flat()); 42 | config.addNunjucksFilter("mapToDbField", (coll, dbField) => coll.map(x => x.data[dbField])); 43 | config.addNunjucksFilter("oxfordJoin", coll => coll.length < 2 ? coll.join(", ") : coll.slice(0, -1).join(", ") + ", and " + coll[coll.length-1]); 44 | config.addNunjucksFilter("isArray", coll => Array.isArray(coll)); 45 | 46 | config.addShortcode("currentYear", () => `${new Date().getFullYear()}`); 47 | 48 | config.setQuietMode(true); 49 | 50 | // Serve GitHub Pages site from a custom domain 51 | config.addPassthroughCopy("CNAME"); 52 | 53 | return { 54 | dir: { 55 | input: 'src', 56 | output: 'dist' 57 | }, 58 | pathPrefix: "/", 59 | templateFormats: ['md', 'njk', 'html'], 60 | dataTemplateEngine: 'njk', 61 | markdownTemplateEngine: 'njk' 62 | }; 63 | }; 64 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: [precondition] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry 13 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 14 | -------------------------------------------------------------------------------- /.github/workflows/broken-links-crawler.yml: -------------------------------------------------------------------------------- 1 | name: Broken Links Crawler 2 | on: 3 | workflow_dispatch: 4 | push: 5 | branches: 6 | - master 7 | schedule: 8 | # * is a special character in YAML so you have to quote this string 9 | - cron: '35 13 5,19 * *' 10 | jobs: 11 | crawl_for_broken_links: 12 | runs-on: ubuntu-latest 13 | name: Broken-Links-Crawler 14 | steps: 15 | - name: Debug Action 16 | uses: hmarr/debug-action@v1.0.0 17 | - name: Checking broken links 18 | id: check-broken-links 19 | uses: ScholliYT/Broken-Links-Crawler-Action@v3.3.1 20 | with: 21 | website_url: "https://keymapdb.com" 22 | exclude_url_prefix: "/assets,https://mechdb.net" 23 | max_retries: 2 24 | # The crawler stops going deeper once it leaves the keymapdb domain 25 | # so it won't accidentally crawl the whole web even if you put -1. 26 | max_depth: -1 27 | verbose: true 28 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: Build Eleventy 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | 8 | jobs: 9 | build: 10 | runs-on: ubuntu-22.04 11 | 12 | strategy: 13 | matrix: 14 | node-version: [16.x] 15 | 16 | steps: 17 | - uses: actions/checkout@v2 18 | 19 | - name: Use Node.js ${{ matrix.node-version }} 20 | uses: actions/setup-node@v1 21 | with: 22 | node-version: ${{ matrix.node-version }} 23 | 24 | - name: Reconfigure git to use HTTP authentication 25 | run: > 26 | git config --global url."https://github.com/".insteadOf 27 | ssh://git@github.com/ 28 | 29 | - name: Install dependencies & build 30 | run: | 31 | npm ci 32 | npm run build 33 | 34 | - name: Deploy 35 | uses: peaceiris/actions-gh-pages@v3 36 | with: 37 | publish_dir: ./dist 38 | github_token: ${{ secrets.GITHUB_TOKEN }} 39 | 40 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Diagnostic reports (https://nodejs.org/api/report.html) 10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | *.lcov 24 | 25 | # nyc test coverage 26 | .nyc_output 27 | 28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 29 | .grunt 30 | 31 | # Bower dependency directory (https://bower.io/) 32 | bower_components 33 | 34 | # node-waf configuration 35 | .lock-wscript 36 | 37 | # Compiled binary addons (https://nodejs.org/api/addons.html) 38 | build/Release 39 | 40 | # Dependency directories 41 | node_modules/ 42 | jspm_packages/ 43 | 44 | # TypeScript v1 declaration files 45 | typings/ 46 | 47 | # TypeScript cache 48 | *.tsbuildinfo 49 | 50 | # Optional npm cache directory 51 | .npm 52 | 53 | # Optional eslint cache 54 | .eslintcache 55 | 56 | # Microbundle cache 57 | .rpt2_cache/ 58 | .rts2_cache_cjs/ 59 | .rts2_cache_es/ 60 | .rts2_cache_umd/ 61 | 62 | # Optional REPL history 63 | .node_repl_history 64 | 65 | # Output of 'npm pack' 66 | *.tgz 67 | 68 | # Yarn Integrity file 69 | .yarn-integrity 70 | 71 | # dotenv environment variables file 72 | .env 73 | .env.test 74 | 75 | # parcel-bundler cache (https://parceljs.org/) 76 | .cache 77 | 78 | # Next.js build output 79 | .next 80 | 81 | # Nuxt.js build / generate output 82 | .nuxt 83 | dist 84 | 85 | # Gatsby files 86 | .cache/ 87 | # Comment in the public line in if your project uses Gatsby and *not* Next.js 88 | # https://nextjs.org/blog/next-9-1#public-directory-support 89 | # public 90 | 91 | # vuepress build output 92 | .vuepress/dist 93 | 94 | # Serverless directories 95 | .serverless/ 96 | 97 | # FuseBox cache 98 | .fusebox/ 99 | 100 | # DynamoDB Local files 101 | .dynamodb/ 102 | 103 | # TernJS port file 104 | .tern-port 105 | 106 | # Local Netlify folder 107 | .netlify 108 | 109 | # ctags 110 | **/tags 111 | 112 | # .DS_Store 113 | .DS_Store 114 | 115 | # Gimp files 116 | **/*.xcf 117 | -------------------------------------------------------------------------------- /CNAME: -------------------------------------------------------------------------------- 1 | keymapdb.com 2 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # KeymapDB 2 | 3 | A simple static database of keymaps using Eleventy and Tailwind CSS 4 | 5 | ## Getting Started 6 | 1. Clone this repository 7 | ```bash 8 | git clone git@github.com:precondition/keymapdb.git 9 | ``` 10 | 2. Navigate to the directory 11 | ```bash 12 | cd keymapdb 13 | ``` 14 | 3. Install dependencies 15 | ```bash 16 | npm install 17 | ``` 18 | 19 | ### Use in development 20 | ```bash 21 | npm start 22 | ``` 23 | 24 | ### Build for production 25 | ```bash 26 | npm run build 27 | ``` 28 | 29 | ### For debugging purposes 30 | ```bash 31 | npm run debug 32 | ``` 33 | 34 | ## Configuration 35 | To change the title, description, author data, menu/nav item, etc, go to `src/_data/`. 36 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

Treasure map on a keycapKeymapDB

2 | 3 | 4 | An online and open-source database of keymaps for programmable keyboards, with a focus on QMK ergonomic keyboards, served over a static website at https://keymapdb.com. 5 | 6 | ![Screenshots of keymapdb.com on all devices by ami.responsivedesign.is](screens_mock.png) 7 | 8 | Browse a curated collection of full-fledged keymaps like [Miryoku](https://keymapdb.com/manna_harbour) that don't shy away from breaking the conventions dating from the typewriter age. 9 | 10 | Looking for something specific? Filter the user-submitted keymaps with the help of the many available options in the sidebar. You can filter by key count, firmware, keyboard, stagger, languages, OS, and more! 11 | 12 | ## Contributing 13 | 14 | Want to add your own keymap to the site? Follow the instructions outlined in “[How to submit a keymap](how_to_submit_a_keymap.md)”. 15 | 16 | Want to improve the website code itself? Read “[CONTRIBUTING](CONTRIBUTING.md)” for pointers on how to set up the local dev environment. 17 | -------------------------------------------------------------------------------- /how_to_submit_a_keymap.md: -------------------------------------------------------------------------------- 1 | # Submitting a keymap to keymapdb.com 2 | 3 | Here are the steps to follow in order to submit a new keymap to keymapdb.com. A GitHub account will be required. 4 | 5 | 1. Fork this repository 6 | 2. Clone your fork 7 | 3. Navigate to the `/src/posts/keymaps` directory (`cd keymapdb/src/posts/keymaps`). 8 | 4. Create a new file with the `.md` extension, named after your username. All hyphens, "-", present in your username must be replaced with an underscore, "\_" (this substitution is not necessary in the "author" field, it is only necessary in the file name). For example, if my username is "week-end", I would create a file called `week_end.md` and write `author: week-end` inside. 9 |

10 | In the rare case if you've made two or more *considerably different* keymaps (e.g. a main, daily driver, dactyl keymap and an experimental 7-key one-handed Macedonian keymap), you can disambiguate the file names of your keymaps by appending an extra chunk of identifiable information after your username and a hyphen, like so: `-.md`. The extra chunk should preferably use `snake_case` over `kebab-case`.
11 | Examples: `week_end.md` and `week_end-one_handed.md` or `week_end-dactyl.md` and `week_end-chorded_macedonian.md`. 12 | 13 | 5. Copy-paste the following template: 14 | ```yaml 15 | --- 16 | author: 17 | baseLayouts: # [QWERTY, Colemak, Dvorak, ...] 18 | firmwares: # [QMK, ZMK, KMonad] 19 | hasHomeRowMods: # true or false 20 | hasLetterOnThumb: # true or false 21 | hasRotaryEncoder: # true or false 22 | isAutoShiftEnabled: # true or false 23 | isComboEnabled: # true or false 24 | isSplit: # true or false 25 | isTapDanceEnabled: # true or false 26 | keybindings: # [Vim, Emacs, Kakoune, Graphics/CAD, TWM, Spreadsheets, Gaming] 27 | keyboard: # Kyria or Corne or Dactyl Manuform 5x6 or ... 28 | keyCount: 29 | keymapImage: 30 | keymapUrl: 31 | languages: # [English, Spanish, ...] 32 | layerCount: 33 | OS: # [Windows, MacOS, Linux, Android] 34 | stagger: # row or columnar or ortholinear 35 | summary: # Short summary of max. 60 words 36 | title: 37 | writeup: # not mandatory 38 | --- 39 | ``` 40 | 6. Look up the [database fields reference](db_fields_reference.md) document to figure out how to fill in the blanks / replace the comments after the colons. 41 | 7. Make sure that the leading `---` is the first line in the file. 42 | 8. Make sure to leave a single space after each colon. In other words, it should look like `key: value`. `key:value` is not correct. 43 | 9. Save and git commit the file 44 | 10. Open a merge/pull request to https://github.com/precondition/keymapdb that targets the `main` branch. 45 | 11. Wait 46 | -------------------------------------------------------------------------------- /lib/collections/pagedPosts.js: -------------------------------------------------------------------------------- 1 | const siteData = require('../../src/_data/site'); 2 | 3 | module.exports = (coll) => { 4 | const allPosts = require('./posts')(coll); 5 | 6 | const maxPostsPerPage = siteData.paginate; 7 | const numberOfPages = Math.ceil(allPosts.length / maxPostsPerPage); 8 | const pagedPosts = []; 9 | 10 | for (let pageNum = 1; pageNum <= numberOfPages; pageNum++) { 11 | const sliceFrom = (pageNum - 1) * maxPostsPerPage; 12 | const sliceTo = sliceFrom + maxPostsPerPage; 13 | 14 | pagedPosts.push({ 15 | number: pageNum, 16 | posts: allPosts.slice(sliceFrom, sliceTo), 17 | first: pageNum === 1, 18 | last: pageNum === numberOfPages 19 | }); 20 | } 21 | 22 | return pagedPosts; 23 | }; 24 | -------------------------------------------------------------------------------- /lib/collections/pagedPostsByTag.js: -------------------------------------------------------------------------------- 1 | const siteData = require('../../src/_data/site'); 2 | 3 | module.exports = (coll) => { 4 | const tagList = require('./tagList')(coll); 5 | 6 | const maxPostsPerPage = siteData.paginate; 7 | const pagedPosts = []; 8 | 9 | Object.keys(tagList).forEach((tagName) => { 10 | const taggedPosts = [...coll.getFilteredByTag(tagName)].reverse(); 11 | const numberOfPages = Math.ceil(taggedPosts.length / maxPostsPerPage); 12 | 13 | for (let pageNum = 1; pageNum <= numberOfPages; pageNum++) { 14 | const sliceFrom = (pageNum - 1) * maxPostsPerPage; 15 | const sliceTo = sliceFrom + maxPostsPerPage; 16 | 17 | pagedPosts.push({ 18 | tagName, 19 | number: pageNum, 20 | posts: taggedPosts.slice(sliceFrom, sliceTo), 21 | first: pageNum === 1, 22 | last: pageNum === numberOfPages 23 | }); 24 | } 25 | }); 26 | 27 | return pagedPosts; 28 | }; 29 | -------------------------------------------------------------------------------- /lib/collections/posts.js: -------------------------------------------------------------------------------- 1 | function compare(a, b) { 2 | if (a > b) { 3 | return +1; 4 | } else if (a < b) { 5 | return -1; 6 | } else { 7 | return 0; 8 | } 9 | } 10 | 11 | module.exports = (coll) => { 12 | const posts = [...coll.getFilteredByGlob('src/posts/keymaps/*.md')]; 13 | 14 | // Case-insensitive sort by keymap name/title 15 | return posts.sort((a, b) => compare(a.data.title.toLowerCase(), b.data.title.toLowerCase())); 16 | }; 17 | -------------------------------------------------------------------------------- /lib/collections/tagList.js: -------------------------------------------------------------------------------- 1 | function fromEntries (iterable) { 2 | return [...iterable].reduce((obj, [key, val]) => { 3 | obj[key] = val; 4 | 5 | return obj; 6 | }, {}); 7 | } 8 | 9 | /* Collection output format: 10 | { 11 | tagName: numberOfPostsWithTagName, 12 | ... 13 | } 14 | */ 15 | module.exports = (coll) => { 16 | const posts = require('./posts')(coll); 17 | 18 | const tagListArr = posts 19 | .reduce((tags, post) => { 20 | if ('tags' in post.data) { 21 | tags = tags.concat(post.data.tags); 22 | } 23 | 24 | return [...new Set(tags)]; 25 | }, []) 26 | .map((tag) => ([ 27 | tag, 28 | coll.getFilteredByTag(tag).length 29 | ])) 30 | .sort((a, b) => b[1] - a[1]); 31 | 32 | return fromEntries(tagListArr); 33 | }; 34 | -------------------------------------------------------------------------------- /lib/filters/minifyJs.js: -------------------------------------------------------------------------------- 1 | const { minify } = require('terser'); 2 | 3 | module.exports = (code) => { 4 | if (process.env.NODE_ENV === 'production') { 5 | const minified = minify(code); 6 | 7 | if (minified.error) { 8 | console.error('Terser error: ', minified.error); 9 | 10 | return code; 11 | } 12 | 13 | return minified.code; 14 | } 15 | 16 | return code; 17 | }; 18 | -------------------------------------------------------------------------------- /lib/filters/readableDate.js: -------------------------------------------------------------------------------- 1 | const { DateTime } = require('luxon'); 2 | 3 | module.exports = (date) => { 4 | return DateTime.fromJSDate(date, { zone: 'utc' }).toFormat('d LLLL yyyy hh:mm a'); 5 | }; 6 | -------------------------------------------------------------------------------- /lib/transforms/minifyHtml.js: -------------------------------------------------------------------------------- 1 | const htmlmin = require('html-minifier'); 2 | 3 | module.exports = (content, outputPath) => { 4 | if (process.env.NODE_ENV === 'production' && outputPath.endsWith('.html')) { 5 | return htmlmin.minify(content, { 6 | useShortDoctype: true, 7 | removeComments: true, 8 | collapseWhitespace: true 9 | }); 10 | } 11 | 12 | return content; 13 | }; 14 | -------------------------------------------------------------------------------- /netlify.toml: -------------------------------------------------------------------------------- 1 | [build] 2 | publish = "dist" 3 | command = "npm run build" -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "keymapdb", 3 | "version": "1.0.0", 4 | "description": "", 5 | "scripts": { 6 | "clean": "rimraf dist", 7 | "start": "npm run serve", 8 | "serve": "npm run clean && cross-env NODE_ENV=development eleventy --serve", 9 | "watch": "npm run clean && cross-env NODE_ENV=development eleventy --watch", 10 | "build": "npm run clean && cross-env NODE_ENV=production eleventy", 11 | "debug": "DEBUG=Eleventy* npm run build" 12 | }, 13 | "repository": { 14 | "type": "git", 15 | "url": "git+https://github.com/precondition/keymapdb.git" 16 | }, 17 | "author": "Vladislav K.", 18 | "license": "MIT", 19 | "bugs": { 20 | "url": "https://github.com/precondition/keymapdb/issues" 21 | }, 22 | "homepage": "https://github.com/precondition/keymapdb#readme", 23 | "devDependencies": { 24 | "@11ty/eleventy": "^1.0.0", 25 | "@tailwindcss/typography": "^0.3.1", 26 | "cross-env": "^7.0.3", 27 | "html-minifier": "^4.0.0", 28 | "luxon": "^2.5.2", 29 | "rimraf": "^3.0.2", 30 | "terser": "^4.8.1" 31 | }, 32 | "dependencies": { 33 | "@11ty/eleventy-upgrade-help": "^1.0.1", 34 | "@tailwindcss/forms": "^0.2.1", 35 | "eleventy-plugin-tailwindcss": "github:dafiulh/eleventy-plugin-tailwindcss" 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /screens_mock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/screens_mock.png -------------------------------------------------------------------------------- /src/404.njk: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Page Not Found 4 | permalink: 404.html 5 | --- 6 | 7 |
8 |
{% include "icons/frown.svg" %}
9 |
10 |

404

11 |

Oops! It seems you are lost

12 |

The page you're looking for might have been removed, had its name changed or is temporarily unavailable.

13 | Return to homepage 14 |
15 |
16 | -------------------------------------------------------------------------------- /src/_data/db_fields.json: -------------------------------------------------------------------------------- 1 | [ 2 | "title", 3 | "keymapUrl", 4 | "author", 5 | "keymapImage", 6 | "keyCount", 7 | "firmwares", 8 | "keyboard", 9 | "baseLayouts", 10 | "stagger", 11 | "isSplit", 12 | "languages", 13 | "summary", 14 | "OS", 15 | "keybindings", 16 | "writeup", 17 | "hasRotaryEncoder", 18 | "hasLetterOnThumb", 19 | "layerCount", 20 | "hasHomeRowMods", 21 | "isTapDanceEnabled", 22 | "isComboEnabled", 23 | "isAutoShiftEnabled" 24 | ] 25 | -------------------------------------------------------------------------------- /src/_data/maintainer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "precondition", 3 | "homepage": "https://github.com/precondition", 4 | "bio": "Interested in keyboards", 5 | "avatar": "https://i.imgur.com/tse467Z.jpg", 6 | "email": "your_email@example.com" 7 | } 8 | -------------------------------------------------------------------------------- /src/_data/menu.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "label": "About", 4 | "url": "/about" 5 | }, 6 | { 7 | "label": "GitHub", 8 | "url": "https://github.com/precondition/keymapdb", 9 | "newTab": true 10 | } 11 | ] 12 | -------------------------------------------------------------------------------- /src/_data/process.js: -------------------------------------------------------------------------------- 1 | // DON'T CHANGE !! 2 | module.exports = { 3 | environment: process.env.NODE_ENV 4 | }; 5 | -------------------------------------------------------------------------------- /src/_data/site.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | title: 'KeymapDB', 3 | shortDescription: "Database of keymaps for programmable keyboards", 4 | description: "KeymapDB is a public and open-source online database for keymaps of programmable keyboards, with a focus on QMK ergonomic mechanical keyboards. You can filter user-submitted keymaps like Miryoku by key count, firmware, keyboard, stagger, languages, OS, home row mods, and more!", 5 | keywords: ["QMK", "keyboard", "keymap", "remapping", "database", "open-source", "mechanical keyboards", "ergomech", "keycap", "custom", "customization", "ZMK", "typing", "touchtyping", "macros", "inspiration", "ideas", "QWERTY", "Colemak", "Dvorak", "keyboard layout"], 6 | // how many posts you want to show for each page 7 | paginate: 18, 8 | // WARNING: This assumes that the pathPrefix is "/" 9 | logo: '/assets/svg/logo/light.svg' 10 | }; 11 | -------------------------------------------------------------------------------- /src/_includes/icons/frown.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/_includes/icons/menu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/_includes/icons/search.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/_includes/layouts/default.njk: -------------------------------------------------------------------------------- 1 | {%- set metaTitle -%} 2 | {%- if not title -%}{{ site.title }} - {{ site.shortDescription | safe }} 3 | {%- else -%}{{ title | safe }} | {{ site.title }} 4 | {%- endif -%} 5 | {%- endset -%} 6 | {%- set metaDesc -%} 7 | {%- if not description -%}{{ site.description | safe }} 8 | {%- else -%}{{ description | safe }} 9 | {%- endif -%} 10 | {%- endset -%} 11 | {%- set metaKeywords -%} 12 | {%- if tags -%}{%- for tag in tags -%}{{ tag }},{%- endfor -%}{%- endif -%} 13 | {%- if site.keywords -%} 14 | {%- for keyword in site.keywords -%} 15 | {{ keyword }}{%- if not loop.last %},{% endif -%} 16 | {%- endfor -%} 17 | {%- endif -%} 18 | {%- endset -%} 19 | {%- set metaAuthor -%} 20 | {%- if author -%} 21 | {{ author }} 22 | {%- else -%} 23 | {{ maintainer.name }} 24 | {%- endif -%} 25 | {%- endset -%} 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | {{ metaTitle }} 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | {% if ogImage -%} 46 | 47 | 48 | 49 | {%- endif %} 50 | {% if imageAlt -%} 51 | 52 | {%- endif %} 53 | {# page.url might not be an appropriate value for og:url #} 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | {##} 62 | {##} 63 | {##} 64 | {##} 65 | {##} 66 | 67 | 68 | {% if isMainScreen %} 69 | 70 | {% endif %} 71 | 72 | 73 | 74 | 75 | {% include "partials/header.njk" %} 76 |
77 | {{ content | safe }} 78 |
79 | {% include "partials/footer.njk" %} 80 | 81 | {% if isMainScreen %} 82 | 83 | 84 | {% endif %} 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /src/_includes/layouts/keymapdb_entry.njk: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | # TODO: remove those defaults 4 | hasRotaryEncoder: false 5 | isTapDanceEnabled: false 6 | isComboEnabled: false 7 | isAutoShiftEnabled: false 8 | keybindings: [] 9 | --- 10 | 11 | {% from "macros/boolean_to_yes_no.njk" import booleanToYesNo %} 12 | {% from "macros/show_categorical_array.njk" import showCategoricalArray %} 13 | 14 | {% if isSplit %} 15 | {% set splitStatus = "Split" %} 16 | {% else %} 17 | {% set splitStatus = "Non-split" %} 18 | {% endif %} 19 | 20 |
21 |
22 |

{{ title }}

23 |

Author: {{ author }}

24 | {% if keymapImage %} 25 | 26 | {{ imageAlt }} 32 | 33 | {% endif %} 34 |
35 |
36 | {% if summary -%} 37 | {% if summary | isArray %} 38 |
    39 | {% for bulletpoint in summary %} 40 |
  • {{ bulletpoint | safe }}
  • 41 | {% endfor %} 42 |
43 | {% else %} 44 |

{{ summary | safe }}

45 | {%- endif %} 46 | {% endif %} 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | {% if keymapUrl %} 125 | 126 | {% else %} 127 | 128 | {% endif %} 129 | 130 | 131 | 132 | {% if writeup %} 133 | 134 | {% else %} 135 | 136 | {% endif %} 137 | 138 | 139 |
Keyboard
Keyboard Name{{ keyboard }}
Stagger{{ stagger | title }}
Key Count{{ keyCount }}
Split{{ booleanToYesNo(isSplit) }}
Rotary Encoder(s){{ booleanToYesNo(hasRotaryEncoder) }}
Firmware(s){{ showCategoricalArray(firmwares, "N/A") }}
Keymap
Base Layout(s){{ showCategoricalArray(baseLayouts, "N/A") }}
Language(s){{ showCategoricalArray(languages, "N/A") }}
Letter(s) on thumb{{ booleanToYesNo(hasLetterOnThumb) }}
Layer Count{{ layerCount }}
Firmware Features
Home Row Mods{{ booleanToYesNo(hasHomeRowMods) }}
Combos{{ booleanToYesNo(isComboEnabled) }}
Tap Dance{{ booleanToYesNo(isTapDanceEnabled) }}
Auto Shift{{ booleanToYesNo(isAutoShiftEnabled) }}
Use Case
OS{{ showCategoricalArray(OS, "N/A") }}
Special Keybinding Schemes{{ showCategoricalArray(keybindings, "None") }}
Links
Keymap Folder{{ keymapUrl | replace('/', '/') | safe }}N/A
Write-Up{{ writeup | replace('/', '/') | safe }}N/A
140 |
141 |
142 | -------------------------------------------------------------------------------- /src/_includes/macros/boolean_to_yes_no.njk: -------------------------------------------------------------------------------- 1 | {% macro booleanToYesNo(bool) %} 2 | {%- if bool -%} 3 | Yes ✅ 4 | {%- else -%} 5 | No ❌ 6 | {%- endif -%} 7 | {% endmacro %} 8 | -------------------------------------------------------------------------------- /src/_includes/macros/show_categorical_array.njk: -------------------------------------------------------------------------------- 1 | {% macro showCategoricalArray(arr, placeholder) %} 2 | {{ arr | join(", ") if arr | length > 0 else placeholder }} 3 | {% endmacro %} 4 | -------------------------------------------------------------------------------- /src/_includes/macros/yes_no_switch_field.njk: -------------------------------------------------------------------------------- 1 | {% macro YesNo(legend, dbFieldName) %} 2 |
3 | {{ legend }} 4 | 5 | 6 | 7 | 8 |
9 | {% endmacro %} 10 | -------------------------------------------------------------------------------- /src/_includes/partials/disqus.njk: -------------------------------------------------------------------------------- 1 |
2 | -------------------------------------------------------------------------------- /src/_includes/partials/footer.njk: -------------------------------------------------------------------------------- 1 |
2 |
3 | {# Copyleft SVG code taken from Wikimedia (https://upload.wikimedia.org/wikipedia/commons/8/8b/Copyleft.svg, upload date 2016 May 20 19:43) #} 4 | 5 | Copyleft 6 | 7 | 8 | {% currentYear %} {{ site.title }}. 9 | Made by {{ maintainer.name }} 10 | using Eleventy and Tailwind CSS. 11 |
12 |
13 | -------------------------------------------------------------------------------- /src/_includes/partials/header.njk: -------------------------------------------------------------------------------- 1 | 26 | -------------------------------------------------------------------------------- /src/_includes/partials/keymaps_metadata.json.njk: -------------------------------------------------------------------------------- 1 | [ 2 | {%- for post in collections.posts %} 3 | { 4 | 5 | "url": {{ post.url | url | dump | safe }}, 6 | "fileSlug": {{ post.fileSlug | url | dump | safe }}, 7 | {% for field in db_fields -%} 8 | "{{ field }}": {{ post.data[field] | dump | safe }}{% if not loop.last %},{% endif %} 9 | {% endfor %} 10 | }{% if not loop.last %},{% endif %} 11 | {%- endfor %} 12 | ] 13 | -------------------------------------------------------------------------------- /src/_includes/partials/paginator.njk: -------------------------------------------------------------------------------- 1 | {# The apparently redundant md:flow-root in paginator-container's 2 | tailwind classes is important in order to restore the paginator buttons 3 | when increasing the size of the viewport after having clicked the 4 | "Filters" button in the header (which calls the `toggleFullScreenSidebar` function) #} 5 |
6 | 13 | 14 | 21 |
22 | -------------------------------------------------------------------------------- /src/_includes/partials/post_grid.njk: -------------------------------------------------------------------------------- 1 | {% from "macros/show_categorical_array.njk" import showCategoricalArray %} 2 | 3 | {%- set lazyImage = "data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%20height%3D'500'%20width%3D'960'%20style%3D'background-color%3Argb(203%2C213%2C224)'%2F%3E" -%} 4 | {% for post in paged.posts %} 5 | {% if post.data.isSplit %} 6 | {% set splitStatus = "Split" %} 7 | {% else %} 8 | {% set splitStatus = "Non-split" %} 9 | {% endif %} 10 | 11 |
12 |
13 | 14 | {{ splitStatus }} {{ post.data.stagger }}-staggered {{ post.data.keyboard }} with {{ post.data.baseLayouts | oxfordJoin }} legends 20 | 21 |
22 | 25 |
26 |

{{ post.data.keyCount }} keys

27 |

{{ showCategoricalArray(post.data.languages, "N/A") }}

28 |
29 |

{{ post.data.layerCount }} layers

30 |

{{ showCategoricalArray(post.data.baseLayouts, "N/A") }}

31 |
32 | {% if post.data.summary -%} 33 | {% if post.data.summary | isArray %} 34 |
    35 | {% for bulletpoint in post.data.summary %} 36 |
  • {{ bulletpoint }}
  • 37 | {% endfor %} 38 |
39 | {% else %} 40 |

{{ post.data.summary }}

41 | {% endif %} 42 | {%- endif %} 43 |

44 |
45 |
46 | {% endfor %} 47 | -------------------------------------------------------------------------------- /src/about.njk: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: About KeymapDB 4 | --- 5 | 6 |
7 | 8 | Treasure map on a keycap 9 | 10 |
11 |

12 | KeymapDB (“Keymap Database”) is a public and open-source online database for keymaps of programmable keyboards, with a focus on QMK ergonomic keyboards. Here, you'll find a curated list of keymaps to take inspiration from, with a slew of filters you can use to find the user-submitted keymaps that will interest you. 13 |

14 |

15 | KeymapDB is NOT: 16 |

    17 |
  • A collection of alpha keyboard layouts (Colemak, Dvorak, AZERTY, BEAKL, …). 18 | Better luck in the “Internet Letter Layout DB (ILLDB)”.
  • 19 |
  • A collection of mechanical keyboards. Visit MechDB if that's what you want.
  • 20 |
21 |

22 | 23 |

24 | Do you wish to programmatically access the information of the database? This is possible by querying 25 | keymapdb.com/keymaps_metadata.json. 26 |

27 |

28 | Want to add your own keymap to the site? Follow the instructions outlined in “How to submit a keymap”. 29 |

30 |
31 |
32 | -------------------------------------------------------------------------------- /src/assets/css/extras.css: -------------------------------------------------------------------------------- 1 | .switch-field { 2 | display: flex; 3 | } 4 | 5 | .switch-field input { 6 | position: absolute !important; 7 | clip: rect(0, 0, 0, 0); 8 | height: 1px; 9 | width: 1px; 10 | border: 0; 11 | overflow: hidden; 12 | } 13 | 14 | .switch-field label { 15 | /*flex: 1 1 50%; */ 16 | background-color: #eeeee; 17 | color: rgba(0, 0, 0, 0.6); 18 | font-size: 14px; 19 | line-height: 1; 20 | text-align: center; 21 | padding: 8px 16px; 22 | margin-right: -1px; 23 | border: 1px solid rgba(0, 0, 0, 0.2); 24 | transition: all 0.1s ease-in-out; 25 | } 26 | 27 | .switch-field label:hover { 28 | cursor: pointer; 29 | } 30 | 31 | .switch-field input:focus + label { 32 | box-shadow: 0 0 0 2px rgb(37 99 235); /* border-blue-600 */ 33 | } 34 | 35 | .switch-field input:checked + label { 36 | background-color: #3584e4; 37 | color: #ffffff; 38 | } 39 | 40 | 41 | .switch-field label:first-of-type { 42 | border-radius: 4px 0 0 4px; 43 | } 44 | 45 | .switch-field label:last-of-type { 46 | border-radius: 0 4px 4px 0; 47 | } 48 | 49 | .slider-styled, 50 | .slider-styled .noUi-handle { 51 | box-shadow: none; 52 | } 53 | 54 | /* Hide markers on slider handles */ 55 | .slider-styled .noUi-handle::before, 56 | .slider-styled .noUi-handle::after { 57 | display: none; 58 | } 59 | 60 | .slider-styled { 61 | height: 10px; 62 | margin: 50px 20px 30px 0px; 63 | } 64 | 65 | .noUi-connect { 66 | background: #3584e4; 67 | } 68 | 69 | .noUi-horizontal .noUi-handle { 70 | height: 18px; 71 | width: 18px; 72 | top: -5px; 73 | /* !important is used to avoid `right` 74 | * from being overriden by the `right` rule 75 | * in `html:not([dir="rtl"]) .noUi-horizontal .noUi-handle` 76 | * in the nouislider.css file. 77 | */ 78 | right: -9px !important; /* half the width */ 79 | border-radius: 9px; 80 | } 81 | 82 | a.disabled { 83 | pointer-events: none; 84 | } 85 | 86 | svg { 87 | display: inline; 88 | margin-right: 0.125em; 89 | margin-left: 0.125em; 90 | } 91 | 92 | /* Inserting this collapsed row between two flex items will make 93 | * the flex item that comes after it break to a new row 94 | * Source: https://tobiasahlin.com/blog/flexbox-break-to-new-row/ */ 95 | .flexitems-break { 96 | flex-basis: 100%; 97 | height: 0; 98 | } 99 | 100 | /* Responsive CSS grid with no media queries by AndyBell Design */ 101 | /* Sources: https://archive.hankchizljaw.com/wrote/create-a-responsive-grid-layout-with-no-media-queries-using-css-grid/ */ 102 | #post-grid { 103 | --post-grid-min-size: 20em; 104 | 105 | display: grid; 106 | grid-template-columns: repeat(auto-fill, minmax(var(--post-grid-min-size), 1fr)); 107 | grid-gap: 1rem; 108 | max-width: 100%; 109 | } 110 | 111 | .postcard { 112 | height: fit-content; 113 | margin-bottom: 0.5rem; 114 | padding: 0.5rem; 115 | align-self: stretch; 116 | width: 100%; 117 | } 118 | 119 | .postcard:hover { 120 | transform: scale(1.15); 121 | } 122 | 123 | @keyframes thumbnail-slide { 124 | from {object-position: top;} 125 | to {object-position: bottom;} 126 | } 127 | 128 | .card-thumbnail:hover { 129 | animation-name: thumbnail-slide; 130 | animation-duration: 15s; 131 | animation-iteration-count: infinite; 132 | animation-timing-function: ease-in; 133 | animation-direction: alternate; 134 | } 135 | 136 | .button { 137 | @apply bg-white font-semibold py-2 px-4 border rounded shadow-md text-gray-800 cursor-pointer hover:bg-gray-100 138 | } 139 | 140 | .button:disabled, 141 | .button[disabled] { 142 | @apply bg-white font-semibold py-2 px-4 border rounded shadow-md text-gray-800 cursor-not-allowed text-opacity-75; 143 | } 144 | -------------------------------------------------------------------------------- /src/assets/css/main.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | @layer base { 6 | body { 7 | font-family: Inter,system-ui,-apple-system,BlinkMacSystemFont,helvetica,Arial,sans-serif; 8 | } 9 | } 10 | 11 | @layer utilities { 12 | .header-shadow { 13 | box-shadow: 0 3px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 5px -1px rgba(0, 0, 0, 0.06) 14 | } 15 | 16 | .visually-hidden { 17 | @apply block absolute h-px w-px overflow-hidden whitespace-nowrap; 18 | clip: rect(1px 1px 1px 1px); 19 | clip: rect(1px, 1px, 1px, 1px); 20 | clip-path: inset(1px); 21 | } 22 | } 23 | 24 | tbody tr:nth-child(odd) { 25 | background-color: #fafafa; 26 | } 27 | 28 | tbody th { 29 | background-color: #f1f1f1; 30 | } 31 | 32 | image, img, svg { 33 | color-scheme: light; 34 | } 35 | -------------------------------------------------------------------------------- /src/assets/img/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/apple-touch-icon.png -------------------------------------------------------------------------------- /src/assets/img/cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/cover.png -------------------------------------------------------------------------------- /src/assets/img/keymaps/Dakes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/Dakes.png -------------------------------------------------------------------------------- /src/assets/img/keymaps/MakotoKurauchi-helix_froggy.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/MakotoKurauchi-helix_froggy.webp -------------------------------------------------------------------------------- /src/assets/img/keymaps/NeonSpork.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/NeonSpork.png -------------------------------------------------------------------------------- /src/assets/img/keymaps/Vermoot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/Vermoot.png -------------------------------------------------------------------------------- /src/assets/img/keymaps/aidancz.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/aidancz.webp -------------------------------------------------------------------------------- /src/assets/img/keymaps/alper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/alper.png -------------------------------------------------------------------------------- /src/assets/img/keymaps/alterecco-zmk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/alterecco-zmk.png -------------------------------------------------------------------------------- /src/assets/img/keymaps/bingocaller.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/bingocaller.png -------------------------------------------------------------------------------- /src/assets/img/keymaps/bpruitt_goddard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/bpruitt_goddard.png -------------------------------------------------------------------------------- /src/assets/img/keymaps/brandonschlack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/brandonschlack.png -------------------------------------------------------------------------------- /src/assets/img/keymaps/datagrok.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/datagrok.png -------------------------------------------------------------------------------- /src/assets/img/keymaps/dbroqua.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/dbroqua.png -------------------------------------------------------------------------------- /src/assets/img/keymaps/dchenex.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/dchenex.webp -------------------------------------------------------------------------------- /src/assets/img/keymaps/default-ferris.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/default-ferris.png -------------------------------------------------------------------------------- /src/assets/img/keymaps/dickiedyce-corneish_zen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/dickiedyce-corneish_zen.png -------------------------------------------------------------------------------- /src/assets/img/keymaps/dovenyi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/dovenyi.png -------------------------------------------------------------------------------- /src/assets/img/keymaps/eldritch_elder-splaytoraid40.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/eldritch_elder-splaytoraid40.webp -------------------------------------------------------------------------------- /src/assets/img/keymaps/fculpo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/fculpo.png -------------------------------------------------------------------------------- /src/assets/img/keymaps/fluffactually.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/fluffactually.png -------------------------------------------------------------------------------- /src/assets/img/keymaps/fsck-eco.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/fsck-eco.png -------------------------------------------------------------------------------- /src/assets/img/keymaps/ishtob.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/ishtob.png -------------------------------------------------------------------------------- /src/assets/img/keymaps/josefadamcik.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/josefadamcik.png -------------------------------------------------------------------------------- /src/assets/img/keymaps/jwon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/jwon.png -------------------------------------------------------------------------------- /src/assets/img/keymaps/kawamashi.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/kawamashi.webp -------------------------------------------------------------------------------- /src/assets/img/keymaps/khitsule-atreus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/khitsule-atreus.png -------------------------------------------------------------------------------- /src/assets/img/keymaps/khitsule-iris.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/khitsule-iris.png -------------------------------------------------------------------------------- /src/assets/img/keymaps/kkga.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/kkga.png -------------------------------------------------------------------------------- /src/assets/img/keymaps/konomu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/konomu.png -------------------------------------------------------------------------------- /src/assets/img/keymaps/lehoff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/lehoff.png -------------------------------------------------------------------------------- /src/assets/img/keymaps/lolo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/lolo.png -------------------------------------------------------------------------------- /src/assets/img/keymaps/magicmonty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/magicmonty.png -------------------------------------------------------------------------------- /src/assets/img/keymaps/markstos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/markstos.png -------------------------------------------------------------------------------- /src/assets/img/keymaps/nerdypepper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/nerdypepper.png -------------------------------------------------------------------------------- /src/assets/img/keymaps/nfriend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/nfriend.png -------------------------------------------------------------------------------- /src/assets/img/keymaps/optozorax.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/optozorax.webp -------------------------------------------------------------------------------- /src/assets/img/keymaps/pfn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/pfn.png -------------------------------------------------------------------------------- /src/assets/img/keymaps/precondition.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/precondition.jpg -------------------------------------------------------------------------------- /src/assets/img/keymaps/purple_rw.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/purple_rw.jpg -------------------------------------------------------------------------------- /src/assets/img/keymaps/ranzq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/ranzq.png -------------------------------------------------------------------------------- /src/assets/img/keymaps/ratoru.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/ratoru.webp -------------------------------------------------------------------------------- /src/assets/img/keymaps/rytjens.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/rytjens.webp -------------------------------------------------------------------------------- /src/assets/img/keymaps/scylla_german_gaming.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/scylla_german_gaming.webp -------------------------------------------------------------------------------- /src/assets/img/keymaps/seancolsen.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/seancolsen.webp -------------------------------------------------------------------------------- /src/assets/img/keymaps/shaykalyan.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/shaykalyan.webp -------------------------------------------------------------------------------- /src/assets/img/keymaps/smt-minivan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/smt-minivan.png -------------------------------------------------------------------------------- /src/assets/img/keymaps/t00mietum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/t00mietum.png -------------------------------------------------------------------------------- /src/assets/img/keymaps/timeopochin-rsi_terminated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/timeopochin-rsi_terminated.png -------------------------------------------------------------------------------- /src/assets/img/keymaps/trguhq.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/trguhq.webp -------------------------------------------------------------------------------- /src/assets/img/keymaps/tw1t611.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/tw1t611.png -------------------------------------------------------------------------------- /src/assets/img/keymaps/tynanbe.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/tynanbe.jpg -------------------------------------------------------------------------------- /src/assets/img/keymaps/via-charybdis_nano.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/via-charybdis_nano.webp -------------------------------------------------------------------------------- /src/assets/img/keymaps/wochap.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/wochap.webp -------------------------------------------------------------------------------- /src/assets/img/keymaps/xsznix.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/xsznix.jpg -------------------------------------------------------------------------------- /src/assets/img/keymaps/yhaliaw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/precondition/keymapdb/48b2aeb9b6565cb1a5c2c085ddc2b2c926b55cc9/src/assets/img/keymaps/yhaliaw.png -------------------------------------------------------------------------------- /src/assets/img/no-image.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | No Image 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/js/card.js: -------------------------------------------------------------------------------- 1 | function oxfordJoin(coll) { 2 | return coll.length < 2 ? coll.join(", ") : coll.slice(0, -1).join(", ") + ", and " + coll[coll.length-1]; 3 | } 4 | 5 | async function getSVG(fieldName, fieldValue) { 6 | return fetch("{{ '/assets/svg/' | url }}" + fieldName + "/" + fieldValue + ".svg").then(res => res.ok ? res.text() : ""); 7 | } 8 | 9 | function card(post, postUrl) { 10 | const splitStatus = post.isSplit ? "Split" : "Non-split" 11 | const titleHover = post.title.toLowerCase().includes(post.author.toLowerCase()) ? '' : `title="by ${post.author}"`; 12 | let summary = ""; 13 | if (Array.isArray(post.summary)) { 14 | summary = ''; 19 | } else if (post.summary != null) { 20 | summary = `

${post.summary}

`; 21 | } 22 | return ` 23 |
24 |
25 | 26 | ${splitStatus} ${post.stagger}-staggered ${post.keyboard} with ${oxfordJoin(post.baseLayouts)} legends 32 | 33 |
34 |
35 | ${post.title} 36 |
37 |
38 |

${post.keyCount} keys

39 |

${post.languages.join(", ") || "N/A"}

40 |
41 |

${post.layerCount} layers

42 |

${post.baseLayouts.join(", ") || "N/A"}

43 |
44 | ${summary} 45 |
46 |
47 |
48 | `; 49 | } 50 | -------------------------------------------------------------------------------- /src/assets/js/filter_keymaps.js: -------------------------------------------------------------------------------- 1 | async function getKeymapsJSON() { 2 | return fetch("{{ '/keymaps_metadata.json' | url }}").then(res => res.json()); 3 | } 4 | 5 | function isKeymapConforming(query, keymapData) { 6 | for (const [queryKey, value] of query) { 7 | if (queryKey.endsWith("Count")) { 8 | let lowerbound, upperbound; 9 | [lowerbound, upperbound] = value.split("-").map(Number); 10 | if (upperbound === undefined && !isNaN(lowerbound)) { 11 | // `value` does not contain a "-" and is thus a 12 | // single number as opposed to a range. 13 | upperbound = lowerbound; 14 | } 15 | const countValue = Number(keymapData[queryKey]); 16 | if (!(lowerbound <= countValue && countValue <= upperbound)) { 17 | return false; 18 | } 19 | } else if (keymapData[queryKey] instanceof Array) { 20 | const selectedValues = value.split(","); 21 | if (!selectedValues.some(x => new Set(keymapData[queryKey]).has(x))) { 22 | return false; 23 | } 24 | 25 | } else if (queryKey === "search") { 26 | // keymapData["summary"] might be null so that's why we use 27 | // AND's short-circuit evaluation to check for null before accessing 28 | // the toLowerCase property. It might also be an array of strings instead. 29 | let isConformingToTypedSearch = (word) => ["title", "author", "summary"] 30 | .map(fieldN => keymapData[fieldN] && String(keymapData[fieldN]).toLowerCase().indexOf(word.toLowerCase()) !== -1) 31 | .some(Boolean); 32 | if (!value.split(" ").every(isConformingToTypedSearch)) { 33 | return false; 34 | } 35 | // In case the keymap data value is a boolean, `value` must be deserialized into a boolean, as done after the && 36 | } else if (keymapData[queryKey] !== value && keymapData[queryKey] !== (value === "true")) { 37 | return false; 38 | } 39 | } 40 | return true; 41 | } 42 | 43 | async function getFilteredKeymaps() { 44 | const searchParams = new URLSearchParams(location.search); 45 | return getKeymapsJSON().then(keymapsJSON => keymapsJSON.filter(keymap => isKeymapConforming(searchParams, keymap))); 46 | } 47 | 48 | async function populatePostGrid(filteredKeymaps) { 49 | const postGrid = $("post-grid"); 50 | postGrid.innerHTML = ""; 51 | const postsPerPage = {{ site.paginate }}; 52 | const pageNo = Number((location.pathname.match(/page\/([0-9]+)/) || ["page/1", "1"])[1]); 53 | const offset = (pageNo - 1) * postsPerPage; 54 | const slicedKeymaps = filteredKeymaps.slice(offset, offset+postsPerPage); 55 | // Warning: The function syncPaginationButtons relies on the innerText of the "showing-n-results" doc element. 56 | // If you change the value of innerText, make sure to reflect that "API" change in syncPaginationButtons too! 57 | if (filteredKeymaps.length === 0) { 58 | $("showing-n-results").innerText = "No results found."; 59 | } else if (offset < filteredKeymaps.length) { 60 | $("showing-n-results").innerText = `Showing ${offset + 1} to ${Math.min(offset + postsPerPage, filteredKeymaps.length)} of ${filteredKeymaps.length} results found.`; 61 | } else { 62 | $("showing-n-results").innerText = `Showing 0 to 0 of ${filteredKeymaps.length} results found.`; 63 | const amountOfPages = Math.ceil(filteredKeymaps.length/postsPerPage); 64 | if (amountOfPages === 1) { 65 | $("showing-n-results").innerText += ` There is only 1 page for this search, not ${pageNo}.`; 66 | } else { 67 | $("showing-n-results").innerText += ` There are only ${amountOfPages} pages for this search, not ${pageNo}.`; 68 | } 69 | } 70 | syncPaginationButtons(); 71 | for (const post of slicedKeymaps) { 72 | postGrid.innerHTML += card(post, post.url); 73 | } 74 | } 75 | 76 | const pageRegExp = new RegExp("{{ '/page/' | url }}[0-9]+"); 77 | if (location.pathname === "{{'/' | url }}" || pageRegExp.test(location.pathname)) { 78 | getFilteredKeymaps().then(filteredKeymaps => populatePostGrid(filteredKeymaps)); 79 | } 80 | -------------------------------------------------------------------------------- /src/assets/js/main.js: -------------------------------------------------------------------------------- 1 | /* 2 | Hide header on scroll down & show on scroll up 3 | */ 4 | 5 | const header = document.getElementById('header'); 6 | let lastPos = document.documentElement.scrollTop; 7 | 8 | window.addEventListener('scroll', () => { 9 | const currPos = document.documentElement.scrollTop; 10 | 11 | if (currPos > lastPos) { 12 | if (currPos > header.offsetHeight) { 13 | header.classList.add('-translate-y-full'); 14 | header.classList.remove('header-shadow'); 15 | } 16 | } else { 17 | header.classList.remove('-translate-y-full'); 18 | header.classList.add('header-shadow'); 19 | } 20 | 21 | lastPos = currPos; 22 | }, false); 23 | 24 | /* 25 | Toggle the menu when pressed on hamburger button 26 | Only on mobile devices 27 | */ 28 | 29 | const menu = document.getElementById('menu'); 30 | const searchBox = document.getElementById('search'); 31 | const menuToggle = document.getElementById('menu-toggle'); 32 | 33 | menuToggle.addEventListener('click', () => { 34 | menu.classList.toggle('hidden'); 35 | searchBox.classList.toggle('hidden'); 36 | }, false); 37 | 38 | function $(id) { 39 | return document.getElementById(id); 40 | } 41 | -------------------------------------------------------------------------------- /src/assets/js/search.js: -------------------------------------------------------------------------------- 1 | function binarySearch(e, lo, hi, sortedArr) { 2 | if (lo > hi || hi < lo) { 3 | return -1; 4 | } 5 | const mid = lo + Math.floor((hi-lo)/2); 6 | if (sortedArr[mid] === e) { 7 | return mid; 8 | } else if (sortedArr[mid] < e) { 9 | return binarySearch(e, mid+1, hi, sortedArr); 10 | } else { 11 | return binarySearch(e, lo, mid-1, sortedArr); 12 | } 13 | } 14 | 15 | if ($("header-searchbox") != undefined) { 16 | $("header-searchbox").addEventListener("keydown", debounce(async function(keyUpEvent) { 17 | // No need to go through the costly process of updating 18 | // the post grid if the key press didn't change the search. 19 | const ignoredKeysSortedList = [ 20 | "Alt", 21 | "AltGraph", 22 | "ArrowDown", 23 | "ArrowLeft", 24 | "ArrowRight", 25 | "ArrowUp", 26 | "CapsLock", 27 | "Control", 28 | "End", 29 | "Fn", 30 | "FnLock", 31 | "Home", 32 | "Hyper", 33 | "Meta", 34 | "NumLock", 35 | "PageDown", 36 | "PageUp", 37 | "ScrollLock", 38 | "Shift", 39 | "Super", 40 | "Symbol", 41 | "SymbolLock" 42 | ]; 43 | let isIgnoredKey = binarySearch(keyUpEvent.key, 0, ignoredKeysSortedList.length, ignoredKeysSortedList) !== -1; 44 | if (!isIgnoredKey) { 45 | updatePostGrid(this); 46 | } 47 | }, 400)); 48 | } 49 | 50 | // https://github.com/sindresorhus/p-debounce 51 | function debounce(fn, wait) { 52 | let timer; 53 | let resolveList = []; 54 | 55 | return function(...arguments_) { 56 | return new Promise((resolve) => { 57 | clearTimeout(timer); 58 | 59 | timer = setTimeout(() => { 60 | timer = null; 61 | 62 | const result = fn.apply(this, arguments_); 63 | 64 | for (resolve of resolveList) { 65 | resolve(result); 66 | } 67 | 68 | resolveList = []; 69 | }, wait); 70 | 71 | resolveList.push(resolve); 72 | }); 73 | }; 74 | } 75 | -------------------------------------------------------------------------------- /src/assets/svg/OS/Linux.svg: -------------------------------------------------------------------------------- 1 | 2 | Linux 3 | Tux the penguin, mascot of Linux (Monochrome) 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/svg/OS/MacOS.svg: -------------------------------------------------------------------------------- 1 | 2 | MacOS 3 | Flat Apple icon 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/svg/OS/Windows.svg: -------------------------------------------------------------------------------- 1 | 2 | Windows 3 | Windows 10 icon 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/index.njk: -------------------------------------------------------------------------------- 1 | --- 2 | layout: layouts/default 3 | isMainScreen: true 4 | pagination: 5 | data: collections.pagedPosts 6 | size: 1 7 | alias: paged 8 | permalink: "{% if paged.number > 1 %}page/{{ paged.number }}/{% endif %}index.html" 9 | ogImage: /assets/img/cover.png 10 | --- 11 | 12 |
13 | 16 |
17 | {% set offset = (paged.number - 1) * site.paginate %} 18 |
Showing {{ offset + 1 }} to {{ offset + site.paginate }} of {{ collections.posts | length }} results found.
19 |
20 | {% include "partials/post_grid.njk" %} 21 |
22 |
23 |
24 | 25 | {% include "partials/paginator.njk" %} 26 | -------------------------------------------------------------------------------- /src/misc/bundle.js.njk: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: "/assets/js/bundle.js" 3 | --- 4 | {% set js %} 5 | {% include "../assets/js/main.js" %} 6 | {% endset %} 7 | {{ js | minifyJs | safe }} 8 | -------------------------------------------------------------------------------- /src/misc/bundle_extras.js.njk: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: "/assets/js/bundle_extras.js" 3 | --- 4 | {% set js %} 5 | {% include "../assets/js/card.js" %} 6 | {% include "../assets/js/search.js" %} 7 | {% include "../assets/js/nouislider.js" %} 8 | {% include "../assets/js/dual_sliders_conf.js" %} 9 | {% include "../assets/js/sidebar_filters.js" %} 10 | {% endset %} 11 | {{ js | minifyJs | safe }} 12 | -------------------------------------------------------------------------------- /src/misc/filter_keymaps.js.njk: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: "/assets/js/filter_keymaps.js" 3 | --- 4 | {% set js %} 5 | {% include "../assets/js/filter_keymaps.js" %} 6 | {% endset %} 7 | {{ js | minifyJs | safe }} 8 | 9 | -------------------------------------------------------------------------------- /src/misc/keymaps_metadata.json.njk: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: "/keymaps_metadata.json" 3 | --- 4 | {% include "partials/keymaps_metadata.json.njk" %} 5 | -------------------------------------------------------------------------------- /src/misc/misc.11tydata.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | eleventyExcludeFromCollections: true 3 | }; 4 | -------------------------------------------------------------------------------- /src/misc/robots.txt.njk: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: "/robots.txt" 3 | --- 4 | User-agent: * 5 | Disallow: 6 | Sitemap: {{ site.url | url }}/sitemap.xml -------------------------------------------------------------------------------- /src/misc/sitemap.xml.njk: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: "/sitemap.xml" 3 | --- 4 | 5 | 6 | {% for item in collections.all -%} 7 | {{ site.url | url }}{{ item.url }} 8 | {% endfor %} 9 | 10 | -------------------------------------------------------------------------------- /src/posts/keymaps/0xcharly.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: 0xcharly 3 | baseLayouts: [Dvorak] 4 | firmwares: [QMK] 5 | hasHomeRowMods: true 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: true 12 | keybindings: [TWM] 13 | keyboard: Skeletyl 14 | keyCount: 36 15 | keymapImage: https://raw.githubusercontent.com/0xcharly/qmk_firmware/users-delay-wip/users/delay/assets/keymap.png 16 | keymapUrl: https://github.com/0xcharly/qmk_firmware/tree/users-delay-wip/users/delay 17 | languages: [English] 18 | layerCount: 8 19 | OS: [MacOS] 20 | stagger: columnar 21 | summary: "" 22 | title: delay/0xcharly's layout for BastardKB boards (and other 5x3) 23 | writeup: https://github.com/0xcharly/qmk_firmware/blob/users-delay-wip/users/delay/README.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/ARTSEY.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: artseyio 3 | baseLayouts: [ARTSEY] 4 | firmwares: [QMK, ZMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: The Paintbrush 14 | keyCount: 8 15 | keymapImage: https://raw.githubusercontent.com/artseyio/artsey/main/layout%20diagrams/current.jpg 16 | keymapUrl: https://artsey.io/#firmware 17 | languages: [English] 18 | layerCount: 7 19 | OS: [] 20 | stagger: ortholinear 21 | summary: ARTSEY is a one-handed keyboard system using 8 keys in a 2x4 layout. The system is designed to be easy to learn, comfortable to use, and fast enough for practical use. 22 | title: ARTSEY 23 | writeup: https://artsey.io/ 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/AlaaSaadAbdo.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: AlaaSaadAbdo 3 | baseLayouts: [HDN] 4 | firmwares: [ZMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: Battoota 14 | keyCount: 30 15 | keymapImage: https://raw.githubusercontent.com/AlaaSaadAbdo/zmk-config/master/layout.png 16 | keymapUrl: https://github.com/AlaaSaadAbdo/zmk-config 17 | languages: [Arabic, English] 18 | layerCount: 8 19 | OS: [Windows, MacOS] 20 | stagger: columnar 21 | summary: "This is my personal ZMK firmware configuration for my current 30-key wireless keyboards Battoota. 22 | I use this keyboard for both windows and mac, to type in Arabic and English" 23 | title: AlaaSaadAbdo's ZMK keymap for 30-key wireless Battoota 24 | writeup: https://github.com/AlaaSaadAbdo/zmk-config/blob/master/README.md 25 | --- 26 | -------------------------------------------------------------------------------- /src/posts/keymaps/Dakes.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: Dakes 3 | baseLayouts: [Neo, Colemak, QWERTZ] 4 | firmwares: [QMK] 5 | hasHomeRowMods: true 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: true 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Gaming] 13 | keyboard: Kyria 14 | keyCount: 50 15 | keymapImage: Dakes.png 16 | keymapUrl: https://github.com/Dakes/qmk_config/tree/main/kyria/keymaps/dakes 17 | languages: [German, English] 18 | layerCount: 8 19 | OS: [Linux] 20 | stagger: columnar 21 | summary: My Kyria keymap and userspace. Includes Modular Bongocat and Conway's Game of Life 22 | title: Dakes' Keymap 23 | writeup: https://github.com/Dakes/qmk_config/blob/main/kyria/keymaps/dakes/README.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/DesyncTheThird.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: DesyncTheThird 3 | baseLayouts: ["Graphite", "QWERTY"] 4 | firmwares: [QMK] 5 | hasHomeRowMods: true 6 | hasLetterOnThumb: true 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: Corne 14 | keyCount: 42 15 | keymapImage: https://raw.githubusercontent.com/DesyncTheThird/corne-keymap/main/images/combined.png 16 | keymapUrl: https://github.com/DesyncTheThird/corne-keymap/tree/main 17 | languages: [English] 18 | layerCount: 13 19 | OS: ["Windows"] 20 | stagger: columnar 21 | summary: Keymap for the Corne keyboard, optimised for writing (La)TeX and C files. 22 | title: Desync's keymap 23 | writeup: https://github.com/DesyncTheThird/corne-keymap/blob/main/readme.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/JannikWibker.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: JannikWibker 3 | baseLayouts: [QWERTY] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: false 11 | isTapDanceEnabled: false 12 | keybindings: [Vim] 13 | keyboard: NIU Mini 14 | keyCount: 47 15 | keymapImage: https://raw.githubusercontent.com/JannikWibker/qmk_niu_mini_keymap/master/layout.png 16 | keymapUrl: https://github.com/JannikWibker/qmk_niu_mini_keymap 17 | languages: [English] 18 | layerCount: 12 19 | OS: [Linux, MacOS] 20 | stagger: ortholinear 21 | summary: "The reason many keys are laid out as they are is to make it comfortable to access the most used keys with either both hands or sometimes only one hand on the keyboard. Most of the special characters that aren't normally part of qwerty are not going to be implemented on a keyboard level, they require a custom xkb layout" 22 | title: Jannik Wibker's 40% ortho layout with custom xkb layout 23 | writeup: https://github.com/JannikWibker/qmk_niu_mini_keymap/blob/master/readme.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/Lysquid.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: Lysquid 3 | baseLayouts: [Erglace, AZERTY] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [TWM] 13 | keyboard: Ferris 14 | keyCount: 34 15 | keymapImage: https://raw.githubusercontent.com/Lysquid/qmk_firmware/lysquid/keymap.svg 16 | keymapUrl: https://github.com/Lysquid/qmk_firmware 17 | languages: [French, English] 18 | layerCount: 8 19 | OS: [Linux] 20 | stagger: columnar 21 | summary: A callum-style keymap optimized for French, English and code 22 | title: Lysquid's keymap 23 | writeup: https://github.com/Lysquid/qmk_firmware/blob/lysquid/README.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/MakotoKurauchi-helix_froggy.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: MakotoKurauchi 3 | baseLayouts: [Frogpad] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: Helix 14 | keyCount: 32 15 | keymapImage: MakotoKurauchi-helix_froggy.webp 16 | keymapUrl: https://github.com/qmk/qmk_firmware/tree/user-keymaps-still-present/keyboards/helix/rev2/keymaps/froggy 17 | languages: [Japanese, English] 18 | layerCount: 5 19 | OS: [Windows, MacOS] 20 | stagger: ortholinear 21 | summary: "It is a one-handed keyboard with reference to Frogpad. Layout Designed by 22 | タクマ(pronounced as takuma) 23 | (@humid on Twitter)." 24 | title: Froggy -one hand Helix- 25 | writeup: https://github.com/qmk/qmk_firmware/blob/user-keymaps-still-present/keyboards/helix/rev2/keymaps/froggy/readme.md 26 | --- 27 | -------------------------------------------------------------------------------- /src/posts/keymaps/MattSturgeon.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: MattSturgeon 3 | baseLayouts: [Colemak, QWERTY] 4 | firmwares: [ZMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Vim, Gaming] 13 | keyboard: Glove80 14 | keyCount: 70 15 | keymapImage: https://github.com/MattSturgeon/glove80-config/raw/6be8debed9bba1107392ef65004dc75df97ac9f2/img/glove80_ColmakDH.svg 16 | keymapUrl: https://github.com/MattSturgeon/glove80-config 17 | languages: [English] 18 | layerCount: 6 19 | OS: [Linux] 20 | stagger: columnar 21 | summary: "The keyboard uses Colemak DH, with punctuation adjusted via Mod Morphs and useful keys placed on thumb keys. A gaming layer shifts WASD, a symbols layer eases programming, and a nav layer includes a numpad. The Magic layer manages system utilities like Bluetooth and RGB lighting." 22 | title: Matt Sturgeon's config for the MoErgo Glove80 23 | writeup: https://github.com/MattSturgeon/glove80-config/blob/main/README.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/MicahElliot.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: MicahElliot 3 | baseLayouts: [QWERTY] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: false 11 | isTapDanceEnabled: false 12 | keybindings: [TWM, Emacs, Vim] 13 | keyboard: Planck 14 | keyCount: 42 15 | keymapImage: https://raw.githubusercontent.com/MicahElliott/ZeLDA/master/keyboard-layout-all.png 16 | keymapUrl: https://github.com/MicahElliott/ZeLDA 17 | languages: [English] 18 | layerCount: 4 19 | OS: [Linux, Windows] 20 | stagger: ortholinear 21 | summary: The ZeLDA (Zero-Look-Down Access) Layout is a minimalist approach to keyboarding. The philosophy is that you should never have to reach farther than one adjacent key. It's still a QWERTY, but seriously improved. 22 | title: The Woodpecker Makery's ZeLDA Layout for Planck Keyboards 23 | writeup: https://github.com/MicahElliott/ZeLDA/blob/master/GUIDE.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/NeonSpork.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: NeonSpork 3 | baseLayouts: [QWERTY] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: false 11 | isTapDanceEnabled: false 12 | keybindings: [Gaming] 13 | keyboard: UT47 14 | keyCount: 47 15 | keymapImage: NeonSpork.png 16 | keymapUrl: https://github.com/qmk/qmk_firmware/tree/user-keymaps-still-present/keyboards/40percentclub/ut47/keymaps/nordic 17 | languages: [English, Danish, Norwegian] 18 | layerCount: 6 19 | OS: [Windows] 20 | stagger: row 21 | summary: "Chose to modify the default layout to include dedicated arrows on the bottom right. Layers 1-4 are modifiers, layer 5 is a toggle on gaming mode. Tab is dual function: Tap for Tab and hold for L3. So is enter: tap for Enter and hold for Right shift." 22 | title: UT47 Nordic keymap 23 | writeup: 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/ScriBanana.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: ScriBanana 3 | baseLayouts: [Optimot] 4 | firmwares: [ZMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Gaming] 13 | keyboard: Corne 14 | keyCount: 42 15 | keymapImage: https://raw.githubusercontent.com/ScriBanana/OptiCorne/refs/heads/master/Illustrations/CorneOptimot.webp 16 | keymapUrl: https://github.com/ScriBanana/OptiCorne 17 | languages: [French, English] 18 | layerCount: 4 19 | OS: [Linux, MacOS, Windows] 20 | stagger: columnar 21 | summary: 22 | - An easy-to-learn, mouse-friendly, Optimot-based Corne layout 23 | - Leverages Optimot and its driver for typing (many more character layers) 24 | - Relatively easy to swap with a regular keyboard 25 | - Designed to assist mouse use (right hand) and navigation 26 | title: OptiCorne 27 | writeup: https://github.com/ScriBanana/OptiCorne/blob/master/README.md 28 | --- 29 | -------------------------------------------------------------------------------- /src/posts/keymaps/Vermoot.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: Vermoot 3 | baseLayouts: [Colemak] 4 | firmwares: [QMK] 5 | hasHomeRowMods: true 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Vim] 13 | keyboard: Kyria 14 | keyCount: 46 15 | keymapImage: Vermoot.png 16 | keymapUrl: https://github.com/Vermoot/qmk_keymaps/tree/master/kyria/keymaps/Vermoot 17 | languages: [French, English] 18 | layerCount: 11 19 | OS: [MacOS, Linux] 20 | stagger: columnar 21 | summary: 22 | title: Vermoot's combo-heavy Kyria keymap for French and English 23 | writeup: 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/Wimads.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: Wimads 3 | baseLayouts: [QWERTY] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Graphics/CAD] 13 | keyboard: 3W6 14 | keyCount: 36 15 | keymapImage: https://raw.githubusercontent.com/Wimads/qmk_firmware/master/keyboards/keycapsss/3w6_2040/keymaps/Wimads/keymapdb/Layers.png 16 | keymapUrl: https://github.com/Wimads/qmk_firmware/blob/master/keyboards/keycapsss/3w6_2040/keymaps/Wimads 17 | languages: [English, Dutch] 18 | layerCount: 6 19 | OS: [Windows] 20 | stagger: columnar 21 | summary: A split 3x5+3 layout, which is optimized for CAD and graphic usage. It utilizes a lot of combos, and no homerow mods, and only 3 layers. It also has a (combo based) mode for one handed operation. (image does not show combos, see write-up link instead!) 22 | title: Wimads' keymap for 3x5+3 split keyboards 23 | writeup: https://github.com/Wimads/qmk_firmware/blob/master/keyboards/keycapsss/3w6_2040/keymaps/Wimads/keymapdb/Wimads_keymapdb_writeup.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/aidancz.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: aidancz 3 | baseLayouts: ["QWERTY"] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: false 11 | isTapDanceEnabled: false 12 | keybindings: [Vim] 13 | keyboard: Planck 14 | keyCount: 43 15 | keymapImage: aidancz.webp 16 | keymapUrl: https://github.com/aidancz/planck_crab 17 | languages: ['English'] 18 | layerCount: 4 19 | OS: [Linux] 20 | stagger: ortholinear 21 | summary: A symmetrical layout for planck mit keyboard 22 | title: "Planck Crab" 23 | writeup: https://github.com/aidancz/planck_crab/blob/master/readme.org 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/ajarov.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: ajarov 3 | baseLayouts: [QWERTY] 4 | firmwares: [QMK] 5 | hasHomeRowMods: False 6 | hasLetterOnThumb: False 7 | hasRotaryEncoder: False 8 | isAutoShiftEnabled: False 9 | isComboEnabled: False 10 | isSplit: True 11 | isTapDanceEnabled: False 12 | keybindings: [] 13 | keyboard: Corne 14 | keyCount: 42 15 | keymapImage: https://user-images.githubusercontent.com/1832140/178291869-ea3c070b-2c0d-45f9-aeb8-00ac6942e847.png 16 | keymapUrl: https://github.com/qmk/qmk_firmware/tree/user-keymaps-still-present/keyboards/crkbd/keymaps/ajarov 17 | languages: ["Spanish"] 18 | layerCount: 4 19 | OS: ["Windows"] 20 | stagger: columnar 21 | summary: "Four layers: Base, Upper (△), Right (▷), Upper Right (△ + ▷). Base layer similar to default Corne layout when Spanish OS is set (except RShift instead of Esc, LAlt instead of AltGr). Upper layer (△) aligns right hand with arrow keys. Right layer (▷) enables right-hand numpad. Missing keys: interpunct (·), Scroll Lock, Num Lock." 22 | title: "Corne Spanish layout by ajarov" 23 | writeup: https://github.com/qmk/qmk_firmware/blob/user-keymaps-still-present/keyboards/crkbd/keymaps/ajarov/readme.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/alper.md: -------------------------------------------------------------------------------- 1 | --- 2 | OS: ['Windows', 'MacOS'] 3 | author: alper 4 | firmwares: [QMK] 5 | hasHomeRowMods: False 6 | hasLetterOnThumb: False 7 | keymapImage: alper.png 8 | keyCount: 47 9 | keyboard: Contra 10 | baseLayouts: ["QWERTY"] 11 | languages: ['English'] 12 | layerCount: 6 13 | title: "Alper's Contra Layout" 14 | isSplit: False 15 | stagger: ortholinear 16 | summary: 17 | keymapUrl: https://github.com/qmk/qmk_firmware/tree/user-keymaps-still-present/keyboards/contra/keymaps/alper 18 | writeup: https://github.com/qmk/qmk_firmware/tree/user-keymaps-still-present/keyboards/contra/keymaps/alper/readme.md 19 | --- 20 | -------------------------------------------------------------------------------- /src/posts/keymaps/alterecco-zmk.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: alterecco 3 | baseLayouts: [Hands Down] 4 | firmwares: [ZMK] 5 | hasHomeRowMods: true 6 | hasLetterOnThumb: true 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Vim] 13 | keyboard: Ahokore 14 | keyCount: 34 15 | keymapImage: alterecco-zmk.png 16 | keymapUrl: https://github.com/alterecco/ahokore-zmk-config 17 | languages: [English, Danish] 18 | layerCount: 5 19 | OS: [MacOS] 20 | stagger: columnar 21 | summary: "" 22 | title: alterecco's Ahokore/Ferris 34-key keymap 23 | writeup: "" 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/alvaro_prieto.md: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | OS: ["MacOS", "Windows"] 4 | author: alvaro-prieto 5 | firmwares: [QMK] 6 | hasHomeRowMods: False 7 | hasLetterOnThumb: False 8 | keymapImage: https://github.com/alvaro-prieto/corne/raw/main/extra/keymap.png 9 | keyCount: 42 10 | keyboard: Corne 11 | baseLayouts: ["QVERFY"] 12 | languages: ["Spanish", "English"] 13 | layerCount: 10 14 | title: "Hysp keymap" 15 | isSplit: True 16 | isComboEnabled: False 17 | isTapDanceEnabled: True 18 | isAutoShiftEnabled: False 19 | stagger: columnar 20 | summary: QMK based Corne Keymap. It features OS independent shortcuts, custom modifier keys, RGB themes, key sequences, and much more. 21 | keymapUrl: https://github.com/alvaro-prieto/corne 22 | writeup: https://github.com/alvaro-prieto/corne/blob/main/README.md 23 | --- 24 | -------------------------------------------------------------------------------- /src/posts/keymaps/andrewjrae.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: andrewjrae 3 | baseLayouts: [RSTHD] 4 | firmwares: [QMK] 5 | hasHomeRowMods: true 6 | hasLetterOnThumb: true 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Vim, Emacs, TWM, Gaming] 13 | keyboard: Kyria 14 | keyCount: 46 15 | keymapImage: https://github.com/andrewjrae/kyria-keymap/raw/master/images/kyria.png 16 | keymapUrl: https://github.com/andrewjrae/kyria-keymap 17 | languages: [English] 18 | layerCount: 7 19 | OS: [Linux] 20 | stagger: columnar 21 | summary: "This is my QMK Kyria keymap, it has some nifty features and an interesting base layer. 22 | 23 | The base alpha layer I use is a modified RSTHD, which has some interesting (perhaps dubious), choices. To understand my thought process you can read my Keymap Logs." 24 | title: andrewjrae's QMK keymap for the SplitKB Kyria 25 | writeup: https://github.com/andrewjrae/kyria-keymap/blob/master/README.org 26 | --- 27 | -------------------------------------------------------------------------------- /src/posts/keymaps/archydragon.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: archydragon 3 | baseLayouts: [Colemak, QWERTY] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Gaming] 13 | keyboard: Lily58 14 | keyCount: 58 15 | keymapImage: https://raw.githubusercontent.com/archydragon/lily-layout/main/img/latin-colemak.png 16 | keymapUrl: https://github.com/archydragon/lily-layout 17 | languages: [English, Finnish, Swedish, Russian, Ukrainian, Belarusian] 18 | layerCount: 6 19 | OS: [Windows, Linux] 20 | stagger: columnar 21 | summary: Colemak-DH layout able to type in English, Finnish, Swedish, Russian, Ukrainian and Belarusian with just two system layouts that fits all the printable characters into the main keyboard layer and where no modifier keys are under other fingers but thumbs. 22 | title: archydragon's multilingual layout for Lily58 keyboard 23 | writeup: https://github.com/archydragon/lily-layout/blob/main/README.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/argenkiwi.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: argenkiwi 3 | baseLayouts: [QWERTY, Colemak] 4 | firmwares: [Kanata, keyd] 5 | hasHomeRowMods: true 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: false 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: ANSI 14 | keyCount: 31 15 | keymapImage: https://raw.githubusercontent.com/argenkiwi/kenkyo/refs/heads/main/images/kenkyo.png 16 | keymapUrl: https://github.com/argenkiwi/kenkyo 17 | languages: [English, Spanish] 18 | layerCount: 3 19 | OS: [Windows, MacOS, Linux] 20 | stagger: row 21 | summary: A layered keyboard layout designed to augment your keyboard's capabilities without altering or interfering with its default behaviour, so you can remain productive as you learn to use it. 22 | title: Kenkyo 23 | writeup: https://github.com/argenkiwi/kenkyo/blob/main/README.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/bingocaller.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: bingocaller 3 | baseLayouts: ["QWERTY"] 4 | firmwares: [QMK] 5 | hasHomeRowMods: False 6 | hasLetterOnThumb: False 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: False 11 | isTapDanceEnabled: false 12 | keybindings: [Vim] 13 | keyboard: DZ60 14 | keyCount: 67 15 | keymapImage: bingocaller.png 16 | keymapUrl: https://github.com/bingocaller/qmk_firmware/tree/master/keyboards/dz60/keymaps/bingocaller 17 | languages: ['English'] 18 | layerCount: 6 19 | OS: ['MacOS'] 20 | stagger: row 21 | summary: This is a MacOS-specific keymap for DZ60 configured in a standard 60% ANSI layout, with a stepped Caps Lock 22 | title: "MacOS standard 60% keymap with Vim-like arrows" 23 | writeup: https://github.com/bingocaller/qmk_firmware/tree/master/keyboards/dz60/keymaps/bingocaller/readme.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/bpruitt_goddard.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: bpruitt-goddard 3 | baseLayouts: ["Dvorak", "QWERTY"] 4 | firmwares: [QMK] 5 | hasHomeRowMods: False 6 | hasLetterOnThumb: False 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: true 12 | keybindings: [] 13 | keyboard: ErgoDox 14 | keyCount: 76 15 | keymapImage: bpruitt_goddard.png 16 | keymapUrl: https://github.com/bpruitt-goddard/qmk_firmware/tree/master/keyboards/ergodox_ez/keymaps/bpruitt-goddard 17 | languages: ['English'] 18 | layerCount: 4 19 | OS: ['Windows', 'MacOS'] 20 | stagger: columnar 21 | summary: 22 | title: "Ergodox EZ Layout by bpruitt-goddard" 23 | writeup: https://github.com/bpruitt-goddard/qmk_firmware/tree/master/keyboards/ergodox_ez/keymaps/bpruitt-goddard/readme.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/braindefender-wellum.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: braindefender 3 | baseLayouts: [QWERTY, ЙЦУКЕН] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Vim, Gaming, TWM] 13 | keyboard: "Cantor Remix" 14 | keyCount: 36 15 | keymapImage: https://raw.githubusercontent.com/braindefender/wellum/master/images/wellum-preview.jpg 16 | keymapUrl: https://github.com/braindefender/wellum 17 | languages: [English, Russian] 18 | layerCount: 6 19 | OS: [Windows, Linux, MacOS] 20 | stagger: columnar 21 | summary: 22 | - Slightly modified QWERTY layout optimized for English & Russian languages 23 | - Mod-Tap-free Home-Row modifiers access without nasty timings 24 | - Navigation, symbols, numbers & functional layers 25 | - System-wide universal layouts for Windows, Linux and macOS 26 | - Gaming layer, easy windows and tabs switcher and more... 27 | title: Wellum — 36-keys callum-styled keyboard layout 28 | writeup: https://github.com/braindefender/wellum/blob/master/README.md 29 | --- 30 | -------------------------------------------------------------------------------- /src/posts/keymaps/brandonschlack.md: -------------------------------------------------------------------------------- 1 | --- 2 | OS: ['MacOS'] 3 | author: brandonschlack 4 | firmwares: [QMK] 5 | hasHomeRowMods: False 6 | hasLetterOnThumb: False 7 | keymapImage: brandonschlack.png 8 | keyCount: 49 9 | keyboard: Nightmare 10 | baseLayouts: ["QWERTY"] 11 | languages: ['English'] 12 | layerCount: 8 13 | title: "brandonschlack's Nightmare Keymap" 14 | isSplit: False 15 | stagger: row 16 | summary: 17 | keymapUrl: https://github.com/brandonschlack/qmk_firmware/tree/master/keyboards/nightmare/keymaps/brandonschlack 18 | writeup: https://github.com/brandonschlack/qmk_firmware/tree/master/keyboards/nightmare/keymaps/brandonschlack/readme.md 19 | --- -------------------------------------------------------------------------------- /src/posts/keymaps/bsag.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: bsag 3 | baseLayouts: [BEAKL, QWERTY] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: Ferris 14 | keyCount: 34 15 | keymapImage: https://raw.githubusercontent.com/bsag/qmk_custom/main/mini3x5/keymap_diagram.svg 16 | keymapUrl: https://github.com/bsag/qmk_custom 17 | languages: [English] 18 | layerCount: 7 19 | OS: [MacOS] 20 | stagger: columnar 21 | summary: I am using BEAKL 27 as my full time layout. The layout uses combos on the base layer to replace keys like enter and escape that do not fit on a small keyboard, one-shot mods/layers and a combo to activate a ‘numword’ layer which automatically de-activates when a non-numerical character is typed. 22 | title: bsag's mini3x5+2 Ferris Sweep QMK layout 23 | writeup: https://github.com/bsag/qmk_custom/blob/main/mini3x5/README.org 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/caksoylar.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: caksoylar 3 | baseLayouts: [Colemak, Bird] 4 | firmwares: [ZMK] 5 | hasHomeRowMods: true 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Gaming, Kakoune, Vim] 13 | keyboard: "Hummingbird" 14 | keyCount: 26 15 | keymapImage: https://caksoylar.github.io/zmk-config/keymapdb.svg 16 | keymapUrl: https://github.com/caksoylar/zmk-config 17 | languages: [English] 18 | layerCount: 7 19 | OS: [Windows, Linux] 20 | stagger: columnar 21 | summary: A keymap for my 26-30 key split keyboards, intended to be used with Hummingbird-like physical layouts that can have single thumb and pinky keys. Base layer is a Colemak variation, utilizing horizontal combos for frequent symbols and infrequent letters. 22 | title: caksoylar's keymap for 26-30 key keyboards 23 | writeup: https://github.com/caksoylar/zmk-config/blob/main/README.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/callum_oakley.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: callum-oakley 3 | baseLayouts: [Colemak] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [TWM] 13 | keyboard: "" 14 | keyCount: 34 15 | keymapImage: https://raw.githubusercontent.com/callum-oakley/keymap/master/keymap.svg 16 | keymapUrl: https://github.com/qmk/qmk_firmware/tree/user-keymaps-still-present/users/callum 17 | languages: [English] 18 | layerCount: 4 19 | OS: [MacOS] 20 | stagger: columnar 21 | summary: A keymap for 34 keys with 4 layers and callum-style mods in place of mod-taps. 22 | title: callum's keymap 23 | writeup: https://github.com/qmk/qmk_firmware/blob/user-keymaps-still-present/users/callum/readme.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/casuanoob.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: casuanoob 3 | baseLayouts: [APT, Colemak, NRST, Adept, Canary, Nerps] 4 | firmwares: [QMK, ZMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: true 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Gaming] 13 | keyboard: Charybdis Nano 14 | keyCount: 34 15 | keymapImage: https://github.com/casuanoob/qmk_firmware/raw/casua-dev/users/casuanoob/assets/split34_keymap.svg 16 | keymapUrl: https://github.com/casuanoob/qmk_firmware/tree/casua-dev/users/casuanoob 17 | languages: [English] 18 | layerCount: 16 19 | OS: [] 20 | stagger: columnar 21 | summary: "The layout has coverage of near 100% of all the keys present on a standard 100% ANSI keyboard in the span of 6 layers and 4 thumb keys without using Layer Taps or Mod Taps. 22 | 23 | The base layer is Aptmak, with V, Q, and Z, on combos as an adaptation to allow support on 30 key layouts." 24 | title: casuanoob's layout for BastardKB boards (and other 3x5+2) 25 | writeup: https://github.com/casuanoob/qmk_firmware/blob/casua-dev/users/casuanoob/README.md 26 | --- 27 | -------------------------------------------------------------------------------- /src/posts/keymaps/chaosk.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: chaosk 3 | baseLayouts: [QWERTY] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: true 12 | keybindings: [Gaming] 13 | keyboard: ErgoDox 14 | keyCount: 38 15 | keymapImage: https://raw.githubusercontent.com/chaosk/midas/master/layout.png 16 | keymapUrl: https://github.com/chaosk/midas 17 | languages: [] 18 | layerCount: 3 19 | OS: [Windows] 20 | stagger: columnar 21 | summary: Left-hand Ergodox keymap for Dota 2. 22 | title: Midas 23 | writeup: https://github.com/chaosk/midas/blob/master/README.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/chusecubr.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: chusecubr 3 | baseLayouts: [Colemak] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: Ferris 14 | keyCount: 34 15 | keymapImage: https://raw.githubusercontent.com/ChuseCubr/mini-ryoku/main/images/miniryoku.png 16 | keymapUrl: https://github.com/ChuseCubr/mini-ryoku/tree/main/qmk 17 | languages: [English] 18 | layerCount: 3 19 | OS: [Windows, MacOS, Linux] 20 | stagger: columnar 21 | summary: A compact 34-key adaptation of Miryoku. 22 | title: Mini-ryoku 23 | writeup: https://github.com/ChuseCubr/mini-ryoku 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/cyb3rkun.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: cyb3rkun 3 | baseLayouts: ["QWERTY"] 4 | firmwares: ["ZMK"] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Vim, Gaming] 13 | keyboard: Corne 14 | keyCount: 42 15 | keymapImage: https://raw.githubusercontent.com/cyb3rkun/corneGLP/refs/heads/master/Layer_Guide.svg 16 | keymapUrl: https://github.com/cyb3rkun/corneGLP 17 | languages: [English] 18 | layerCount: 7 19 | OS: [Windows, Linux] 20 | stagger: columnar 21 | summary: "A simple qwerty base keymap with mouse navigation, gaming layers and vim inspired navigation" 22 | title: "Cyb3rKun's Corne Layout for neovim, mouse navigation and gaming" 23 | writeup: "https://github.com/cyb3rkun/corneGLP/blob/master/README.md" 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/daisukekoba.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: daisukekoba 3 | baseLayouts: [QWERTY] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: Ergo42 14 | keyCount: 42 15 | keymapImage: https://user-images.githubusercontent.com/1042121/52666273-32a45e00-2f51-11e9-9e15-c231155f3bed.png 16 | keymapUrl: https://github.com/qmk/qmk_firmware/tree/user-keymaps-still-present/keyboards/biacco42/ergo42/keymaps/koba 17 | languages: [Japanese] 18 | layerCount: 5 19 | OS: [Windows, MacOS] 20 | stagger: ortholinear 21 | summary: 22 | - JIS layout. 23 | - Independent Windows layout/MacOS layout layers. 24 | - Bottom row keys are arranged like a standard keyboard. 25 | - Arrow keys are designed in the inverted-T. 26 | title: Daisuke Kobayashi's Keymap for Ergo42 27 | writeup: https://github.com/qmk/qmk_firmware/blob/user-keymaps-still-present/keyboards/biacco42/ergo42/keymaps/koba/readme.md 28 | --- 29 | -------------------------------------------------------------------------------- /src/posts/keymaps/dasmikko.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: dasmikko 3 | baseLayouts: [QWERTY] # [QWERTY, Colemak, Dvorak, ...] 4 | firmwares: [QMK] # [QMK, ZMK, KMonad] 5 | hasHomeRowMods: false # true or false 6 | hasLetterOnThumb: false # true or false 7 | hasRotaryEncoder: false # true or false 8 | isAutoShiftEnabled: false # true or false 9 | isComboEnabled: false # true or false 10 | isSplit: true # true or false 11 | isTapDanceEnabled: false # true or false 12 | keybindings: [Gaming] # [Vim, Emacs, Kakoune, Graphics/CAD, TWM, Spreadsheets, Gaming] 13 | keyboard: Kyria # Kyria or Corne or Dactyl Manuform 5x6 or ... 14 | keyCount: 50 15 | keymapImage: https://github.com/dasmikko/qmk_stuff/blob/main/images/kyria.png?raw=true 16 | keymapUrl: https://github.com/dasmikko/qmk_stuff 17 | languages: [Danish, English] # [English, Spanish, ...] 18 | layerCount: 8 19 | OS: [Linux, Windows] # [Windows, MacOS, Linux] 20 | stagger: columnar # row or columnar or ortholinear 21 | summary: "The keymap is a pretty basic, no crazy tap-dance mods or alike. It is very beginner friendly, and feel free to use it as a base. It uses Danish layout, so it includes ÆØÅ." # Short summary of max. 60 words 22 | title: dasmikko's Kyria QMK keymap 23 | writeup: https://github.com/dasmikko/qmk_stuff/blob/main/readme.md # not mandatory 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/datagrok.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: datagrok 3 | baseLayouts: [QWERTY, Colemak, Dvorak, Workman] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: Mitosis 14 | keyCount: 46 15 | keymapImage: datagrok.png 16 | keymapUrl: https://github.com/qmk/qmk_firmware/tree/user-keymaps-still-present/keyboards/mitosis/keymaps/datagrok 17 | languages: [English] 18 | layerCount: 7 19 | OS: [] 20 | stagger: columnar 21 | summary: 22 | - Customized comma and period, which have exclamation point and question mark on their shift layer. 23 | - Tap right-shift for underscore, tap left-shift for tab. 24 | - Symmetric layout of paired braces/brackets/slashes for easier memorization. 25 | - Arrows placed directly on home position 26 | title: datagrok's layout for the Mitosis 27 | writeup: https://github.com/qmk/qmk_firmware/blob/user-keymaps-still-present/keyboards/mitosis/keymaps/datagrok/readme.md 28 | --- 29 | -------------------------------------------------------------------------------- /src/posts/keymaps/dbroqua.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: dbroqua 3 | baseLayouts: ["QWERTY"] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: false 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: Planck 14 | keyCount: 47 15 | keymapImage: dbroqua.png 16 | keymapUrl: https://github.com/dbroqua/qmk_firmware/tree/master/keyboards/planck/keymaps/dbroqua 17 | languages: ['English'] 18 | layerCount: 5 19 | # "Linux" is an assumption based on the fact that the KLE calls the GUI modifier 20 | # as "Super" (instead of "Win" like a Windows user would call it, or "Cmd" as a MacOS user would call it. 21 | OS: [Linux] 22 | stagger: ortholinear 23 | summary: 24 | title: "Dbroqua Layout" 25 | writeup: https://github.com/dbroqua/qmk_firmware/tree/master/keyboards/planck/keymaps/dbroqua/readme.md 26 | --- 27 | -------------------------------------------------------------------------------- /src/posts/keymaps/dchenex.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: dchenex 3 | baseLayouts: [QWERTY, Gallium] 4 | firmwares: [ZMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: true 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Graphics/CAD] 13 | keyboard: Kyria 14 | keyCount: 50 15 | keymapImage: dchenex.webp 16 | keymapUrl: https://github.com/dchenex/zmk-config/tree/master/config 17 | languages: [English] 18 | layerCount: 4 19 | OS: [Windows] 20 | stagger: columnar 21 | summary: 4 layer Kyria layout combo heavy. Macros for (),[],{},<>,**, HomeshiftEnd. Macro for the first 3 pastes in Clipboard History. 2 Encoders with custom triggers per rotation. Modmorph Delete(shift:Backspace), Custom HoldTap ms for Win+L on right encoder. Hold/tap on num layer for F keys. 22 | title: dchenex Kyria layout 23 | writeup: # not mandatory 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/default-ferris.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: pierrechevalier83 3 | baseLayouts: [QWERTY] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: Ferris 14 | keyCount: 34 15 | keymapImage: default-ferris.png 16 | keymapUrl: https://github.com/qmk/qmk_firmware/tree/user-keymaps-still-present/keyboards/ferris/keymaps/default 17 | languages: [English] 18 | layerCount: 8 19 | OS: [Windows, Linux, MacOS] 20 | stagger: columnar 21 | summary: "This keymap makes heavy use of keys behaving differently when tapped and held, so that all the keys one may need remain accessible despite the low number of thumb keys. 22 | It is not meant to be the best possible keymap, but rather a good base on which to build a keymap that works for you." 23 | title: A usable default keymap for the Ferris keyboard 24 | writeup: https://github.com/qmk/qmk_firmware/blob/user-keymaps-still-present/keyboards/ferris/keymaps/default/readme.md 25 | --- 26 | -------------------------------------------------------------------------------- /src/posts/keymaps/default-kyria.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: precondition 3 | baseLayouts: [QWERTY, Colemak, Dvorak] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: true 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: Kyria 14 | keyCount: 50 15 | keymapImage: https://i.ibb.co/RQZx2dY/default-kyria2.jpg 16 | keymapUrl: https://github.com/qmk/qmk_firmware/tree/master/keyboards/splitkb/kyria/keymaps/default/ 17 | languages: [English] 18 | layerCount: 7 19 | OS: [Windows, Linux] 20 | stagger: columnar 21 | summary: "Beginner-friendly Kyria keymap containing 5 layers which allows it to include all keys found on an ANSI layout TKL keyboard plus media keys. 22 | Hardware features of the Kyria such as OLEDs, rotary encoders and underglow are also supported." 23 | title: Default Kyria keymap 24 | writeup: https://github.com/qmk/qmk_firmware/tree/master/keyboards/splitkb/kyria/keymaps/default/readme.md 25 | --- 26 | 27 | -------------------------------------------------------------------------------- /src/posts/keymaps/dickiedyce-corneish_zen.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: dickiedyce 3 | baseLayouts: [Workman] 4 | firmwares: [ZMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: true 12 | keybindings: [] 13 | keyboard: Corne 14 | keyCount: 42 15 | keymapImage: dickiedyce-corneish_zen.png 16 | keymapUrl: https://github.com/dickiedyce/zmk-config-zen-2/blob/main/config/corneish_zen.keymap 17 | languages: [English] 18 | layerCount: 2 19 | OS: [MacOS] 20 | stagger: columnar 21 | summary: A Workman-based Corneish-Zen, with two layers, making extreme use of tap-dance keys and some combos. Has a home-number row, and lower parens row. 22 | title: Workman Corneish-Zen 23 | writeup: # not mandatory 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/dlip-engram.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: dlip 3 | baseLayouts: [Engram] 4 | firmwares: [QMK] 5 | hasHomeRowMods: true 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: tamatama 14 | keyCount: 28 15 | keymapImage: https://raw.githubusercontent.com/dlip/qmk_firmware/dlip/keyboards/tamatama/keymaps/engram/dlip's-28-key-engram-layout.png 16 | keymapUrl: https://github.com/dlip/qmk_firmware/tree/dlip/keyboards/tamatama/keymaps/engram 17 | languages: [English] 18 | layerCount: 5 19 | OS: [Windows, MacOS, Linux] 20 | stagger: columnar 21 | summary: A compact but full-featured and intuitive layout for programming and prose with chording for frequent words 22 | title: Dlip's 28 Key Engram Layout 23 | writeup: https://github.com/dlip/qmk_firmware/blob/dlip/keyboards/tamatama/keymaps/engram/README.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/dolie.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: dolie 3 | baseLayouts: [BÉPO] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Vim] 13 | keyboard: MiniDox 14 | keyCount: 36 15 | keymapImage: https://user-images.githubusercontent.com/18349922/77227968-f42d9980-6b7b-11ea-9a11-58b1f47842e9.png 16 | keymapUrl: https://github.com/qmk/qmk_firmware/blob/user-keymaps-still-present/keyboards/maple_computing/minidox/keymaps/bepo 17 | languages: [French, English] 18 | layerCount: 4 19 | OS: [] 20 | stagger: columnar 21 | summary: Keys have been grouped and rearranged to meet the needs of English and French prose as well as programming (in particular javascript). Most used groups are placed at the opposite of the thumb layer-activation key, in an effort not to use the same hand too much. 22 | title: MiniDox Bépo 23 | writeup: https://github.com/qmk/qmk_firmware/blob/user-keymaps-still-present/keyboards/maple_computing/minidox/keymaps/bepo/readme.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/dovenyi.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: dovenyi 3 | baseLayouts: [ÜASETGHNKLÉ] 4 | firmwares: [QMK] 5 | hasHomeRowMods: true 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: true 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: S.Torm46 14 | keyCount: 46 15 | keymapImage: dovenyi.png 16 | keymapUrl: http://www.keyboard-layout-editor.com/#/gists/9b6379d4940a356bf904ea5452bf3956 17 | languages: [Hungarian, English] 18 | layerCount: 5 19 | OS: [] 20 | stagger: columnar 21 | summary: This Tormentor keymap was designed for my workplace/hands/fingers aaand for Hungarian (+9 vowels). It probably won't fit with your needs, but the concepts and workflow might help your own project. 22 | title: dovenyi's Tormentor keymap 23 | writeup: https://golem.hu/build-log/build-the-storm/ 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/dschil138.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: dschil138 3 | baseLayouts: [Fulcrum] 4 | firmwares: [KMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: true 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: Fulcrum 14 | keyCount: 20 15 | keymapImage: https://github.com/dschil138/Fulcrum/raw/main/photos/fulcrum-layout-all-layers-2.jpg 16 | keymapUrl: https://github.com/dschil138/Fulcrum 17 | languages: [English] 18 | layerCount: 4 19 | OS: [] 20 | stagger: columnar 21 | summary: "The Fulcrum Keyboard is an ergo-mechanical split keyboard with extra thumb functionality. It has 20 keys, two rotary encoders, and two 5-way switches. The 20-key version uses a significant number of combos and features “word keys“: macro keys in the alpha layer that type a whole word at once, like “the” and “and”." 22 | title: Fulcrum 23 | writeup: https://github.com/dschil138/Fulcrum/blob/main/README.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/duckyb.md: -------------------------------------------------------------------------------- 1 | --- 2 | # Kyek on Discord 3 | author: duckyb 4 | baseLayouts: [QWERTY] 5 | firmwares: [ZMK] 6 | hasHomeRowMods: false 7 | hasLetterOnThumb: false 8 | hasRotaryEncoder: false 9 | isAutoShiftEnabled: false 10 | isComboEnabled: true 11 | isSplit: true 12 | isTapDanceEnabled: false 13 | keybindings: [] 14 | keyboard: Ferris 15 | keyCount: 34 16 | keymapImage: https://user-images.githubusercontent.com/27895007/153905240-56eaac36-95c7-453a-8f19-c860974b635d.svg 17 | keymapUrl: https://github.com/duckyb/zmk-sweep 18 | languages: [English, Italian] 19 | layerCount: 6 20 | OS: [Windows] 21 | stagger: columnar 22 | summary: 23 | title: duckyb's Ferris Sweep ZMK Configuration 24 | writeup: 25 | --- 26 | -------------------------------------------------------------------------------- /src/posts/keymaps/eldritch_elder-splaytoraid40.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: eldritch-elder 3 | baseLayouts: [Hands Down] 4 | firmwares: [ZMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: true 7 | hasRotaryEncoder: true 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: false 11 | isTapDanceEnabled: false 12 | keybindings: [Vim] 13 | keyboard: Splaytoraid40 14 | keyCount: 40 15 | keymapImage: eldritch_elder-splaytoraid40.webp 16 | keymapUrl: https://codeberg.org/eldritch-empress/keymap 17 | languages: [English, German] 18 | layerCount: 4 19 | OS: [Linux] 20 | stagger: columnar 21 | summary: "a modified hands down gold layout on the wonderful splaytoraid40 by freya-irl" 22 | title: "freja's layout on the splaytoraid" 23 | writeup: # (link broke) https://git.sr.ht/~jat/keymap/tree/zmk/splaytoraid40/item/main.org 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/fculpo.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: fculpo 3 | baseLayouts: ["QWERTY"] 4 | firmwares: [QMK] 5 | hasHomeRowMods: False 6 | hasLetterOnThumb: False 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: Redox 14 | keyCount: 70 15 | keymapImage: fculpo.png 16 | keymapUrl: https://github.com/fculpo/qmk_firmware/tree/master/keyboards/redox/keymaps/fculpo 17 | languages: ['English'] 18 | layerCount: 4 19 | OS: ['MacOS'] 20 | stagger: columnar 21 | summary: "This keymap modifies the default keymap for the awesome Redox keyboard designed by Mattia Dal Ben. Also heavily inspired by nrichers's layout." 22 | title: "Tweaked keymap for Redox" 23 | writeup: https://github.com/fculpo/qmk_firmware/tree/master/keyboards/redox/keymaps/fculpo/readme.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/ferrance.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: ferrance 3 | baseLayouts: [Colemak,QWERTY] 4 | firmwares: [QMK] 5 | hasHomeRowMods: true 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: true 12 | keybindings: [] 13 | keyboard: Corne 14 | keyCount: 42 15 | keymapImage: https://raw.githubusercontent.com/ferrance/dizave42/main/images/crkbd-dizave42.jpg 16 | keymapUrl: https://github.com/ferrance/dizave42 17 | languages: [English] 18 | layerCount: 6 19 | OS: [MacOS,Windows] 20 | stagger: columnar 21 | summary: Loosely based on Miryoku, optimized for OS-independent legal writing on mac and windows. 22 | title: dizave42 23 | writeup: https://github.com/ferrance/dizave42/blob/main/readme.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/finex.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: finex 3 | baseLayouts: [Colemak] 4 | firmwares: [QMK] 5 | hasHomeRowMods: true 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: true 12 | keybindings: [TWM] 13 | keyboard: Redox 14 | keyCount: 70 15 | keymapImage: https://raw.githubusercontent.com/finex/redox-finex/simpleawesome/images/redox-finex.png 16 | keymapUrl: https://github.com/finex/redox-finex/tree/simpleawesome 17 | languages: [Italian, English] 18 | layerCount: 7 19 | OS: [Linux] 20 | stagger: columnar 21 | summary: "This keymap use the default one with some changes to suit my needs. Mainly having most used symbol on a separated layer copying the common symbols from the number keys to the second row, adding other symbols and ◌̀ ◌́ dead keys for accents." 22 | title: "Customized keymap for Redox by Leonardo (FiNeX) Finetti" 23 | writeup: https://github.com/finex/redox-finex/blob/simpleawesome/readme.org 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/fluffactually.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: fluffactually 3 | baseLayouts: ["QWERTY"] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Vim] 13 | keyboard: Iris 14 | keyCount: 56 15 | keymapImage: fluffactually.png 16 | keymapUrl: https://github.com/fluffactually/qmk_firmware/tree/master/keyboards/keebio/iris/keymaps/fluffactually 17 | languages: ['English'] 18 | layerCount: 3 19 | OS: [Linux] 20 | stagger: columnar 21 | summary: A gentle departure from the default layout. 22 | title: "Iris layout by fluffactually" 23 | writeup: https://github.com/fluffactually/qmk_firmware/tree/master/keyboards/keebio/iris/keymaps/fluffactually/readme.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/frogmouth-kyria-rsthd_prime.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: frogmouth 3 | baseLayouts: [RSTHD] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: true 7 | hasRotaryEncoder: true 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: Kyria 14 | keyCount: 41 15 | keymapImage: https://raw.githubusercontent.com/frogm0uth/keyboard-firmware/main/kyria-rsthd-prime/docs/images/kyria-rsthd-prime-alpha.png 16 | keymapUrl: https://github.com/frogm0uth/keyboard-firmware/tree/main/kyria-rsthd-prime 17 | languages: [English] 18 | layerCount: 6 19 | OS: [MacOS] 20 | stagger: columnar 21 | summary: This is the keymap for my Kyria keyboard from splitkb.com. The alpha layout is originally based on RSTHD but it's been modified to minimize usage of the inner index column. Features in the code include runtime switching between Mac/Windows/Linux shortcuts and a custom implementation of "comborolls". 22 | title: frogmouth's Kyria RSTHD/Prime 23 | writeup: https://github.com/frogm0uth/keyboard-firmware/blob/main/kyria-rsthd-prime/README.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/fsck-eco.md: -------------------------------------------------------------------------------- 1 | --- 2 | OS: [] 3 | author: fsck 4 | firmwares: [QMK] 5 | hasHomeRowMods: False 6 | hasLetterOnThumb: False 7 | keymapImage: fsck-eco.png 8 | keyCount: 56 9 | keyboard: ECO 10 | baseLayouts: ["QWERTY"] 11 | languages: ['English'] 12 | layerCount: 2 13 | title: "ECO Layout by fsck" 14 | isSplit: True 15 | stagger: ortholinear 16 | summary: 17 | keymapUrl: https://github.com/fsck/qmk_firmware/tree/master/keyboards/eco/keymaps/fsck 18 | writeup: https://github.com/fsck/qmk_firmware/tree/master/keyboards/eco/keymaps/fsck/readme.md 19 | --- 20 | -------------------------------------------------------------------------------- /src/posts/keymaps/getreuer.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: getreuer 3 | baseLayouts: ["Magic Sturdy"] 4 | firmwares: [QMK] 5 | hasHomeRowMods: true 6 | hasLetterOnThumb: true # Repeat key in thumb cluster 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: Dactyl 14 | keyCount: 52 15 | keymapImage: https://raw.githubusercontent.com/getreuer/qmk-keymap/refs/heads/main/doc/layout-0-base.png 16 | keymapUrl: https://github.com/getreuer/qmk-keymap 17 | languages: [English] 18 | layerCount: 5 19 | OS: [Linux, Windows] 20 | stagger: columnar 21 | summary: Autocorrection, caps word, custom shift keys, macro buttons, word selection, mouse turbo click, layer lock key,… Who knew a keyboard could do so much? 22 | title: Pascal Getreuer's QMK keymap 23 | writeup: https://github.com/getreuer/qmk-keymap/blob/main/README.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/gfolgert.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: gfolgert 3 | baseLayouts: [QWERTY] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: Corne 14 | keyCount: 42 15 | keymapImage: https://raw.githubusercontent.com/gfolgert/qmk_firmware/master/keyboards/crkbd/keymaps/gfolgert/images/01-chordic-layout-full.png 16 | keymapUrl: https://github.com/gfolgert/qmk_firmware/tree/master/keyboards/crkbd/keymaps/gfolgert 17 | languages: [English] 18 | layerCount: 3 19 | OS: [MacOS, Windows] 20 | stagger: columnar 21 | summary: This layout heavily relies on chording for symbols and actions. All letters, symbols, arrow keys, media keys, and modifiers are instantaneous without the need for layers, hold activation, or double taps. Chord positions are intuitive and created with mnemonics in mind. Layers are only reserved for number keys and function keys. 22 | title: Chordic 23 | writeup: https://github.com/gfolgert/qmk_firmware/blob/master/keyboards/crkbd/keymaps/gfolgert/README.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/godalming123.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: godalming123 3 | baseLayouts: [QWERTY] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: true 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Vim, Helix] 13 | keyboard: "Corne" 14 | keyCount: 30 15 | keymapImage: "https://github.com/godalming123/qmk-keymap/raw/main/keymap.svg" 16 | keymapUrl: "https://github.com/godalming123/qmk-keymap" 17 | languages: [English] 18 | layerCount: 2 19 | OS: [Windows, Linux] 20 | stagger: columnar 21 | summary: "A 30 key keymap designed for comfort, low cognitive load and speed." 22 | title: "Godalming123's 30 key keymap" 23 | writeup: "https://github.com/godalming123/qmk-keymap/blob/main/readme.md" 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/grassfedreeve.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: grassfedreeve 3 | baseLayouts: ["Aptmak"] 4 | firmwares: [ZMK] 5 | hasHomeRowMods: true 6 | hasLetterOnThumb: true 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: ʻākohekohe 14 | keyCount: 26 15 | keymapImage: "https://raw.githubusercontent.com/grassfedreeve/akohekohe/main/img/example_keymap.svg" 16 | keymapUrl: "https://github.com/grassfedreeve/zmk-config-akohekohe" 17 | languages: [English] 18 | layerCount: 4 19 | OS: ["Linux", "Windows"] 20 | stagger: columnar 21 | summary: This is the layout I use on my 26 key split keyboard. Base Layer is Aptmak with quite a few combos, layers are activated by holding the thumb keys. 22 | title: reeve's keymap for 26-30 keys 23 | writeup: "" 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/h_youhei.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: h-youhei 3 | # I don't know how to call this crazy layout 4 | baseLayouts: ["Yes McTab"] 5 | firmwares: [QMK] 6 | hasHomeRowMods: false 7 | hasLetterOnThumb: false 8 | hasRotaryEncoder: false 9 | isAutoShiftEnabled: false 10 | isComboEnabled: false 11 | isSplit: true 12 | isTapDanceEnabled: false 13 | keybindings: [] 14 | keyboard: ErgoDox 15 | keyCount: 76 16 | keymapImage: https://raw.githubusercontent.com/h-youhei/qmk_keymap/master/img/ascii-layout.png 17 | keymapUrl: https://github.com/h-youhei/qmk_keymap 18 | languages: [Japanese, English] 19 | layerCount: 5 20 | OS: [] 21 | stagger: columnar 22 | summary: Keymap removing all alpha keys from pinky columns. Index fingers rest on S and T. 23 | title: No Pinkies 24 | writeup: https://github.com/h-youhei/qmk_keymap/blob/master/README.md 25 | --- 26 | -------------------------------------------------------------------------------- /src/posts/keymaps/haraldkubota.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: haraldkubota 3 | baseLayouts: [QWERTY] 4 | firmwares: [QMK] 5 | hasHomeRowMods: true 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: true 12 | keybindings: [Vim] 13 | keyboard: Corne 14 | keyCount: 43 15 | keymapImage: https://raw.githubusercontent.com/haraldkubota/static-files/master/corne/corne-v4.png 16 | keymapUrl: https://github.com/haraldkubota/static-files/blob/5f23e24eaa18bf1ff087ef41f7909e58bfc91d4f/corne/ 17 | languages: [English] 18 | layerCount: 4 19 | OS: [Linux, Windows] 20 | stagger: columnar 21 | summary: A 43 key ergonomic columnar layout for corne-style split keyboards. After weeks of changing the layout, this worked best for me. 22 | title: Bracket Left 23 | writeup: https://hkubota.wordpress.com/2025/02/23/split-keyboard-layout-updates/ 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/isaacsa51-halcyon_kyria.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: isaacsa51 3 | baseLayouts: [Colemak] 4 | firmwares: [QMK] 5 | hasHomeRowMods: true 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: true 12 | keybindings: [TWM] 13 | keyboard: Kyria 14 | keyCount: 50 15 | keymapImage: https://github.com/isaacsa51/qmk_userspace/raw/isaac/res/combined.png 16 | keymapUrl: https://github.com/isaacsa51/qmk_userspace/tree/isaac 17 | languages: [English, Spanish] 18 | layerCount: 10 19 | OS: [Windows, MacOS, Linux] 20 | stagger: columnar 21 | summary: Spanish/English focused for Tiling WM with heavy use of combos for symbols, layer for JetBrain's IDES and OS Switching for tilde usage for the vowels. Featuring TFT Display and a Cirque Trackpad to switch from mouse movements to scroll. 22 | title: Spanish/English Kyria with Cirque Trackpad and OS Toggler 23 | writeup: 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/isaacsa51.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: isaacsa51 3 | baseLayouts: [Colemak] 4 | firmwares: [ZMK] 5 | hasHomeRowMods: true 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: Corne 14 | keyCount: 42 15 | keymapImage: https://raw.githubusercontent.com/isaacsa51/zmk-config-corne/refs/heads/master/keymap.png 16 | keymapUrl: https://github.com/isaacsa51/zmk-config-corne 17 | languages: [English, Spanish] 18 | layerCount: 7 19 | OS: [Windows, MacOS, Linux] 20 | stagger: columnar 21 | summary: Miryoku-like layout for spanish/english programmers 22 | title: Spanish/English Programming Corne Keymap 23 | writeup: 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/ishtob.md: -------------------------------------------------------------------------------- 1 | --- 2 | OS: [] 3 | author: ishtob 4 | firmwares: [QMK] 5 | hasHomeRowMods: False 6 | hasLetterOnThumb: False 7 | keymapImage: ishtob.png 8 | keyCount: 48 9 | keyboard: Planck 10 | baseLayouts: ["QWERTY"] 11 | languages: ['English'] 12 | layerCount: 10 13 | title: "Ishtob's personal planck layout" 14 | isSplit: False 15 | stagger: ortholinear 16 | summary: 17 | keymapUrl: https://github.com/ishtob/qmk_firmware/tree/master/keyboards/planck/keymaps/ishtob 18 | writeup: https://github.com/ishtob/qmk_firmware/tree/master/keyboards/planck/keymaps/ishtob/readme.md 19 | --- -------------------------------------------------------------------------------- /src/posts/keymaps/jcmkk3.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: jcmkk3 3 | baseLayouts: [Hands Down] 4 | firmwares: [ZMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: Hummingbird 14 | keyCount: 30 15 | keymapImage: https://github.com/jcmkk3/zmk-config/raw/main/images/keymap.svg 16 | keymapUrl: https://github.com/jcmkk3/zmk-config 17 | languages: [English] 18 | layerCount: 4 19 | OS: [] 20 | stagger: columnar 21 | summary: ZMK Config for my Hummingbird (and related) keyboards 22 | title: jcmkk3's config for Hummingbird keyboards 23 | writeup: https://github.com/jcmkk3/zmk-config/blob/main/README.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/josefadamcik.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: josefadamcik 3 | baseLayouts: ["QWERTY", "Colemak"] 4 | firmwares: [QMK] 5 | hasHomeRowMods: False 6 | hasLetterOnThumb: False 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: Katana60 14 | keyCount: 70 15 | keymapImage: josefadamcik.png 16 | keymapUrl: https://github.com/josefadamcik/qmk_firmware/tree/master/keyboards/rominronin/katana60/rev1/keymaps/josefadamcik 17 | languages: ['English'] 18 | layerCount: 8 19 | OS: ['Windows', 'MacOS', 'Linux'] 20 | stagger: row 21 | summary: "Based on the default Katana60 layout, customized by Josef Adamcik with several basic layers (Colemak vs Qwerty, Mac OS vs Linux/Win)" 22 | title: "Multi OS Katana60 layout" 23 | writeup: https://github.com/josefadamcik/qmk_firmware/tree/master/keyboards/rominronin/katana60/rev1/keymaps/josefadamcik/readme.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/jporter_dev.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: jporter-dev 3 | baseLayouts: [QWERTY] 4 | firmwares: [QMK,ZMK] 5 | hasHomeRowMods: true 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: true 12 | keybindings: [] 13 | keyboard: Corne 14 | keyCount: 36 15 | keymapImage: https://user-images.githubusercontent.com/1226637/167232280-c3c752ee-3e7a-4790-93ec-1ba8a790c9fc.png 16 | keymapUrl: https://github.com/jporter-dev/keymaps 17 | languages: [English] 18 | layerCount: 4 19 | OS: [MacOS,Linux,Windows] 20 | stagger: columnar 21 | summary: Keymap for 5x3+2 Corne Keyboard with a numpad/arrow key layer and a symbol layer that's not too unique 22 | title: jporter-dev's simple 36-key keymap for the Corne 23 | writeup: "" 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/justinmklam.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: justinmklam 3 | baseLayouts: [QWERTY] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: true 12 | keybindings: [Vim] 13 | keyboard: Corne 14 | keyCount: 46 15 | keymapImage: https://raw.githubusercontent.com/justinmklam/corne-keyboard/refs/heads/main/keymap_drawer/keymap.svg 16 | keymapUrl: https://github.com/justinmklam/corne-keyboard 17 | languages: [English] 18 | layerCount: 4 19 | OS: [MacOS, Linux] 20 | stagger: columnar 21 | summary: A 46-key split layout optimized for vim-centric software development on macOS. 22 | title: justinmklam's Corne Keyboard Layout 23 | writeup: https://www.justinmklam.com/posts/2025/05/corne-keyboard/ 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/jwon.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: jwon 3 | baseLayouts: [Dvorak, QWERTY] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: Kinesis 14 | keyCount: 86 15 | keymapImage: jwon.png 16 | keymapUrl: https://github.com/jwon/qmk_firmware/tree/master/keyboards/kinesis/keymaps/jwon 17 | languages: ['English'] 18 | layerCount: 4 19 | OS: [MacOS] 20 | stagger: columnar 21 | summary: Loosely based off Programmer Dvorak and ThePrimeagen's Real Programmer's Dvorak 22 | title: "jwon's Programmer Dvorak" 23 | writeup: https://github.com/jwon/qmk_firmware/tree/master/keyboards/kinesis/keymaps/jwon/readme.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/kawamashi.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: Kawamashi 3 | baseLayouts: [BÉPO] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: true 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: ErgoDox 14 | keyCount: 68 15 | keymapImage: kawamashi.webp 16 | keymapUrl: https://configure.ergodox-ez.com/ergodox-ez/layouts/wOl03/latest/0 17 | languages: [French] 18 | layerCount: 3 19 | OS: [Windows] 20 | stagger: columnar 21 | summary: Keyboard layout derived from BÉPO and optimised for split ortholinear and columnar-staggered keyboards like the ErgoDox, with two secondary layers (scientific symbols + numpad / other symbols + function keys) accessible with the thumb. 22 | title: FR-Godox 23 | writeup: https://bepo.fr/wiki/Utilisateur:Kawamashi 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/keymaps.11tydata.js: -------------------------------------------------------------------------------- 1 | function oxfordJoin(coll) { 2 | return coll.length < 2 ? coll.join(", ") : coll.slice(0, -1).join(", ") + ", and " + coll[coll.length-1]; 3 | } 4 | 5 | module.exports = { 6 | layout: "layouts/keymapdb_entry.njk", 7 | eleventyComputed: { 8 | permalink: (data) => `keymaps/${data.page.fileSlug}/index.html`, 9 | keymapImage: (data) => { 10 | if (data.keymapImage) { 11 | if (data.keymapImage.search(/^https?:\/\//) !== -1) { 12 | return data.keymapImage.replace("http:", "https:"); 13 | } 14 | return `/assets/img/keymaps/${data.keymapImage}`; 15 | } else { 16 | return false; 17 | } 18 | }, 19 | description: (data) => `Get inspired by ${data.author}'s ${data.keyCount}-key ${data.languages.length > 1 ? "multilingual " : ""}${data.keyboard} keymap and browse other ${oxfordJoin(data.firmwares)} keymaps like this.`, 20 | ogImage: (data) => data.keymapImage, 21 | imageAlt: (data) => `${data.isSplit ? "Split" : "Non-split"} ${data.stagger}-staggered ${data.keyboard} with ${oxfordJoin(data.baseLayouts)} legends.` 22 | } 23 | }; 24 | -------------------------------------------------------------------------------- /src/posts/keymaps/khitsule-atreus.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: khitsule 3 | baseLayouts: ["QWERTY"] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Gaming] 13 | keyboard: Atreus 14 | keyCount: 42 15 | keymapImage: khitsule-atreus.png 16 | keymapUrl: https://github.com/qmk/qmk_firmware/tree/user-keymaps-still-present/keyboards/atreus/keymaps/khitsule 17 | languages: ['English'] 18 | layerCount: 5 19 | OS: [Windows] 20 | stagger: columnar 21 | summary: 22 | title: "Atreus Layout by Khitsule" 23 | writeup: https://github.com/qmk/qmk_firmware/tree/user-keymaps-still-present/keyboards/atreus/keymaps/khitsule/readme.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/khitsule-iris.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: khitsule 3 | baseLayouts: ["QWERTY"] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Gaming] 13 | keyboard: Iris 14 | keyCount: 56 15 | keymapImage: khitsule-iris.png 16 | keymapUrl: https://github.com/qmk/qmk_firmware/tree/user-keymaps-still-present/keyboards/keebio/iris/keymaps/khitsule 17 | languages: ['English'] 18 | layerCount: 5 19 | OS: [Windows] 20 | stagger: columnar 21 | summary: 22 | title: "Iris Layout by Khitsule" 23 | writeup: https://github.com/qmk/qmk_firmware/blob/user-keymaps-still-present/keyboards/keebio/iris/keymaps/khitsule/readme.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/kkga.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: kkga 3 | baseLayouts: [QWERTY, Colemak] 4 | firmwares: [QMK] 5 | hasHomeRowMods: true 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Kakoune, TWM] 13 | # Also dacman4x6 and Bastyl 14 | keyboard: Atreus 15 | keyCount: 34 16 | keymapImage: kkga.png 17 | keymapUrl: https://github.com/kkga/config/tree/625d91022c4163e0dad674270d5a147692eaf9b2/.config/qmk 18 | languages: [English] 19 | layerCount: 6 20 | OS: [Linux] 21 | stagger: columnar 22 | summary: Relatively simple 34-key keymap mostly inspired by Seniply and "Callum-style", but with a few tweaks. 23 | title: A keyboard layer system for 34 keys 24 | writeup: "" 25 | --- 26 | -------------------------------------------------------------------------------- /src/posts/keymaps/konomu.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: konomu 3 | baseLayouts: [Frogpad] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: Corne 14 | keyCount: 21 15 | keymapImage: konomu.png 16 | keymapUrl: https://github.com/konomu/qmk_firmware/tree/frogpad/keyboards/crkbd/keymaps/frogpad 17 | languages: [English] 18 | layerCount: 4 19 | OS: [Windows] 20 | stagger: columnar 21 | summary: Improved One-Handed Frogpad layout, implemented in QMK. 22 | title: konomu's one handed keyboard 23 | writeup: https://github.com/konomu/qmk_firmware/blob/frogpad/keyboards/crkbd/keymaps/frogpad/readme.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/lehoff.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: lehoff 3 | baseLayouts: [Norman] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Vim, Emacs] 13 | keyboard: MiniDox 14 | keyCount: 36 15 | keymapImage: lehoff.png 16 | keymapUrl: https://github.com/qmk/qmk_firmware/blob/user-keymaps-still-present/keyboards/maple_computing/minidox/keymaps/norman 17 | languages: [English, Danish] 18 | layerCount: 4 19 | OS: [MacOS] 20 | stagger: columnar 21 | summary: 22 | - Raise/lower layers focus first on one-handed use 23 | - Numpad on right hand with raise layer 24 | - Navigation on left hand with lower layer (ESDF) 25 | - All thumb keys are hold/tap dual function keys 26 | title: MiniDox Norman Layout by LeHoff 27 | writeup: https://github.com/qmk/qmk_firmware/blob/user-keymaps-still-present/keyboards/maple_computing/minidox/keymaps/norman/readme.md 28 | --- 29 | -------------------------------------------------------------------------------- /src/posts/keymaps/lolo.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: LoLo 3 | baseLayouts: [ЙЦУКЕН, QWERTY] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: true 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: Snag 14 | keyCount: 31 15 | keymapImage: lolo.png 16 | keymapUrl: "" 17 | languages: [Russian] 18 | layerCount: 5 19 | OS: [Windows, Linux] 20 | stagger: row 21 | summary: A minimalist keyboard that emerged as a symbiosis of the ideas of the Gherkin and Katana60 keyboards. Gherkin is bad because it is impossible to use when you add a space since it takes up the usual lower row of characters. Katana60 is good for everything except that it is expensive and not made by me. 22 | title: Каряга 23 | writeup: https://web.archive.org/web/20220706001902/https://klava.wiki/hypha/клавиатуры/коряга 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/lucordes.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: lucordes 3 | baseLayouts: [Colemak] 4 | firmwares: [ZMK] 5 | hasHomeRowMods: true 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: true 12 | keybindings: [] 13 | keyboard: Ferris 14 | keyCount: 33 15 | keymapImage: https://github.com/user-attachments/assets/3b3d65f9-8baa-4e73-9c62-1e845fa25314 16 | keymapUrl: https://github.com/lucordes/zmk-config-nomouse 17 | languages: [English, Italian, German] 18 | layerCount: 12 19 | OS: [Windows, Linux, Android] 20 | stagger: columnar 21 | summary: Very easy efficient three layer keymap based on Colemak-DH adjusted for Italian/German. 22 | title: Sweep International Keymap 23 | writeup: https://github.com/lucordes/zmk-config-nomouse/blob/master/README.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/magicmonty.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: magicmonty 3 | baseLayouts: ["QWERTY"] 4 | firmwares: [QMK] 5 | hasHomeRowMods: False 6 | hasLetterOnThumb: False 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isSplit: False 10 | isTapDanceEnabled: false 11 | keybindings: [] 12 | keyboard: Clueboard 66% 13 | keyCount: 66 14 | keymapImage: magicmonty.png 15 | keymapUrl: https://github.com/qmk/qmk_firmware/tree/user-keymaps-still-present/keyboards/clueboard/66/keymaps/magicmonty 16 | languages: ['English'] 17 | layerCount: 7 18 | OS: [Windows] 19 | stagger: row 20 | summary: 21 | - This layout is a combination of the mouse_keys and the win_optimized layouts 22 | - This layout is optimized for an ISO layout 23 | - The CapsLock is disabled and works as ESC when tapped and FN when held 24 | - The TAB key works as TAB when tapped, and HYPER (CTRL + ALT + SHIFT + CMD) when held 25 | - Notably, it also contains a MIDI layer. 26 | title: "Layout of @magicmonty" 27 | writeup: https://github.com/qmk/qmk_firmware/tree/user-keymaps-still-present/keyboards/clueboard/66/keymaps/magicmonty/readme.md 28 | --- 29 | -------------------------------------------------------------------------------- /src/posts/keymaps/manna_harbour.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: manna-harbour 3 | baseLayouts: [AZERTY,BEAKL,Colemak,Dvorak,Halmak,Workman,QWERTY,QWERTZ] 4 | firmwares: [QMK, ZMK, KMonad, KMK] 5 | hasHomeRowMods: true 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: true 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Vim,Emacs,TWM] 13 | keyboard: MiniDox 14 | keyCount: 36 15 | keymapImage: https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/cover/miryoku-kle-cover.png 16 | keymapUrl: https://github.com/manna-harbour/miryoku_qmk/tree/miryoku/users/manna-harbour_miryoku 17 | languages: [English] 18 | layerCount: 10 19 | OS: [Linux,Windows,MacOS] 20 | stagger: columnar 21 | summary: Miryoku is an ergonomic, minimal, orthogonal, and universal keyboard layout. 22 | title: Miryoku 23 | writeup: https://github.com/manna-harbour/miryoku 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/markstos.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: markstos 3 | baseLayouts: [QWERTY] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Vim, TWM] 13 | keyboard: Corne 14 | keyCount: 42 15 | keymapImage: https://mark.stosberg.com/content/images/2022/11/markstos-3x5-plus-1-layout-v2.2.png 16 | keymapUrl: https://github.com/markstos/qmk_firmware/tree/markstos/keyboards/crkbd/keymaps/markstos 17 | languages: [English] 18 | layerCount: 4 19 | OS: [Linux] 20 | stagger: columnar 21 | summary: 22 | - Be similar enough to conventional laptop keyboards 23 | - Most keys should be triggered by one or two key presses. 24 | - Minimize awkward hold-and-tap sequences by using one-shot modifiers. 25 | - Shift work from weak pinkies to strong thumbs 26 | - Thumbs should rest on commonly type keys 27 | - Vim- and TWM-friendly features 28 | - Include media keys 29 | title: Markstos Corne keyboard layout 30 | writeup: https://github.com/markstos/qmk_firmware/blob/markstos/keyboards/crkbd/keymaps/markstos/README.md 31 | --- 32 | -------------------------------------------------------------------------------- /src/posts/keymaps/matobaa-braille.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: matobaa 3 | baseLayouts: ["Perkins Brailler"] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: Braille 14 | keyCount: 8 15 | keymapImage: https://github.com/matobaa/braille_keyboard/raw/master/doc/layout.png 16 | keymapUrl: https://github.com/matobaa/braille_keyboard/tree/master 17 | languages: [English, Japanese] 18 | layerCount: 5 19 | OS: [] 20 | stagger: columnar 21 | summary: "A 8-key keyboard for braille characters" 22 | title: matobaa's Braille keyboard 23 | writeup: https://github.com/matobaa/braille_keyboard/blob/master/doc/UserManual.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/mattgemmell.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: mattgemmell 3 | baseLayouts: [QWERTY] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: true 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: Corne 14 | keyCount: 34 15 | keymapImage: https://raw.githubusercontent.com/mattgemmell/qmk_firmware/master/keyboards/crkbd/keymaps/mattgemmell/keymap_diagram.svg 16 | keymapUrl: https://github.com/mattgemmell/qmk_firmware/tree/master/keyboards/crkbd/keymaps/mattgemmell 17 | languages: [English] 18 | layerCount: 4 19 | OS: [MacOS] # MacOS is close enough to iPadOS 20 | stagger: columnar 21 | summary: 22 | - Callum mods 23 | - No animations, OLED, tap-dance, or combos 24 | - 4 layers in the usual Planck momentary setup 25 | - Mostly for writing fiction 26 | - Autoshift enabled 27 | - Includes numpad, inverted-T cursors, mouse and scroll-wheel, media keys, and system shortcuts 28 | - Optional per-key, per-layer RGB LED colours, configured intuitively in the same layout as the keymap 29 | - Small firmware size; easily fits on a Pro Micro 30 | title: Matt Gemmell's ever-evolving 34-key layout for iPadOS 31 | writeup: https://mattgemmell.scot/an-evolved-34-key-layout-for-ipados/ 32 | --- 33 | -------------------------------------------------------------------------------- /src/posts/keymaps/metheon.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: metheon 3 | baseLayouts: [Colemak] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: Ferris 14 | keyCount: 34 15 | keymapImage: https://raw.githubusercontent.com/metheon/qmk_layout/main/images/keymap.svg 16 | keymapUrl: https://github.com/metheon/qmk_layout 17 | languages: [English, Danish] 18 | layerCount: 8 19 | OS: [MacOS] 20 | stagger: columnar 21 | summary: My layout is based on having just 34 keys. I might use keyboards larger than this, but not smaller. It is a form factor which is simple, effective and intuitive. I use various keyboards and hence my keyboards layouts are created in the users folder and then shared among several other keyboards. 22 | title: metheon's QMK layout 23 | writeup: https://github.com/metheon/qmk_layout/blob/main/readme.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/minusfive.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: minusfive 3 | baseLayouts: [Colemak, Dvorak, QWERTY] 4 | firmwares: [ZMK] 5 | hasHomeRowMods: true 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: true 12 | keybindings: [Vim] 13 | keyboard: Corne 14 | keyCount: 42 15 | keymapImage: https://minusfive.com/knucklehead/corneish_zen.svg 16 | keymapUrl: https://github.com/minusfive/knucklehead 17 | languages: [English, Spanish] 18 | layerCount: 3 19 | OS: [MacOS, Linux] 20 | stagger: columnar 21 | summary: A mnemonic, macOS-optimized, 42 key ergonomic columnar layout for corne-style split keyboards, designed to ease the transition from standard ANSI Apple-style keyboards. 22 | title: 👊 Knucklehead 23 | writeup: https://github.com/minusfive/knucklehead/blob/main/README.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/mrkskk.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: mrkskk 3 | baseLayouts: [HDN] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: true 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: Charybdis Nano 14 | keyCount: 35 15 | keymapImage: https://raw.githubusercontent.com/mrkskk/qmk_firmware/mrkskk_branch/keyboards/bastardkb/charybdis/3x5/keymaps/mrkskk/charybdisnano-keymap2.svg 16 | keymapUrl: https://github.com/mrkskk/qmk_firmware/tree/mrkskk_branch/keyboards/bastardkb/charybdis/3x5/keymaps/mrkskk 17 | languages: [Danish, English] 18 | layerCount: 8 19 | OS: [Windows, MacOS] 20 | stagger: columnar 21 | summary: "This is my personal QMK firmware configuration for the Bastardkb Charybdis Nano. 22 | I use this keyboard for both windows and mac, and type in Danish and English" 23 | title: mrkskk's QMK keymap for the Charybdis Nano 24 | writeup: https://github.com/mrkskk/qmk_firmware/tree/mrkskk_branch/keyboards/bastardkb/charybdis/3x5/keymaps/mrkskk/readme.md 25 | --- 26 | -------------------------------------------------------------------------------- /src/posts/keymaps/nerdypepper.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: nerdypepper 3 | baseLayouts: [Colemak] 4 | firmwares: [ZMK] 5 | hasHomeRowMods: true 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Vim, Graphics/CAD] 13 | keyboard: Ferris 14 | keyCount: 34 15 | keymapImage: nerdypepper.png 16 | keymapUrl: https://git.peppe.rs/config/zmk/tree/config 17 | languages: [English] 18 | layerCount: 6 19 | OS: [Linux] 20 | stagger: columnar 21 | summary: My palms do not move across the desk at all, as I reach for keys. My daily use consists of a bit of prose and a lot of program. I mostly write Rust and Bash, and my layout has evolved to accomodate special characters from their grammars (angled brackets and hyphens, specifically). 22 | title: nerdypepper's programming layout for the Ferricy 23 | writeup: https://peppe.rs/posts/programming_on_34_keys/ 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/nfriend.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: nfriend 3 | baseLayouts: [Colemak, QWERTY, Dvorak] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: ErgoDox 14 | keyCount: 76 15 | keymapImage: nfriend.png 16 | keymapUrl: https://github.com/nfriend/qmk_firmware/tree/nfriend-ergodox-ez/keyboards/ergodox_ez/keymaps/nfriend 17 | languages: ['English'] 18 | layerCount: 13 19 | OS: [MacOS, Windows] 20 | stagger: columnar 21 | summary: 22 | - Custom symbols layer optimised for common JavaScript libraries 23 | - “Arrow key” layer that allows me to jump around code without leaving the home row 24 | - “Window management” layer for snapping windows to certain areas of my monitor 25 | - Unicode emoji layer 26 | - “Windows” and “macOS” mode that makes all my keyboard shortcuts consistent across the two operating systems 27 | title: "nfriend's ErgoDox EZ configuration" 28 | writeup: https://github.com/nfriend/qmk_firmware/tree/nfriend-ergodox-ez/keyboards/ergodox_ez/keymaps/nfriend/readme.md 29 | --- 30 | -------------------------------------------------------------------------------- /src/posts/keymaps/optozorax.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: optozorax 3 | baseLayouts: [ЙЦУКЕН, Dvorak] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: true 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Gaming] 13 | keyboard: Moonlander 14 | keyCount: 72 15 | keymapImage: optozorax.webp 16 | keymapUrl: https://github.com/optozorax/moonlander 17 | languages: [Russian, English] 18 | layerCount: 12 19 | OS: [Windows, Linux] 20 | stagger: columnar 21 | summary: optozorax's keymap for the Moonlander keyboard with an extremely detailed and very long write-up in Russian. 22 | title: Раскладка Ильи Шепрута 23 | writeup: https://optozorax.github.io/p/my-keyboard-layout/ 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/pcoves.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: Pablo COVES 3 | baseLayouts: [QWERTY] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Vim, TWM] 13 | keyboard: Corne 14 | keyCount: 32 15 | keymapImage: https://pcoves.gitlab.io/en/blog/i-was-wrong-36-keys-is-way-too-much/layout_4.png 16 | keymapUrl: https://github.com/pcoves/qmk_firmware/tree/pcoves/keyboards/crkbd/keymaps/pcoves 17 | languages: [English, French] 18 | layerCount: 2 19 | OS: [Linux, MacOS, Windows] 20 | stagger: columnar 21 | summary: Got tired of RSI, took three years to work on this, don't suffer anymore. 22 | title: Pablo Coves' 32-key layout 23 | writeup: https://pcoves.gitlab.io/en/blog/i-was-wrong-36-keys-is-way-too-much/ 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/peterxjang.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: peterxjang 3 | baseLayouts: [QWERTY] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Vim] 13 | keyboard: Gergo 14 | keyCount: 36 15 | keymapImage: https://peterxjang.com/img/36-key-layout.png 16 | keymapUrl: https://github.com/peterxjang/qmk_firmware/tree/master/keyboards/gergo/keymaps/peterxjang 17 | languages: [English] 18 | layerCount: 3 19 | OS: [MacOS] 20 | stagger: columnar 21 | summary: Nearly every key towards the middle of a standard keyboard are kept at their original positions. All relocated keys stay on the same hand. The layout doesn't overload any commonly used letter keys. There are only 2 additional layers (and all the commonly used symbols are on the first layer). 22 | title: Peter Jang's 36-key beginner-friendly keyboard layout 23 | writeup: https://peterxjang.com/blog/designing-a-36-key-custom-keyboard-layout.html 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/pfn.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: pfn 3 | baseLayouts: [QWERTY, Colemak] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: true 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Vim] 13 | keyboard: Kyria 14 | keyCount: 48 15 | keymapImage: pfn.png 16 | keymapUrl: https://github.com/pfn/qmk-keymap-kyria 17 | languages: [English] 18 | layerCount: 8 19 | OS: [Windows] 20 | stagger: columnar 21 | summary: Keymap edited entirely in QMK configurator, with custom code nonetheless. 22 | title: pfn's Kyria QMK keymap 23 | writeup: "" 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/precondition.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: precondition 3 | baseLayouts: [Colemak] 4 | firmwares: [QMK] 5 | hasHomeRowMods: true 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: true 12 | keybindings: [Vim] 13 | keyboard: Dactyl Manuform 5x6 14 | keyCount: 64 15 | keymapImage: precondition.jpg 16 | keymapUrl: https://github.com/precondition/dactyl-manuform-keymap/ 17 | languages: [English, French] 18 | layerCount: 7 19 | OS: [Linux, Windows] 20 | stagger: columnar 21 | summary: This keymap uses Colemak-DH for its alpha base with the addition of common French accented keys in direct access and dead keys for the less common ones. For use in English, French, and programming. Notably, home row mods are used, as well as tap dance and combos. 22 | title: Precondition's keymap for the Dactyl Manuform 5x6 23 | writeup: https://github.com/precondition/dactyl-manuform-keymap/blob/main/readme.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/pseudoku-ergowarp.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: pseudoku 3 | baseLayouts: [Warpman] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: true 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: ErgoWarp 14 | keyCount: 46 15 | keymapImage: https://raw.githubusercontent.com/pseudoku/Warped-keyboard/master/Photo/WarpmanLayout.png 16 | keymapUrl: https://github.com/pseudoku/ErgoWarp 17 | languages: [English] 18 | layerCount: 4 19 | OS: [] 20 | stagger: columnar 21 | summary: 22 | - Customizable parametric key placement 23 | - Minimize finger movement 24 | - Dense and comfortable thumb cluster 25 | - Built-in palm rest 26 | - Adjustable tenting 27 | - Tracking device 28 | title: Pseudoku's ErgoWarp 29 | writeup: https://github.com/pseudoku/ErgoWarp/blob/master/README.md 30 | --- 31 | -------------------------------------------------------------------------------- /src/posts/keymaps/purple_rw.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: purple-rw 3 | baseLayouts: [ARTSEY] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: Macropad v2 14 | keyCount: 8 15 | keymapImage: purple_rw.jpg 16 | keymapUrl: https://github.com/purple-rw/artsey-keyboard 17 | languages: [English] 18 | layerCount: 7 19 | OS: [] 20 | stagger: ortholinear 21 | summary: "My smallest OLKB based on ARTSEY-mod-Colemak with a few changes." 22 | title: Custom one-handed ARTSEY keyboard layout 23 | writeup: https://github.com/purple-rw/artsey-keyboard/blob/main/README.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/rafaelromao.md: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | title: rafaelromao's keyboard layout 4 | summary: A split keyboard layout optimized for Portuguese, English, working with numbers and software programming with VIM plugins. 5 | keymapUrl: https://github.com/rafaelromao/keyboards 6 | author: rafaelromao 7 | keymapImage: https://raw.githubusercontent.com/rafaelromao/keyboards/main/img/overview.png 8 | keyboard: Diamond 9 | keyCount: 24 10 | layerCount: 32 11 | firmwares: [ZMK] 12 | OS: ["MacOS"] 13 | keybindings: ["Vim", "Spreadsheets"] 14 | baseLayouts: ["Romak"] 15 | languages: ['Portuguese', 'English'] 16 | isSplit: True 17 | stagger: columnar 18 | hasHomeRowMods: True 19 | hasLetterOnThumb: False 20 | isTapDanceEnabled: False 21 | isComboEnabled: True 22 | isAutoShiftEnabled: False 23 | writeup: https://github.com/rafaelromao/keyboards/blob/main/readme.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/ranzq.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: RanzQ 3 | baseLayouts: [QWERTY, Colemak] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: true 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Gaming] 13 | keyboard: Sofle 14 | keyCount: 40 15 | keymapImage: ranzq.png 16 | keymapUrl: https://github.com/RanzQ/qmk-keymaps/tree/main/sofle-rgb 17 | languages: [English, Finnish] 18 | layerCount: 4 19 | OS: [Windows, Linux] 20 | stagger: columnar 21 | summary: I've tried to keep the mapping work for gaming so extra keys for modifiers. 22 | title: Compact Sofle 3x5+5 for fi-FI 23 | writeup: # not mandatory 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/ratoru.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: ratoru 3 | baseLayouts: [Colemak, QWERTY] 4 | firmwares: [QMK] 5 | hasHomeRowMods: true 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: true 12 | keybindings: [Vim, Gaming] 13 | keyboard: Kyria 14 | keyCount: 50 15 | keymapImage: ratoru.webp # dark 16 | keymapUrl: https://github.com/ratoru/qmk_keymap/tree/main 17 | languages: [English] 18 | layerCount: 6 19 | OS: [MacOS] 20 | stagger: columnar 21 | summary: "Inspired by Pascal Getreuer, these keymaps include efficient symbol layers based on character and bigram frequencies in programming languages. Features include Caps Word, dynamic and word selection macros, layer lock, RGB lighting, and “timeless” home row mods. Compiled via GitHub Actions." 22 | title: ratoru's keymaps for Kyria rev3 and Aurora Sweep 23 | writeup: https://ratoru.com/blog/choose-the-right-base-layout 24 | --- 25 | 26 | -------------------------------------------------------------------------------- /src/posts/keymaps/rayduck.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: rayduck 3 | baseLayouts: [Colemak] 4 | firmwares: [ZMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Vim] 13 | keyboard: Ferris 14 | keyCount: 34 15 | keymapImage: https://user-images.githubusercontent.com/16619392/150713551-243510f7-cc91-4e50-acc5-41118b8f07a5.png 16 | keymapUrl: https://github.com/rayduck/zmk-config 17 | languages: [English] 18 | layerCount: 6 19 | OS: [MacOS] 20 | stagger: columnar 21 | summary: An optimized keyboard layout for people who like Python, Vim, and tiny split keyboards ;) 22 | title: Pnohty 23 | writeup: https://github.com/rayduck/pnohty 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/rearman.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: rearman 3 | baseLayouts: [Dvorak] 4 | firmwares: [ZMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: Corne 14 | keyCount: 42 15 | keymapImage: "https://raw.githubusercontent.com/rearman/zmk-config/master/corne.svg" 16 | keymapUrl: "https://github.com/rearman/zmk-config/" 17 | languages: [English] 18 | layerCount: 3 19 | OS: [Windows, Linux] 20 | stagger: columnar 21 | summary: "Easy access to numpad/navpad, as well as combos for num-row and F-key row." 22 | title: rearman's Corne Layout 23 | writeup: "https://github.com/rearman/zmk-config/blob/master/README.md" 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/reinier.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: reinier 3 | baseLayouts: [QWERTY] 4 | firmwares: [QMK] 5 | hasHomeRowMods: true 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: no 12 | keybindings: [] 13 | # Also Moonlander 14 | keyboard: Microdox 15 | keyCount: 36 16 | keymapImage: https://raw.githubusercontent.com/reinier/dotfiles/main/hammerspoon/keyboard/keymap.png 17 | keymapUrl: https://github.com/reinier/dotfiles 18 | languages: [English, Dutch] 19 | layerCount: 5 20 | OS: [MacOS] 21 | stagger: columnar 22 | summary: "" 23 | title: reinier's keymap for the Microdox and Moonlander 24 | writeup: https://github.com/reinier/dotfiles#keyboards 25 | --- 26 | -------------------------------------------------------------------------------- /src/posts/keymaps/rootiest.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: rootiest 3 | baseLayouts: ["QWERTY", "Colemak", "Dvorak"] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: true 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: false 11 | isTapDanceEnabled: true 12 | keybindings: [] 13 | keyboard: Planck 14 | keyCount: 47 15 | keymapImage: https://github.com/rootiest/rootiest.github.io/raw/main/img/rootiest-planck_legend.png 16 | keymapUrl: https://github.com/qmk/qmk_firmware/tree/user-keymaps-still-present/keyboards/planck/keymaps/rootiest 17 | languages: ['English'] 18 | layerCount: 10 19 | OS: [Windows] 20 | stagger: ortholinear 21 | summary: This layout takes advantage of as many QMK features as possible for a huge complicated beast of a keyboard! 22 | title: "The Rootiest Planck Layout" 23 | writeup: https://github.com/qmk/qmk_firmware/tree/user-keymaps-still-present/keyboards/planck/keymaps/rootiest/readme.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/rstacruz.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: rstacruz 3 | baseLayouts: [Colemak, QWERTY] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Vim, TWM] 13 | keyboard: Planck 14 | keyCount: 36 15 | keymapImage: https://raw.githubusercontent.com/rstacruz/my_qmk_keymaps/main/preview.png 16 | keymapUrl: https://github.com/rstacruz/my_qmk_keymaps 17 | languages: [English] 18 | # Has more layers if one-handed frogpad mode is enabled 19 | layerCount: 7 20 | OS: [Linux] 21 | stagger: ortholinear 22 | summary: My (@rstacruz) personal keymaps for the QMK firmware for mechanical keyboards. 23 | title: Rico's keymap 24 | writeup: https://github.com/rstacruz/my_qmk_keymaps/blob/main/README.md 25 | --- 26 | -------------------------------------------------------------------------------- /src/posts/keymaps/rytjens.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: rytjens 3 | baseLayouts: [Colemak] 4 | firmwares: [ZMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Spreadsheets] 13 | keyboard: Chocofi 14 | keyCount: 34 15 | keymapImage: rytjens.webp 16 | keymapUrl: 17 | languages: [English] 18 | layerCount: 4 19 | OS: [Windows] 20 | stagger: columnar 21 | summary: "Keymap for a custom 34-key split keyboard that doesn't use homerow or callum style mods." 22 | title: "Home row mods-free 34-key" 23 | writeup: "" 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/sartak.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: sartak 3 | baseLayouts: [Canary] 4 | firmwares: [QMK,ZMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Vim] 13 | keyboard: Ferris 14 | keyCount: 34 15 | keymapImage: https://github.com/sartak/keyboard/raw/master/images/keymap.svg 16 | keymapUrl: https://github.com/sartak/keyboard 17 | languages: [English] 18 | layerCount: 4 19 | OS: [Linux] 20 | stagger: columnar 21 | summary: "I use the Canary layout on a lightly-modded Ferris Sweep with chocs. I use the lightest switches I can find, currently pinks. I use chords heavily to type entire words, inspired by Plover steno and CharaChorder. I have a duplicate key on a thumb which enables a bunch of functionality. No home row mods due to the presence of word-chords." 22 | title: sartak's keyboard config heavily focused on chording words 23 | writeup: https://github.com/sartak/keyboard/blob/master/README.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/scylla_german_gaming.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: Joschua Gandert 3 | baseLayouts: [QWERTY] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Gaming] 13 | keyboard: Scylla 14 | keyCount: 40 15 | keymapImage: scylla_german_gaming.webp 16 | keymapUrl: https://github.com/qmk/qmk_firmware/tree/user-keymaps-still-present/keyboards/bastardkb/scylla/keymaps/german_gaming 17 | languages: [German] 18 | layerCount: 6 19 | OS: [] 20 | stagger: columnar 21 | summary: "Designed with gaming in mind for a German user. It shifts left-side keys, placing WASD on ESDF for comfort on contoured Dactyl-style keyboards. The TGB column is moved to the left edge. RAISE layer has arrow keys, LOWER layer has Home, End, Page Down, Page Up, special characters, and a numpad. RAISE layer adds media keys." 22 | title: German Gaming Layout for the Scylla 23 | writeup: https://github.com/qmk/qmk_firmware/blob/user-keymaps-still-present/keyboards/bastardkb/scylla/keymaps/german_gaming/readme.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/seancolsen.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: seancolsen 3 | baseLayouts: [Colemak] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: Corne 14 | keyCount: 36 15 | keymapImage: seancolsen.webp 16 | keymapUrl: # (link broke after what I assume is a rewrite of git history) https://github.com/seancolsen/qmk_firmware/tree/5fe07c086712f25f2b652aa269264aab8610732c/keyboards/crkbd/keymaps/colsen 17 | languages: [English] 18 | layerCount: 2 19 | OS: [Linux] 20 | stagger: columnar 21 | summary: A keymap of my custom corne mini layout, which has 36 keys. It has a num layer which adds 27 more symbols, and then lots of combos for everything else. The combos make backspace, esc, and delete available from the home row, and everything else very close too! It's been awesome to use for both prose and coding! 22 | title: seancolsen's 36 key layout with only 2 layers — and lots of combos! 23 | writeup: https://www.reddit.com/r/ErgoMechKeyboards/comments/ifrd24/my_36_key_layout_with_only_2_layers_and_lots_of/ 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/sennomo-stifluqz.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: sennomo 3 | baseLayouts: [StiFluQz] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: true 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: Microdox 14 | keyCount: 18 15 | keymapImage: https://www.sennomo.net/stifluqz/stifluqz.png 16 | keymapUrl: https://github.com/sennomo/qmk_firmware/tree/master/keyboards/boardsource/microdox/keymaps/sennomo 17 | languages: [English] 18 | layerCount: 6 19 | OS: [Linux, Windows, MacOS] 20 | stagger: columnar 21 | summary: Half of a Microdox for one-handed typing. 22 | title: StiFluQz layout for half Microdox 23 | writeup: https://www.sennomo.net/stifluqz/ 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/shaykalyan.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: shaykalyan 3 | baseLayouts: [QWERTY] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: Lily58 14 | keyCount: 58 15 | keymapImage: shaykalyan.webp 16 | keymapUrl: https://github.com/shaykalyan/qmk_firmware/blob/lily58-keymap-add-shaykalyan/keyboards/lily58/keymaps/shaykalyan/ 17 | languages: [English] 18 | layerCount: 4 19 | OS: [Windows] 20 | stagger: columnar 21 | summary: Taking the default keymap as my starting point, I started to tweak things almost immediately to fit my typing style and allow me to ease into a layout that isn't too far from a standard QWERTY keyboard. Build log available. 22 | title: Shay Kalyan's Lily58 23 | writeup: https://shaykalyan.com/blog/posts/2021/lily58-split-keyboard-build/ 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/skychil.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: skychil 3 | baseLayouts: [Colemak] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: true 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Vim, TWM] 13 | keyboard: Kyria 14 | keyCount: 50 15 | keymapImage: https://user-images.githubusercontent.com/72839499/130539776-64c081e4-e99b-4d23-a7e8-4db67cdaea16.png 16 | keymapUrl: https://github.com/skychil/kombol 17 | languages: [English] 18 | layerCount: 7 19 | OS: [] 20 | stagger: columnar 21 | summary: A combo-based layout for Ergonomic Keyboards, implemented in QMK 22 | title: The Kombol Layout 23 | writeup: https://github.com/skychil/kombol/blob/main/README.md 24 | --- 25 | 26 | -------------------------------------------------------------------------------- /src/posts/keymaps/smallcat.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: smallwat3r 3 | baseLayouts: [smallcat] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: true 12 | keybindings: [Vim] 13 | keyboard: Smallcat 14 | keyCount: 26 15 | keymapImage: https://raw.githubusercontent.com/smallwat3r/qmk-keymap/refs/heads/main/images/keymap.png 16 | keymapUrl: https://github.com/smallwat3r/qmk-keymap 17 | languages: [English] 18 | layerCount: 9 19 | OS: [MacOS] 20 | stagger: columnar 21 | summary: The Smallcat is a minimalist keyboard with just 26 keys, designed to reduce finger strain and minimize movement—especially for the pinky fingers. To compensate for the limited number of keys, it relies heavily on combo inputs. Using very light switches is recommended, making the typing experience especially comfortable. 22 | title: Smallcat 23 | writeup: 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/smt-minivan.md: -------------------------------------------------------------------------------- 1 | --- 2 | OS: ['MacOS'] 3 | author: smt 4 | firmwares: [QMK] 5 | hasHomeRowMods: False 6 | hasLetterOnThumb: False 7 | keymapImage: smt-minivan.png 8 | keyCount: 45 9 | keyboard: tv44 10 | baseLayouts: ["Dvorak", "Colemak", "QWERTY"] 11 | languages: ['English'] 12 | layerCount: 6 13 | title: "smt's TV44 keymap" 14 | isSplit: False 15 | stagger: row 16 | summary: 17 | isComboEnabled: False 18 | isTapDanceEnabled: False 19 | isAutoShiftEnabled: False 20 | keymapUrl: https://github.com/smt/qmk_firmware/tree/master/keyboards/thevankeyboards/minivan/keymaps/smt 21 | writeup: https://github.com/smt/qmk_firmware/tree/master/keyboards/thevankeyboards/minivan/keymaps/smt/readme.md 22 | --- 23 | -------------------------------------------------------------------------------- /src/posts/keymaps/squizzler.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: squizzler 3 | baseLayouts: [RSTHD] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: true 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: MiniDox 14 | keyCount: 36 15 | keymapImage: https://live.staticflickr.com/65535/49926249372_77ab8eba95_z.jpg 16 | keymapUrl: https://github.com/qmk/qmk_firmware/tree/user-keymaps-still-present/keyboards/maple_computing/minidox/keymaps/rsthd_combos 17 | languages: [English] 18 | layerCount: 4 19 | OS: [MacOS] 20 | stagger: columnar 21 | summary: An attempt at porting Xuming Zeng’s RSTHD from the Ergodox to the Minidox, in a layout that favours prose rather than code, with symbols used in everyday writing such as various (Western) currencies in easy reach. 22 | title: The RSTHD Layout for minidox - Empowered with Combos 23 | writeup: https://github.com/qmk/qmk_firmware/blob/user-keymaps-still-present/keyboards/maple_computing/minidox/keymaps/rsthd_combos/readme.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/stevep99.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: stevep99 3 | baseLayouts: [Colemak] 4 | firmwares: [QMK, KMonad] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | # I honestly don't know what to put in since it supports so many keyboards 14 | keyboard: "" 15 | keyCount: 34 16 | keymapImage: https://stevep99.github.io/seniply/gfx/seniply_us_matrix_all.png 17 | keymapUrl: https://github.com/stevep99/seniply/tree/master/downloads 18 | languages: [English] 19 | layerCount: 5 20 | OS: [Linux, Windows, MacOS] 21 | # It supports all staggers so which should we pick? 22 | stagger: columnar 23 | summary: Seniply is an ergonomic, minimal keyboard layout for a keyboard with at least 34 keys. The minimum requirement is 30 keys in the main body plus 4 thumb-keys. All the features (and more) of a standard full-size keyboard are available by making use of six layers, which are activated via the thumb keys. The default base layer is Colemak-DH. 24 | title: Seniply 25 | writeup: https://stevep99.github.io/seniply/ 26 | --- 27 | -------------------------------------------------------------------------------- /src/posts/keymaps/t00mietum.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: t00mietum 3 | baseLayouts: [t00mietum, QWERTY] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: false 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: Planck 14 | keyCount: 48 15 | keymapImage: t00mietum.png 16 | keymapUrl: # (t00mietum deleted the repo on GH and the web archive only archived the landing page) https://github.com/t00mietum/keyboard/ 17 | languages: [English] 18 | layerCount: 9 19 | OS: [Linux] 20 | stagger: ortholinear 21 | summary: "A bottom-up ergonomic redesign keyboard layout for QMK programmable keyboards. There were no sacred cows - not modifiers, not symbols ... only statistically validated and human-tested comfort." 22 | title: t00mietum Comfort Keyboard 23 | writeup: https://web.archive.org/web/20230824075524/https://github.com/t00mietum/keyboard/ 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/theol0403.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: theol0403 3 | baseLayouts: [Graphite] 4 | firmwares: [ZMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: true 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Vim] 13 | keyboard: Rollow 14 | keyCount: 34 15 | keymapImage: https://github.com/theol0403/anachron-zmk-config/raw/master/assets/v1.2.0.png 16 | keymapUrl: https://github.com/theol0403/anachron-zmk-config 17 | languages: [English] 18 | layerCount: 5 19 | OS: [Linux] 20 | stagger: columnar 21 | summary: "Anachron is a keyboard layout designed for 34-key keyboards, implemented with ZMK. It aims to provide a fast, intuitive, and cohesive typing experience. It is similar to trilayer-based layouts such as callum or seniply, but provides a unique layer design and additional features taking advantage of ZMK. The implementation has been heavily inspired by the work of urob." 22 | title: Anachron ZMK Config ⌛⌨️ 23 | writeup: https://github.com/theol0403/anachron-zmk-config/blob/master/README.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/timeopochin-oat_y.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: timeopochin 3 | baseLayouts: [OAT Y, BÉPO, QWERTY, AZERTY] 4 | firmwares: [QMK] 5 | hasHomeRowMods: true 6 | hasLetterOnThumb: true 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Vim, TWM] 13 | keyboard: MiniDox 14 | keyCount: 36 15 | keymapImage: https://i.redd.it/jdjmkli09yi91.png 16 | keymapUrl: 17 | languages: [English] 18 | layerCount: 4 19 | OS: [Linux] 20 | stagger: columnar 21 | summary: Successor to RSI Terminated which I have been enjoying for years, but I need better multilingual support; this is my solution. 22 | title: OAT Y 23 | writeup: 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/timeopochin-rsi_terminated.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: timeopochin 3 | baseLayouts: [RSI Terminated] 4 | firmwares: [QMK] 5 | hasHomeRowMods: true 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Vim, TWM] 13 | keyboard: MiniDox 14 | keyCount: 36 15 | keymapImage: timeopochin-rsi_terminated.png 16 | keymapUrl: 17 | languages: [English] 18 | layerCount: 3 19 | OS: [Linux] 20 | stagger: columnar 21 | summary: An evolved ergonomic layout for the MiniDox 22 | title: RSI Terminated 23 | writeup: https://www.reddit.com/r/KeyboardLayouts/comments/kjhkar/rsi_terminated_an_evolved_ergonogic_layout_for/ 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/treeman.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: treeman 3 | baseLayouts: [RSTHD] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: true 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: true 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Vim, TWM] 13 | keyboard: Ferris 14 | keyCount: 34 15 | # There are more separate layer images 16 | keymapImage: https://www.jonashietala.se/images/t-34/base.png 17 | keymapUrl: https://github.com/treeman/qmk_firmware/tree/master/keyboards/ferris/keymaps/treeman 18 | languages: [English, Swedish] 19 | layerCount: 10 20 | OS: [Linux, Windows] 21 | stagger: columnar 22 | summary: T-34 is a 34 key layout that's focused on comfort and my personal usage patterns. I've written an article series where I document the revisions I make. 23 | title: The T-34 keyboard layout 24 | writeup: https://www.jonashietala.se/blog/2021/06/03/the-t-34-keyboard-layout/ 25 | --- 26 | -------------------------------------------------------------------------------- /src/posts/keymaps/trguhq.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: trguhq 3 | baseLayouts: [Futhark, Colemak, Dvorak, QWERTY] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: false 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: Planck 14 | keyCount: 48 15 | keymapImage: trguhq.webp 16 | keymapUrl: "https://github.com/trguhq/planck_rune" 17 | languages: [Danish, English, Faroese, Icelandic, Norwegian, Swedish] 18 | layerCount: 7 19 | OS: [Windows, MacOS, Linux] 20 | stagger: ortholinear 21 | summary: "QMK Unicode Rune (Futhark) Layout for Planck and other 4x12 Ortho Keyboards" 22 | title: "Planck Unicode Rune" 23 | writeup: "https://github.com/trguhq/planck_rune/blob/main/readme.md" 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/tw1t611.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: tw1t611 3 | baseLayouts: [QWERTZ] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Vim] 13 | keyboard: MiniDox 14 | keyCount: 36 15 | keymapImage: tw1t611.png 16 | keymapUrl: https://github.com/qmk/qmk_firmware/blob/user-keymaps-still-present/keyboards/maple_computing/minidox/keymaps/tw1t611 17 | languages: [German, English] 18 | layerCount: 4 19 | OS: [Linux] 20 | stagger: columnar 21 | summary: This is a german layout with support for umlauts and the euro sign. You need to set your system layout to german. 22 | title: Minidox Layout by tw1t611 23 | writeup: https://github.com/qmk/qmk_firmware/blob/user-keymaps-still-present/keyboards/maple_computing/minidox/keymaps/tw1t611/readme.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/tynanbe.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: tynanbe 3 | baseLayouts: [Colemak, QWERTY, Dvorak] 4 | firmwares: [QMK] 5 | hasHomeRowMods: true 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: true 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [TWM] 13 | keyboard: Arch-36 14 | keyCount: 36 15 | keymapImage: tynanbe.jpg 16 | keymapUrl: https://github.com/tynanbe/qmk_firmware/tree/tynanbe/users/tynanbe 17 | languages: [English] 18 | layerCount: 9 19 | OS: [MacOS, Linux, Windows] 20 | stagger: columnar 21 | summary: 22 | - Symmetry is important because use-cases are hard to predict 23 | - Whenever possible, modifiers and layer keys should be available from either hand 24 | - Inward rolls should be leveraged not just for alphas, but also for coding/symbols 25 | - Number order—like alpha order—should be designed to favor use of the strongest fingers 26 | - One-shot keys can greatly reduce the strain of typing, and should be leveraged. 27 | title: tynanbe's keymap based on dustypomerleau's minidox 28 | writeup: 29 | --- 30 | -------------------------------------------------------------------------------- /src/posts/keymaps/ulounge.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: ulounge 3 | baseLayouts: [Ergo-L] 4 | firmwares: [ZMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: true 12 | keybindings: [] 13 | keyboard: Ferris 14 | keyCount: 34 15 | keymapImage: https://raw.githubusercontent.com/ulounge/zmk-urchin/refs/heads/master/assets/images/My_Uchin.drawio.svg 16 | keymapUrl: https://github.com/ulounge/zmk-urchin 17 | languages: [French, English] 18 | layerCount: 7 19 | OS: ["Windows", "Android"] 20 | stagger: columnar 21 | summary: "Keymap designed to balance French and English typing efficiency. Thumb-operated sticky, tap-dance and hold-tap layers provide quick access to accents, shortcuts, callum-style mods, and media controls. See write up link for more info." 22 | title: Ergo-L (French, English) layout for 34 keys Urchin 23 | writeup: https://github.com/ulounge/zmk-urchin/blob/master/README.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/urob.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: urob 3 | baseLayouts: [Colemak] 4 | firmwares: [ZMK] 5 | hasHomeRowMods: true 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: true 12 | keybindings: [Vim, TWM] 13 | keyboard: Corne 14 | keyCount: 34 15 | keymapImage: https://raw.githubusercontent.com/urob/zmk-config/main/draw/keymap.png 16 | keymapUrl: https://github.com/urob/zmk-config 17 | languages: [English, German, Greek] 18 | layerCount: 6 19 | OS: [Linux, Windows] 20 | stagger: columnar 21 | summary: 22 | - Timeless homerow mods 23 | - Combos replace symbol layer 24 | - Smart numbers and mouse layers auto-toggle off 25 | - Unicode math and international layers 26 | - Fully automated, nix-based local build environment 27 | - Base keymap used for various keyboards using modular structure 28 | title: urob's keymap for 34+ key keyboards 29 | writeup: https://github.com/urob/zmk-config/blob/main/readme.md 30 | --- 31 | -------------------------------------------------------------------------------- /src/posts/keymaps/via-charybdis_nano.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: 0xcharly 3 | baseLayouts: [QWERTY] 4 | firmwares: [QMK] 5 | hasHomeRowMods: true 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: Charybdis Nano 14 | keyCount: 36 15 | keymapImage: via-charybdis_nano.webp 16 | keymapUrl: https://github.com/qmk/qmk_firmware/tree/user-keymaps-still-present/keyboards/bastardkb/charybdis/3x5/keymaps/via 17 | languages: [English] 18 | layerCount: 7 19 | OS: [] 20 | stagger: columnar 21 | summary: "The Charydbis (3x5) via keymap is based on a QWERTY layout with home row mods and Miryoku-inspired layers, and some features and changes specific to the Charybdis. This layout supports RGB matrix and VIA." 22 | title: Charybdis (3x5) via keymap 23 | writeup: https://github.com/qmk/qmk_firmware/blob/user-keymaps-still-present/keyboards/bastardkb/charybdis/3x5/keymaps/via/readme.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/vvhg1.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: vvhg1 3 | baseLayouts: [Colemak, QWERTY] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: true 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: Fisk 14 | keyCount: 54 15 | keymapImage: https://raw.githubusercontent.com/vvhg1/fisk/main/images/keymap.png 16 | keymapUrl: https://github.com/vvhg1/fisk 17 | languages: [English] 18 | layerCount: 6 19 | OS: [Windows] 20 | stagger: columnar 21 | summary: 22 | - one rotary encoder 23 | - custom leader key 24 | - custom layer logic 25 | - custom oneshot modifiers 26 | - end of sentence 27 | - case modes (CAPSWORD, x_case, NUMW0RD) 28 | - power brackets 29 | - dynamic info on both OLED displays 30 | title: Fisk keymap 31 | writeup: https://github.com/vvhg1/fisk#keymap 32 | --- 33 | -------------------------------------------------------------------------------- /src/posts/keymaps/waffle87.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: waffle87 3 | baseLayouts: [QWERTY] 4 | firmwares: [QMK, ZMK] 5 | hasHomeRowMods: true 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: true 10 | isSplit: true 11 | isTapDanceEnabled: true 12 | keybindings: [Vim, TWM] 13 | keyboard: Ferris 14 | keyCount: 34 15 | keymapImage: https://raw.githubusercontent.com/waffle87/qmk.me/master/img/layout.svg 16 | keymapUrl: https://github.com/waffle87/qmk.me/ 17 | languages: [English] 18 | layerCount: 4 19 | OS: [Linux] 20 | stagger: columnar 21 | summary: "a simple 34-key layout that makes use of 2 (primary) layers, home-row mods, & combos for many symbols." 22 | title: waffle's keymap 23 | writeup: "https://github.com/waffle87/qmk.me/blob/master/readme.md" 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/waynehoover.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: waynehoover 3 | baseLayouts: [Dvorak] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [] 13 | keyboard: Corne 14 | keyCount: 36 15 | keymapImage: https://p239.p2.n0.cdn.getcloudapp.com/items/ApuY16w1/8887acb2-082c-412b-899e-b5c3fa062040.jpg 16 | keymapUrl: https://github.com/waynehoover/qmk_firmware/tree/waynehoover_keymaps/keyboards/crkbd/keymaps/waynehoover 17 | languages: [English] 18 | layerCount: 4 19 | OS: [MacOS] 20 | stagger: columnar 21 | summary: A Corne/Ferris keymap with an alternative Dvorak layout that swaps IU and LM, with the bonus of swapped shift state for semicolon (;) 22 | title: waynehoover's Dvorak IULM 23 | writeup: "" 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/wochap.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: wochap 3 | baseLayouts: [Colemak, QWERTY] 4 | firmwares: [QMK] 5 | hasHomeRowMods: true 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Vim] 13 | keyboard: Corne 14 | keyCount: 34 15 | keymapImage: wochap.webp 16 | keymapUrl: https://github.com/wochap/corne-layout 17 | languages: [English] 18 | layerCount: 6 19 | OS: [Linux, MacOS] 20 | stagger: columnar 21 | summary: Small 3x5+2 Colemak-DH Corne keymap with home row mods on all layers and an optimised number row (87305 62194). 22 | title: wochap's 3x5+2 corne layout 23 | writeup: 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/xsznix.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: xsznix 3 | baseLayouts: [RSTHD, QWERTY] 4 | firmwares: [QMK] 5 | hasHomeRowMods: false 6 | hasLetterOnThumb: true 7 | hasRotaryEncoder: false 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Vim] 13 | keyboard: ErgoDox 14 | keyCount: 76 15 | keymapImage: xsznix.jpg 16 | keymapUrl: https://github.com/xsznix/qmk_firmware/tree/master/keyboards/ergodox_ez/keymaps/rsthd 17 | languages: [English] 18 | layerCount: 9 19 | OS: [MacOS, Windows] 20 | stagger: columnar 21 | summary: The keymap of the creator of the RSTHD layout (xsznix), generated with his hand-rolled keyboard layout generation program called keygen, featuring the letter 'E' on the thumb key. 22 | title: The RSTHD layout 23 | writeup: https://xsznix.wordpress.com/2016/05/16/introducing-the-rsthd-layout/ 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/yaelol1.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: yaelol1 3 | baseLayouts: [QWERTY, Colemak] 4 | firmwares: [QMK] 5 | hasHomeRowMods: true 6 | hasLetterOnThumb: false 7 | hasRotaryEncoder: true 8 | isAutoShiftEnabled: false 9 | isComboEnabled: false 10 | isSplit: true 11 | isTapDanceEnabled: false 12 | keybindings: [Gaming] 13 | keyboard: Kyria 14 | keyCount: 50 15 | keymapImage: https://raw.githubusercontent.com/yaelol1/Gawr-Kynya/main/img/kyria.png 16 | keymapUrl: https://github.com/yaelol1/Gawr-Kynya 17 | languages: [English] 18 | layerCount: 6 19 | OS: [Windows] 20 | stagger: columnar 21 | summary: This is my weeb QMK Kyria keymap, the main feature is its animation of Gawr Gura, but it is really powerfull if you watch closely. 22 | title: Gawr Kynya! 23 | writeup: https://github.com/yaelol1/Gawr-Kynya/blob/main/README.md 24 | --- 25 | -------------------------------------------------------------------------------- /src/posts/keymaps/yhaliaw.md: -------------------------------------------------------------------------------- 1 | --- 2 | OS: [] 3 | author: yhaliaw 4 | firmwares: [QMK] 5 | hasHomeRowMods: False 6 | hasLetterOnThumb: False 7 | keymapImage: yhaliaw.png 8 | keyCount: 48 9 | keyboard: Planck 10 | baseLayouts: ["QWERTY"] 11 | languages: ['English'] 12 | layerCount: 4 13 | title: "yhaliaw Planck layout" 14 | isSplit: False 15 | stagger: ortholinear 16 | summary: 17 | keymapUrl: https://github.com/qmk/qmk_firmware/tree/user-keymaps-still-present/keyboards/planck/keymaps/yhaliaw 18 | writeup: https://github.com/qmk/qmk_firmware/tree/user-keymaps-still-present/keyboards/planck/keymaps/yhaliaw/readme.md 19 | --- 20 | -------------------------------------------------------------------------------- /src/posts/keymaps/zzkt.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: zzkt 3 | baseLayouts: ["QWERTY"] 4 | firmwares: [QMK] 5 | hasHomeRowMods: False 6 | hasLetterOnThumb: False 7 | hasRotaryEncoder: False 8 | isAutoShiftEnabled: False 9 | isComboEnabled: False 10 | isSplit: True 11 | isTapDanceEnabled: False 12 | keybindings: ["Emacs"] 13 | keyboard: Corne 14 | keyCount: 42 15 | keymapImage: https://github.com/zzkt/crkbd/raw/endless/img/zzkt--alphalikes.png 16 | keymapUrl: https://github.com/zzkt/crkbd 17 | languages: ["English"] 18 | layerCount: 6 19 | OS: ["MacOS", "Linux"] 20 | stagger: columnar 21 | summary: Yet another crkbd keymap which has emerged from a combination of writing and programming using Emacs on MacOS and Linux. The numeric layer has numbers on the home row and shifted symbols on the first row, with commonly used brackets on the third row symmetrically between sides. The emacs layer(s) provide both command and prefix keys. 22 | title: "zzkt's emacs-centric keymap for the crkbd" 23 | writeup: https://github.com/zzkt/crkbd/blob/endless/README.org 24 | --- 25 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | const colors = require('tailwindcss/colors'); 2 | 3 | module.exports = { 4 | purge: { 5 | content: ['./src/**/*.njk', './src/**/*.svg'], 6 | layers: ['components', 'utilities'], 7 | options: { 8 | safelist: ['header-shadow', '-translate-y-full', 'hidden'] 9 | } 10 | }, 11 | theme: { 12 | screens: { 13 | sm: '576px', 14 | md: '768px', 15 | lg: '1024px', 16 | xl: '1280px' 17 | }, 18 | colors: { 19 | transparent: 'transparent', 20 | current: 'currentColor', 21 | black: colors.black, 22 | white: colors.white, 23 | gray: { 24 | 50: '#fbfbfd', 25 | 100: '#f7fafc', 26 | 200: '#edf2f7', 27 | 300: '#e2e8f0', 28 | 400: '#cbd5e0', 29 | 500: '#a0aec0', 30 | 600: '#718096', 31 | 700: '#4a5568', 32 | 800: '#2d3748', 33 | 900: '#1a202c' 34 | }, 35 | teal: colors.teal 36 | }, 37 | extend: { 38 | typography: (theme) => ({ 39 | DEFAULT: { 40 | css: { 41 | 'h1': { 42 | fontWeight: '700' 43 | }, 44 | 'blockquote': { 45 | fontWeight: 'normal', 46 | color: theme('colors.gray.700') 47 | }, 48 | 'blockquote p:first-of-type::before': { 49 | content: '' 50 | }, 51 | 'blockquote p:last-of-type::after': { 52 | content: '' 53 | } 54 | } 55 | } 56 | }), 57 | maxWidth: { 58 | '1/2': '50%', 59 | '1/3': '33.333333%', 60 | '2/3': '66.666667%', 61 | '1/4': '25%', 62 | '2/4': '50%', 63 | '3/4': '75%', 64 | '1/5': '20%', 65 | '2/5': '40%', 66 | '3/5': '60%', 67 | '4/5': '80%', 68 | '1/6': '16.666667%', 69 | '2/6': '33.333333%', 70 | '3/6': '50%', 71 | '4/6': '66.666667%', 72 | '5/6': '83.333333%', 73 | '1/12': '8.333333%', 74 | '2/12': '16.666667%', 75 | '3/12': '25%', 76 | '4/12': '33.333333%', 77 | '5/12': '41.666667%', 78 | '6/12': '50%', 79 | '7/12': '58.333333%', 80 | '8/12': '66.666667%', 81 | '9/12': '75%', 82 | '10/12': '83.333333%', 83 | '11/12': '91.666667%', 84 | }, 85 | }, 86 | listStyleType: { 87 | none: 'none', 88 | disc: 'disc', 89 | square: 'square', 90 | upperroman: 'upper-roman', 91 | lowerroman: 'lower-roman', 92 | circle: 'circle', 93 | triangle: 'disclosure-closed', 94 | }, 95 | }, 96 | plugins: [ 97 | require('@tailwindcss/typography'), 98 | ] 99 | }; 100 | --------------------------------------------------------------------------------