GithubHelp home page GithubHelp logo

dygmalab / kaleidoscope-dygma Goto Github PK

View Code? Open in Web Editor NEW
2.0 3.0 1.0 9.24 MB

License: GNU General Public License v3.0

Makefile 0.25% Shell 1.33% Perl 0.31% PowerShell 0.03% Dockerfile 0.02% C++ 83.39% C 4.41% Starlark 0.42% CMake 0.68% Python 9.16%

kaleidoscope-dygma's Introduction

Kaleidoscope

Flexible firmware for Arduino-powered keyboards.

This package contains the "core" of Kaleidoscope and a number of example firmware "Sketches".

If you're just getting started with the Keyboardio Model 01, the introductory docs are here and the source for the basic firmware package is here: https://github.com/keyboardio/Model01-Firmware. It's probably a good idea to start there, learn how to modify your keymap and maybe turn some modules on or off, and then come back to the full repository when you have more complex changes in mind.

Getting Started

Setup the Arduino IDE

Setup the Arduino IDE on your system. Make sure you install at least version 1.8.6, since older version may not support all required features.

Get into the right directory

macOS

mkdir -p $HOME/Documents/Arduino/hardware
cd $HOME/Documents/Arduino/hardware

Linux

mkdir -p $HOME/Arduino/hardware
cd $HOME/Arduino/hardware

Windows (Assuming cmd)

mkdir %userprofile%\Documents\Arduino\hardware
cd %userprofile%\Documents\Arduino\hardware

Install the libraries and hardware definitions

Clone the hardware definitions

Because git for Windows doesn't always have symlink support enabled by default, you may need to enable it for Kaleidoscope. To do that, add '-c core.symlinks=true' to your commandline. On all other platforms, that option is safe, but not necessary, as symlinks should work by default.

git clone -c core.symlinks=true --recursive https://github.com/keyboardio/Kaleidoscope-Bundle-Keyboardio.git keyboardio

Build the Kaleidoscope Firmware for your keyboard

