Git Product home page Git Product logo

keymap-editor-contrib's Introduction

Keymap Editor Contrib

This repository contains community-maintained data. Currently that means layouts for keyboards where layout data cannot be generated, or refinements where the autogenerated layouts were insufficient.

How to use this data

All of these layouts are meant for use with Keymap Editor, but the layout data conforms to QMK's info.json schema (with some custom additions) so it can be used with other tools.

If you're loading your keymap(s) from the:

  • GitHub integration: if the file you want to use matches the name of your keyboard (i.e. <keyboard>.json and <keyboard>.keymap, not my_<keyboard>.keymap or <keyboard>_v2.keymap) it should be picked up automatically by the app. If that is not the case you can copy the relevant file into your repository's config/ folder.
  • Clipboard integration: all of these keyboards should have their metadata listed already in the New Keyboard dialog. If you need a customized version, or if I just haven't updated the app, copy the contents of the relevant JSON file and paste it into the metadata field when selecting Custom in the new keyboard dialog.
  • Filesystem integration: similar to the clipboard integration, except if you need to use custom metadata then open an issue on the Keymap Editor repo, because at the time of this writing I still haven't gotten around to adding that. Letting me know that this matters is a great way to encourage me.

How to customize data

You can hand-edit the JSON files if you're familiar with the format. I've also written about it in Keymap Editor Wiki: Defining Keyboard Layouts.

I've been putting together tooling to render/manipulate/import layout data to try and remove some of the hurdles.

Often the best way is to start by importing layout data from a Kicad PCB file if you have that available, or from a ZMK keyboard DTS, or from a Keyboard Layout Editor export in the worst case.

There would still probably be some manual tweaks to make from this point, but if you want some help why not make an issue or draft pull request on this repo? I have been through a lot of this and can help you through the process.

Contributing

I'm happy to include customizations. I mainly use a handwired custom Dactyl so there are an endless number of keyboards I don't recognize and wouldn't be able to validate layout data for.

Some guidelines:

  • focus on supporting common/widely available layouts: it's not so important that the keyboard be mass-produced or even a PCB, but it gets more complicated when looking at keyboards like the Dactyl and Dactyl-manuform where much of the point is customizability. I may organize things into incomplete layout "templates" that offer a simpler starting point.
  • focus on ZMK compatibility: when a keyboard definition already exists in the ZMK main repository, make sure that the layout matches it. If multiple matrix transformations exist, the metadata should provide multiple layouts keyed to those matrix transform labels.
  • keymap editor compatibility: this layout data is used to format key bindings in the ZMK devicetree code as well as to render it in the browser. This means the layout data should include proper row and col properties.

keymap-editor-contrib's People

Contributors

nickcoutsos avatar llenck avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.