Coder Social home page Coder Social logo

kb-editor's Introduction

example workflow

kb-editor

Tool for editing layouts of custom keyboards. Try it here (might be slightly outdated) or get the latest build from CI here

It is intended for keeping track of mapping between physical layout, logical layout, wiring matrix and scanning matrix and generating configuration files from this information.

image physical layout edit image wiring edit

Project status

Early development - not exactly end user robust, but has enough functionality to be useful for my personal use

  • Physical layout definition - mostly working
  • Logical layout mapping - done
  • Wiring and scan matrix - done
  • Importers - mostly working
  • Exporters - helps dealing with most tedious parts related to keys, rest of the config my need manual editing
    • QMK info.json matrix pins, layout (positions and matrix)
    • KLE - basic position, size, label (no advanced styling features)
    • QMK layout macro -> pretty prints taking into account key width. Somewhat redundant due to QMK data driven configuration.
    • QMK keymap.json template -> some fancy formating, for manual editing. No wey to define the content of keymap.
    • VIA json -> VIA specific values need to be filled in manually after exporting
  • Key mapping configuration - missing, low priority due to plenty of existing tools doing that

Build instructions

  • Install and setup haxe compiler. Should be also available from the official repositories of many Linux distributions
  • Install dependencies using haxelib install html5.hxml
  • Run the build haxe html5.hxml
  • output should be in build/html5/ folder

Build proces for other targets like OpenFL or wxWidgets is a bit more complicated.

Comparison with other tools

  • keyboard-layout-editor.com - Focuses on keyboard visual properties. Usefull when desigining look or planning what keycaps to order. Such functionality is currently out of scope for kb-editor. keyboard-layout-editor has almost no function related to configuring keyboard firwmare.

  • QMK Configurator - Key mapping configuration tool for end users of existing keyboards. Can build the firmware image. Doesn't help preparing initial configuration when creating a new keyboard. Firmware compilation is out of scope for kb-editor.

  • Keyboard Firmware Builder - Similar set of functionality. For limited set of platforms allows very detailed configuration including wiring matrix, pins for key and led connections, basic backlight, macro definition, custom C code snipets. Supports firmware compilation. Import and export formats are very limited. Doesn't support layout creation (needs to be done in KBLE). Almost usless if desired configurtion falls outside set of supported platforms.

kb-editor's People

Contributors

karliss avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

kb-editor's Issues

Consider introducing electrical to matrix mapping

Possible situations:

  • identity mapping
  • multiple electrical columns to single matrix column (space saving or non conflicting columns connected together)
  • row or column reordering to pcb layout reasons
  • arbitrary mapping

Selecting multiple keys can cause name to be cleared

Sometimes happens when selecting multiple keys in physical tab with drag rectangle.

Slightly more consistently reproducable by selecting single key and then shift selecting second.

Need to have corresponding property section opened.

Newly created key can get stuck

  • switch to add mode
  • start adding a key
  • keep holding mouse to drag it around
  • drag the mouse outside key area
  • switch to selection mode
  • observe that key is stuck to cursor

Alignment operations

  • align horizontally
  • align vertically
  • spread evenly
  • spread side by side
  • round position to grid

Add demo keyboards

Make exploring the tool easier by providing builtin files demonstrating functionality.

Layout(logical structure) to base layout

  • basic gui
  • add remove rename logic
  • mapping assignment
  • mapping visualization
  • mapping statistics
  • unassigned visualizer
  • import
  • auto connect - partially done
  • refresh from this
  • better rename history interaction
  • mapping removal logic

Implement import/export

Implement the first unstable version for main import/export format, doesn't need to be final format.

Follows #3

Consider replacing key drawing component

Current approach of making a key displaying component based on scroll area and regular buttons has some limitations.
Drawing custom component could help with following features

  • key rotation
  • advanced labels (and other formatting functionality provided by KBLE)
  • wire visualization
  • better box selection

Led matrix configuration

  • Add some properties to key for configuring key LED matrix
  • QMK RGB_MATRIX export
    • x y calculation

Rainbow mode for wiring page

Add two new key coloring modes to help visualizing row column structure

  • All keys in the same row with the same color
  • All keys in the same column with the same color

Configure CI

Make CI configuration for compilation and running unit tests.

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.