Coder Social home page Coder Social logo

Support reprogrammable keys about solaar HOT 5 CLOSED

pwr-solaar avatar pwr-solaar commented on August 15, 2024
Support reprogrammable keys

from solaar.

Comments (5)

Lekensteyn avatar Lekensteyn commented on August 15, 2024

Research for this subject can be found on https://git.lekensteyn.nl/ltunify/tree/keyboard.txt.

Tasks:

  • Add persistence to Solaar so that keyboard mapping can be stored. (tracked in issue #6)
  • How to discover available keys? Hard-code per model?
  • UI for configuring custom key bindings.
  • When notification bits are modified to allow customization, warn on closing Solaar that these customizations will be gone when Solaar is inactive.

from solaar.

Lekensteyn avatar Lekensteyn commented on August 15, 2024

The B100 and B101 features (KBD Reprogrammable Keys) do not allow the key bindings to be changed as far as I know. I probed functions 2..f, but they do not have any features. I guess the "reprogrammable" flag just indicates whether a UI element should exist for that in SetPoint.

If it is possible to change key bindings via this feature, it must be an extension of function 0 or 1, but those do not seem to accept extra parameters (I tried ff as additional parameters and passing control ids, task ids + flags).

Perhaps one of the other features allow for persistently changing these values?

from solaar.

pwr avatar pwr commented on August 15, 2024

I've also played with the REPROG_CONTROLS feature (0x1B00) with my K750 keyboard, and haven't managed to go any further than listing the current mappings. Without some specific documentation from Logitech, I'm afraid there's not much to be done...

from solaar.

pfps avatar pfps commented on August 15, 2024

I have an initial implementation of reprogrammable keys for Solaar. Reprogramming a key or button tells a device that the key or button should act like another key or button (even a key or button that is not on the device at all). Only keys and buttons that are reprogrammable (not divertable - that's something that needs support from drivers) can be reprogrammed, and they can only be reprogrammed to a limited set of targets.

The interface presents two selection boxes. The left-hand box shows a key or button that can be reprogrammed. The right-hand box has the possible targets for that key or button, with the default target first. To change the behaviour of a key or button, select the key in the left-hand box and then select the target in the right-hand box.

To test out this feature, clone Solaar from my directory and run from its keys branch, via

git clone https://github.com/pfps/Solaar
cd Solaar
git checkout keys
bin/solaar

A few caveats:

  • This is a preliminary implementation and still has debugging statements in it, but the implementation is working for me so it is time to have it tested out by others and on other hardware.

  • The implementation is only for the feature REPROG CONTROLS V4 {1B04}. Running solaar show will show all the features of your device. If you have a device with a different version of REPROG CONTROLS let me know and I may be able to implement that version as well.

  • The implementation is slower than it should be because it communicates too much with the device. I expect to fix this in a little while.

  • The interface is not nearly as slick as the Logitech one, and it never will be.

  • The key and button names and the target names are taken from Logitech documentation and may not be intuitive. Suggestions for improvements are welcome.

  • There is a preliminary implementation of REPORT RATE here as well, but changing the rate doesn't work.

from solaar.

pfps avatar pfps commented on August 15, 2024

Closed by PR #810

from solaar.

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.