[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

buckle -f is good for debugging



"bucklespring" lets you pretend you have a keyboard for grown-ups, and
"buckle -f" is the only sane way to start it (as otherwise it'd be silent
for any keys not present on the author's crippled rump "Space Saver"
variant).

A week ago, I had to urgently replace my microphone headphones.  So I
strolled to a brick-an-mortar shop to pick from what they had.  The only set
that appeared decent enough had an USB connector instead of a pair of jacks
like $DEITY intended.  They give pretty good sound, although a bright
BLINKING light on the volume control is grounds for murder.  Too bad, the
volume control, consisting of four buttons instead of a wheel, mostly didn't
work (except for the "mic mute" button).

A few days later, I finally got around to work on fixing ALSA support in
Clementine (one of my four reasons why: https://angband.pl/tmp/clem/). 
While doing so, I started bucklespring as a test for handling audio devices
open by another program.

I try to adjust volume level of the headphones, and, by muscle memory, reach
for the volume control on the cable.  It still doesn't work, but I _hear_
the buttons.  WTF?  Turns out that three of the buttons, instead of being
handled in hardware, present themselves to the computer as a keyboard, and
send XF86AudioLowerVolume, XF86AudioRaiseVolume and XF86AudioMute key codes,
assuming they're handled by the OS.  They were not, at least in the config I
had, but binding them appropriately is no rocket surgery.

It still puzzles me why the manufacturer found it more cost effective to
implement one button a physically different way than the three others,
requiring a whole keyboard emulation stack, but hey, at least it works now.


So... buckle up!  This way nothing else will surprise you by masquerading as
a keyboard!

-- 
⢀⣴⠾⠻⢶⣦⠀ 
⣾⠁⢠⠒⠀⣿⡁ A dumb species has no way to open a tuna can.
⢿⡄⠘⠷⠚⠋⠀ A smart species invents a can opener.
⠈⠳⣄⠀⠀⠀⠀ A master species delegates.


Reply to: