Close
0%
0%

Hidden Agenda: mouse/keyboard FX pedal

An HID intercepter that applies "DSP" to your keyboard/mouse input. Each effect is inspired by a classic audio processor.

Similar projects worth following
**How It Works**
The Hidden Agenda works as an HID interceptor. You plug your mouse/keyboard directly into the pedal, and then you plug the pedal into your computer via USB. The software on the pedal analyzes the data coming from the keyboard/mouse, applies some "signal processing" to it, and then forwards the processed data to the computer. When the pedal is off, it passes the keyboard/mouse data through without modifying it.

At it's core is an Seeed XIAO RP2040. The primary USB-C port is used to talk to the computer, while a second PIO based USB port accepts HID devices on the other side of the pedal. Using TinyUSB and the Pico-PIO-USB library, the pedal is able to act as both device and host simultaneously.

Effects:
Mouse Reverb
Mouse Looper
Mouse Distortion/Noise Filter
Mouse Crossover (Use mouse as a keyboard!)

Keyboard Delay
Keyboard Tremolo
Keyboard Pitch Shift/Harmonizer
Keyboard Crossover (Use keyboard as a mouse!)

Misc. Notes:

  • BOM info on GitHub
  • Alternative firmware allows this to work as a MIDI controller!
  • Enclosure design by Ted Pioli
  • I hired AmplifyFUN to source, cut, and print the final enclosures. Highly recommend their services!

Usage:

  • Keyboard/Mouse plugs into USB-A port on right side of the pedal, USB-C port on the left runs to computer (and provides power).
  • Pedal has three modes, controlled by the toggle switch.
    • When "off" (in the middle), the pedal is in FX select mode. Use the knob to choose which effect slot is active.
    • When flipped up, the pedal is in Momentary mode. The selected effect will be engaged, ONLY while the footswitch is held down. The knob controls the effect parameter.
    • When flipped down, the pedal is in Latch mode. The selected effect will be toggled on and off by a footswitch press -> release. The knob controls the effect parameter.
  • (Advanced) The pedal has a console that can be accessed over USB serial. It can be used for logging/debugging, and as an interface to change settings/run commands. Some highlighted features:
    • Change mouse cursor speed (even when the effects are off).
    • Simulate mouse events! You can actually script mouse events on your PC, send them to the pedal over serial, and then have them played back as HID input over the same connection. Useful for automating stuff without needing accessibility privileges.
    • Change LED brightness/colors/patterns.
    • Enter bootloader mode.
    • Enable logging of all raw HID input.

Effects Details:

(copied from GitHub - the repo will be the source of truth for this project)

Mouse Effects

1. Reverb

Send your cursor flying! This effect adds a bit of momentum to your mouse cursor, so when you stop moving your hand, it will keep going in the direction you were heading. When this effect is active, the knob controls the "length" of the reverb (or, how long it will take to slow down to a stop after you've stopped moving).

2. Looper

Record a gesture with your mouse and play it back on a loop. Hold the right mouse button down to record, move around as you please, and watch loop playback begin as soon as you release. Use the knob to adjust the playback speed of the loop. Turn it all the way up to play it at 2.5X speed, turn it all the way down to play at -2.5X (reversed!).

3. Distortion / Noise Filter

This is a two-in-one effect. Turn up the knob (past halfway), and the pedal will add an increasing amount of random noise to your path of motion. Turn down the knob, and the pedal will apply a low-pass filter to your motion, effectively smoothing it out.

4. (Bonus) Crossover

Use your mouse as a keyboard! Use the scroll wheel to choose between characters, then tap the right mouse button to move on to the next. Hold the left mouse button + move left to backspace, move right to enter spaces, or move down to "hit" enter. You can also hold the right mouse button and move up/down to scroll through characters. The knob controls the speed at which the characters scroll.

Keyboard Effects

1. Tremolo

Change the "volume" of your typing on a time interval. Imagine an imaginary hand pressing and releasing the shift key for you on a fixed schedule. Turn the knob up to increase the switch rate between upper/lowercase. If you turn the knob all the way up, the effect will constanly force your typing to uppercase, effectively turning the pedal into a foot-powered caps lock button. If you turn the knob all the way down, the pedal will apply rANdOm/SarCaStiC case as you type.

2. Delay

Echo! (echo... echo...). This effect will repeat keystrokes on a time interval for you while it is engaged. The knob is divided into 4 zones, each corresponding to a delay interval time (from left to right: short, short-ish, long-ish, long). Within each zone, the knob controls the "feedback" - AKA the number of repetitions for a given keystroke. The rightmost edge of each zone will set the delay to repeat infinitely for maximum of 6 keys.

3. Pitch Shift / Harmonizer

Maps...

Read more »

ezgif.com-optimize-usb-jacks.gif

USB Jack Covers (STL visualizer)

Graphics Interchange Format - 3.95 MB - 08/17/2023 at 00:51

Preview
Download

schematic_v3.jpg

Hidden Agenda Schematic

JPEG Image - 641.55 kB - 08/17/2023 at 00:18

Preview
Download

  • Early Prototype Photos

    Guy Dupont08/17/2023 at 00:43 0 comments

    First Enclosure Prototype
    Drilled at home, by me. Almost took a finger off.
    V0 3D Printed Drill Guide
    Used the the enclosure DXF to generate a drill guide that I could print
    Prototype Enclosure from AmplifyFUN
    Early enclosure test from AmplifyFUN. Text on the left has gloss cover, text on left does not. I ended up doing a mix of gloss/un-gloss on the "final" version.
    3D printed USB-C jack cover
    Really, really happy with how these came out with the black PETG. Printed on Bambu X1C.
    V2 PCB and Enclosure
    I think the white board was V2? Had not yet added the EEPROM.

View project log

Enjoy this project?

Share

Discussions

Marsupilami wrote 08/21/2023 at 04:12 point

Dude, with such talents you could be working on a cure for cancer, but you chose to do... this.
(I love it tho. :) )

  Are you sure? yes | no

Guy Dupont wrote 08/21/2023 at 12:21 point

Don't worry, my wife is in med school so at least someone in the household will do something worthwhile :p

  Are you sure? yes | no

Craig Hissett wrote 08/18/2023 at 21:22 point

This is great!

I'd love to try using it to turn the mouse/Keyboard into MIDI commands, and use them in wierd and wonderful ways to augment music!

  Are you sure? yes | no

Guy Dupont wrote 08/21/2023 at 12:22 point

Seriously considering adding MIDI output! Few folks mentioned the same in the YT comments.

  Are you sure? yes | no

Craig Hissett wrote 08/21/2023 at 12:41 point

Adding USB MIDI would be superb, and would allow all kinds of control in a studio for an engineer with a second mouse/keyboard on the desk, which would be a brilliant thing.

If you whacked an old school 5 pin MIDI out the would be sheer carnage possible with all kinds of old gear being controlled ha ha

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates