cdisselkoen / kaleidoscope-macrosonthefly Goto Github PK
View Code? Open in Web Editor NEWPlugin for Kaleidoscope that allows you to record and play back macros on-the-fly.
License: GNU General Public License v3.0
Plugin for Kaleidoscope that allows you to record and play back macros on-the-fly.
License: GNU General Public License v3.0
I've put record on prog and playback on fn-prog. Recording to slot "a" seems to work OK (the keys light up as I expect, and I get the green flash when finishing), but playback doesn't seem to do what I want.
So from start to end, I press prog, then a. The keys are lit up. I type hello and press prog again. The keys flash green. I then press fn-prog then a. Nothing happens. If I press a again now, the clipboard contents are pasted. I think this is because I have fn-a mapped to middle mouse button, which pastes the X selection contents. I can keep pressing a and it keeps pasting. I have to press and release fn, and then the keyboard acts normally again.
I tried recording to ' instead, and this worked just fine. I have nothing mapped to fn-'.
I get similar results to "a" when recording to any key which has something mapped on its function layer.
I imagine this is related to the issue with having the record key on the function layer.
I assigned my Key_MacroReq
to FN-Butterfly
. When I exit a recording I hit FN-Butterfly
. I think when I go to leave a recording it has recorded the FN press as part of the recording, so I need to hit FN again to exit that layer.
To mitigate this, I just put the record key into the default layer.
When playing back a macro the playback button gets lit up, but I think it'd be nice if (especially when playing back via play-play) the slot being played back also got lit up.
If you attempt to record a keystroke sequence which uses a OneShot modifier (from Kaleidoscope-OneShot), the OneShot will not fire during playback. I'm not sure whether the problem is during recording (that it's not recorded), or during playback (that it's not played back). The problem occurs whether you 'tap' the OneShot, or whether you hold the OneShot - in either case, it will have no effect during playback.
With prog mapped to record, it's hard to re-flash, for which I need to hold prog and press enter, since doing so starts to record to the enter key, without actually sending enter!
I have to type prog, then any slot, then hold prog (which stops recording and flashes the keys green) and press enter.
I wonder whether anything can be done about this.
I have record set to the "prog" key. After flashing (which I have to initiate by holding prog of course) the keyboard starts up in macro programming mode. The first key I then press lights up white.
I'm not yet sure whether this is every time or just if I hold the key too long.
Given the documentation and a quick perusal of the source, it seems like this plugin is still using the old plugin API. Compile error is below:
ditto:~/Arduino/Model01-Firmware% make flash
BOARD_HARDWARE_PATH="/home/bjc/Arduino/hardware" /home/bjc/Arduino/hardware/keyboardio/avr/libraries/Kaleidoscope/bin//kaleidoscope-builder flash
Building output/Model01-Firmware/Model01-Firmware (0.0.0-gv1.22-26-ga99e-dirty) ...
/home/bjc/Arduino/hardware/keyboardio/avr/libraries/Kaleidoscope-MacrosOnTheFly/src/Kaleidoscope/FlashOverride.cpp: In member function 'void kaleidoscope::FlashOverride::begin()':
/home/bjc/Arduino/hardware/keyboardio/avr/libraries/Kaleidoscope-MacrosOnTheFly/src/Kaleidoscope/FlashOverride.cpp:42:16: error: 'class kaleidoscope::Kaleidoscope_' has no member named 'useLoopHook'
Kaleidoscope.useLoopHook(loopHook);
^
exit status 1
/home/bjc/Arduino/hardware/keyboardio/avr/build-tools/makefiles//rules.mk:72: recipe for target 'flash' failed
make: *** [flash] Error 1
Hey!
I am using SpaceCadet and injected keys from SpaceCadet are not replayed, they are just ignored. I had the same problem with my plugin (https://github.com/christo-auer/Kaleidoscope-AdhocMacros) and solved it by registering SpaceCadet AFTER my plugin in the use-call. Also, SpaceCadet just issues a press event but not release event. In the normal Kaleidoscope loop, a release event is triggered each loop for injected keys.
I currently inject a release event manually for injected presses (not elegant, but it works for most cases). A more elegant solution maybe is to track which keys are pressed during recording but not released and then release then force releasing them after replay.
Great plugin!
Christopher
I press MacroRec key and selecting slot A, I press down Shift, type LSHIFT
all in capitals, and then release Shift. Then I stop the recording. When I replay this, I only get Lshift
and not LSHIFT
as I expect.
My macro record key is on Fn layer R key, if that means anything.
It would be pretty handy to highlight all the currently occupied slots when the Key_MacroPlay button is pressed.
The README states that while recording one macro, you can play back another, and later, playing back the first macro will include the correct key sequence from the second. This doesn't seem to work.
make
works fine with the headers included and Key_MacroRec
and Key_MacroPlay
included in keymaps, but adding the plugin to KALEIDOSCOPE_INIT_PLUGINS
results in this less than informative output:
BOARD_HARDWARE_PATH="/Users/rodk/Documents/Arduino/hardware" /Users/rodk/Documents/Arduino/hardware/keyboardio/avr/libraries/Kaleidoscope/bin//kaleidoscope-builder build-all
Building ./Model01-Firmware 0.0.0-g
02d9-dirty into /var/folders/8l/vm9r32j93z95bf5k0n85d96h0000gn/T//kaleidoscope-rodk/sketch/6353289-Model01-Firmware.ino/output...
make: *** [build-all] Error 1
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.