(This part assumes you're building firmware for the Keyboardio Model 01)

# Go to your device firmware directory
cd keyboardio/avr/libraries/Model01-Firmware

# Build your firmware!
make


# Install your firmware
make flash

<3 jesse

Build Status

kaleidoscope-dygma's People

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

jreklund

kaleidoscope-dygma's Issues

LED option to show `Caps Lock`

I would like to be able to know if Caps Lock is on.

It would be great to somehow show it via the LEDs.

Describe alternatives you've considered
Creating a new layer with capitalized letters is not an option because:
Shift wouldn't work the same way
When switching keyboard input layouts to different languages the mapping may not be the same.

Feature Request: Brightness keys for LED underglow and backlight

Is your feature request related to a problem? Please describe.
No, it is not a bug, it is an enhancement

Describe the solution you'd like
I want to map keys to adjust the brightness of the keyboard (backlight and underglow) LEDs just like I can assign keys to toggle the LED or change the display brightness

Thanks very much!
PS: The new Defy is awesome. Great job!

caps lock dual function breaks caps-lock indicator

Describe the bug

Dual-function caps-lock key breaks caps-lock indicator

To Reproduce
Steps to reproduce the behavior:

  1. Configure the caps lock key as dual function:
    image
    • Layer X
    • Caps Lock
  2. Hit Caps-lock D to trigger a key on the alternate layer.
  3. Single press the caps lock key

Expected behavior
Caps lock key should change color to indicate it's active.

What happens
Caps lock key doesn't change color.

Functionality is fine, i.e. "caps are locked"

Desktop (please complete the following information):

  • OS: Linux
  • Bazecor Version: 1.0.0

Additional information

The issue seems related to layer switching. If you skip step 2 in the replication case above, it's fine. i.e. don't switch to the linked layer.

It can be "repaired" by switching to a different layer and then back again. i.e. Caps Lock goes to L4. When in the broken state, switch to L2, then back to L1, then caps lock indicator will be fine.

OSL Layer 9 and 10 missing

Describe the bug
One-Shot Layer options for Layer 9 and 10 are missing from the UI

To Reproduce
Select any key and scroll through options in the One-Shot Layer dropdown

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
image

Desktop (please complete the following information):

  • OS: Windows 10
  • Bazecor Version: 1.0.0 Beta 14
  • Firmware: 1.0.8beta

Additional context
Options are available at first launch, but upon modification, layers 9 and 10 no longer appear. Restarting the application multiple times did not cause the options to show up.

SuperKey not working as expected

Describe the bug
When creating a super key with TAP/HOLD/TAP&HOLD/2TAP/2TAP&HOLD, only the TAP function actually works when assigning that superkey to a keyboard key.

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'Bazecor and create a super key.
  2. Example of a super key that does not work as expected can be found here:
  3. Assign the super key to any keyboard key.
  4. Try to use the super key other than TAP.

Expected behavior
The Super Key should lock layer on tap and change LED scheme to next by holding. It does not do this.

Screenshots
Cannot screenshot the keyboard.

Desktop (please complete the following information):

  • Tried saving keyboard configuration to Dygma Raise keyboard from both OSX 12.5.1 and Windows 10
  • Bazecor Version: 1.0.0 beta15

Additional context

Allow for multiple modifier keys in dual-function.

Is your feature request related to a problem? Please describe.
Sometimes one key needs to be mapped to more than one modifier keys when held down and just send one key when tapped.

Describe the solution you'd like
Allow for multiple modifier keys in the dual-function feature

Macro Repeat on held functionality

As per the other feature request listed.

I would like to request macro functionality of repeat on held key.

Adjustable parameters for delays for keystroke up and down and between each set.

I suppose in sense a turbo function from SNES controllers of years gone by.

Useful for reducing unnecessary finger strain from repeated finger slamming keys. Especially useful for rapidly spamming a button in archaic programs.

Keypress of "ESC" key on double-tapped OSL layer does not work after OSL escape timeout.

Describe the bug
Pressing the Esc key on a layer that was moved to using OSL double-tap causes a return to last moved layer if its within 2-3 seconds. After that timeout period, ESC key does not work normally.

To Reproduce
Steps to reproduce the behavior:

  1. Set up 2-dot left thumb key to OSL 8
  2. Set up same key on Layer 8 to transparent
  3. Set up top left most key as Trans (from Layer 1) or ESC
  4. Double tap 2-dot left thumb key to trigger OSL Move to Layer 8
  5. Press any key in Layer 8 (optional)
  6. Wait 3-5 seconds, press the key bound to ESC.
  7. Normal ESC behavior does not occur.

Expected behavior
Pressing Esc key after double tapping an OSL key should not cancel OSL and return to previous layer after timeout. Normal ESC behavior should happen.

Desktop (please complete the following information):

  • OS: Windows 10
  • Bazecor Version: 1.0.0 Beta 14
  • Firmware: 1.0.8beta

Delay in keypress when using a superkey.

Describe the bug
When using a superkey it seems there is added input delay.

To Reproduce
Steps to reproduce the behavior:

  1. Create this superkey (ใ‚ is 3 on US/UK keyboards):
    Bazecor_Ss6CuZpuCy

  2. Assign it to "3" on the keyboard as shown:
    Bazecor_FZmnf9FDJs

  3. Save layout.

  4. Press "3" as standard input.

Expected behavior
I expected the key to function as normal, with no delay when pressing "3", however there is significant delay when using it.
Holding it to trigger as "F3" is working as intended.

Screenshots
Screenshots attached above.

Desktop (please complete the following information):

  • OS: Windows 11.
  • Bazecor Version: BETA15 - 1.0.0

Additional context
Add any other context about the problem here.

Enhancement: Add mouse acceleration/deceleration keys

I love Dygma's mouse mode because I can leave my hands on the keyboard pretty much all the time. It's hard to find the balance between speed and precision, though. If I leave the cursor speed too low to keep precision, moving the mouse becomes a chore. If I leave it too fast, it's difficult to have more precise movements.

I'd really like to have something similar to UHK's mouse acceleration/deceleration keys, which would allow me to leave the mouse speed low by default and increase mouse acceleration when a certain key is held. I'd actually use mouse mode for pretty much anything, like I did with the UHK I had before!

Check UHK's "mousing around" documentation https://ultimatehackingkeyboard.com/manuals/uhk60/mouse

Feature request: simultaneous key presses

Is there a way to map two simultaneous key presses to another key?
E.g. Simultaneously pressing 'Q' and 'W' would be mapped to '~'.

The idea is to use such simultaneous-combos to avoid difficult finger stretches or to trigger specific macros/functionalities.
Clearly, finger stretches and macros can be triggered with non-simultaneous combos or through layers, but it seems my brain has a lot more ease with this notion of simultaneous-combos than more layers (at least for the moment).

Some other examples that I have seen mentioned include:

  • 'A' and 'S' for 'CTRL' (instead of a homerow mod)
  • 'P' and '[' for ''
  • 'Z' and 'X' for 'CTRL + 'Z' (undo)
  • 'X' and 'C' for 'CTRL' + 'C' (copy)
  • 'X' and 'V' for 'CTRL' + 'V' (paste)
  • 'A' and 'F' for 'ESCAPE'

Many thanks for any ideas on how to create such a behavior using the current Bazecor capabilities or information on whether such a feature has been considered/planned.

The keyboard does not remember the LED toggle state after power cycle.

Describe the bug
The keyboard does not remember the LED toggle state after power cycle:

(1) When Raise's LED is toggled OFF by pressing the key that I assigned "LED toggle" to, and when the laptop that Raise is connected to is in sleep mode, sometimes my Raise's LED blinks out of nowhere. But most of time, when this issue happens, the LED powers on and stays on until I go and toggle it off by pressing the key that I assigned "LED toggle" to.

(2)After reconnecting Raise to PC, Raise's LED turned on itself even though it was toggled off by pressing the key i assigned "LED toggle" to, before I put my PC to sleep and disconnect Raise from laptop.

To Reproduce
Cannot reproduce (1) as it happens randomly.

Steps to reproduce the behavior for (2):
(1) turn off LED by pressing the key that I assigned "LED toggle" to
(2) put my laptop to sleep mode
(3) disconnect Raise usb from laptop
(4) reconnect Raise to the laptop
(5) press any key on the Raise to wake up laptop, the Raise's LED will be on at the time when laptop wakes up even though it was toggled OFF previously

Expected behavior
(1) I toggle Raise's LED to OFF by pressing the key that I assigned "LED toggle", then I put my laptop to sleep. Before I wake up my laptop, the Raise's LED should remain OFF.

(2) I toggle Raise's LED to OFF by pressing the key that I assigned "LED toggle". I put my laptop to sleep and disconnect Raise. Then I reconnect Raise to the laptop, and I wake up my laptop by pressing any key on the Raise, the Raise's LED should remain OFF.

Desktop (please complete the following information):

  • OS: macOS Monterey 12.6.1
  • Bazecor Version: Version 1.0.0-RC (1.0.0-RC)
  • Raise's firmware Version: v1.0.9beta

Ability to execute a macro on layer-shift or dual-function

At present I can't hold down a key to shift to a new layer while also sending a key press to the computer

I would like to be able to select a macro to play as part of holding down a key to change layers. Ideally a macro could also be played on releasing a key.

The keyd utility has this functionality in functions called layerm(<layer>, <macro>), oneshotm(<layer>, <macro>) and others. In fact keyd has a bunch of features that would be nice in Bazcor.

I suggest adding config for run-macro-on-press and run-maro-on-release which could be attached to any other config for a key.

Another way this might be achieved is in the macro itself: a token could be added once anywhere in the sequence called wait-for-key-release. More macro features would be needed like toggle/untoggle-layer (in addition to lock-to-layer) so that the original layer can be restored on key-release.

LED flashing on key press

Some of my layers have keys that are mapped to no key. I would like to get a visual feedback if these keys are pressed. That would let me notice if I'm pressing something that is actually not mapped.

Describe the solution you'd like
Have an additional option that you can assign to a key that would be "alert" or "bell" or something like that. When pressed the lower LEDs will shortly flash.

Feature Request: OS-dependent key bindings

Is your feature request related to a problem? Please describe.
I work on both OS X and Windows. I have a KVM setup such that at the press of a button, I alternate between both devices. This allows me to use my Raise and mouse combo on both devices. What is frustrating is that when that happens, I have to change my keybindings. I want my thumb to be Cmd on Mac, I want my thumb to be Ctrl on Windows.

Currently, the way it works is that Cmd/Windows is actually the "OS key", and Ctrl is always control. This makes interaction between those

Describe the solution you'd like
I would like to have the option to modify keys based on the connected OS. Or perhaps offer entire layer alternatives, which would take over instead of one another when connected to a specific OS.

Describe alternatives you've considered
Alternatively, I would need to create a different layer, that only modifies those keys, and then engage that layer when changing back and forth. It would be nice if that process could be automated in some way.

Alternatively, if you, or other members of the community have suggestions to make this workflow easier - I welcome ideas.

The other alternative, is to re-map at the OS level what Cmd and Ctrl keys mean on one of my two OS_s. But it would be nice to avoid that to avoid confusion.

Thank you.

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.