Git Product home page Git Product logo

Comments (1)

benblazak avatar benblazak commented on July 19, 2024

Separating the symbols from the numbers is somewhat of a trick... The spec defines keycodes (not symbols) - "shift" is a keycode (well.. two keycodes, one for left, one for right) and all the number/symbol combination keys are represented by a keycode as well (just one per key, not one for each symbol). When you press "shift"+[some other key], it's the OS that decides what character to generate, not the firmware.

That said, "shifted keys" - i.e. keys that press "shift" then press another key - are already available. Note that "shifted keys" are really just a special case of macro keys.

I think the cleanest way to do it would be:

  • define all the number row keys as shifted keys in layer 0
  • define all the number row keys as non-shifted keypad number keys in layer 1 (or wherever), with all other keys on that layer transparent
  • make "shift" into a macro key that presses "shift" + ~L1 (note that "~L1" would translate into a '1' in the keycode matrix, an 'lpush1' in the press matrix, and an 'lpop1' in the release matrix -- these actions will need to be combined with the actions that press then release "shift" when you write the macro-key functions)

Macro keys (beside the simple shifted keys already available) are a little bit difficult at the moment - you have to write them yourself in C. I plan to write up examples in the next rev of the firmware, but for now, take a look at the @BISL part of this post on geekhack for a general idea of how they'd look. You can find examples of key-functions here. Layouts are in this directory. If you downloaded the source from the Massdrop configurator, the layout file you'll want to worry about will be called default--layout.c.

from ergodox-firmware.

Related Issues (20)

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.