Turn any Bluetooth selfie button into a physical push-to-talk clicker and prompt submitter for Google Antigravity
Python
0
2 commits
updated Sep 19, 2026
A lightweight Windows background daemon that turns any standard 2-dollar Bluetooth selfie shutter or presentation clicker into a physical push-to-talk wand and prompt submitter for Google Antigravity.
Google Antigravity has built-in speech-to-text dictation triggered via Ctrl+M. While the voice model is fast, having to reach for the keyboard to hit Ctrl+M, speak, and then hit Enter ruins the hands-free voice assistant experience.
Most cheap Bluetooth selfie remotes (AB Shutter 3, TikTok scroll rings, camera remotes) register as standard Bluetooth HID keyboards that emit Volume Up (0xAF) or Volume Down (0xAE).
This daemon intercepts those signals at the Win32 driver level, suppresses the Windows volume changes and screen HUD, brings the Antigravity window to the foreground, and maps them to dictation actions:
Ctrl+M).Enter via hardware scan code 0x1C).WH_KEYBOARD_LL) with zero dropped clicks.Global\AntigravityBluetoothRemoteMutex) prevents duplicate hook collisions.pythonw.exe and one-click Windows Startup installer.Works out of the box with virtually any Bluetooth remote that triggers camera shutters:
Volume Up (0xAF), Volume Down (0xAE), or Play/Pause (0xB3)git clone https://github.com/X7xenon/antigravity-bluetooth-remote.git
cd antigravity-bluetooth-remote
pip install -r requirements.txt
python main.py
Or double-click start_remote.bat.
Double-click start_remote_silent.vbs.
This runs the daemon via pythonw.exe without opening a command prompt or taskbar icon.
Double-click install_startup.bat.
This adds a shortcut to %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup pointing to the silent runner. The remote will be active every time you log in.
To remove it, double-click uninstall_startup.bat.
usage: main.py [-h] [--interval INTERVAL] [--no-sound] [--debug]
[--no-suppress] [--status] [--test-mic] [--test-enter]
Antigravity Bluetooth Remote: Map any selfie shutter clicker to Antigravity actions
options:
-h, --help show this help message and exit
--interval INTERVAL Double-tap threshold in seconds (default: calibrated ~0.55s)
--no-sound Disable audio beep feedback
--debug Enable verbose hook event logging
--no-suppress Do not swallow OS volume events (native volume will change)
--status Display current background service status and metrics
--test-mic Test action: Focus Antigravity and simulate Ctrl+M
--test-enter Test action: Focus Antigravity and simulate Enter key
To check if the daemon is running and view click statistics:
python main.py --status
Output:
---------------------------------------------------------------
Antigravity Bluetooth Remote Status
---------------------------------------------------------------
Running : YES
Started At : 2026-09-19 15:00:00
Single Taps : 14
Double Taps : 6
Suppressed : 26
Last Event : single_tap (Antigravity Mic ON Ctrl+M)
Last Time : 2026-09-19 15:08:12
---------------------------------------------------------------
+-------------------------+
| Bluetooth Selfie Remote |
+-------------------------+
| (BLE HID: VK_VOLUME_UP / 0xAF)
v
+-------------------------+
| WH_KEYBOARD_LL Hook | ---> Returns 1 (Swallows key; no Windows volume HUD)
+-------------------------+
|
+---> Single Tap ---> Focuses Antigravity Window ---> Sends Ctrl+M (Mic Toggle)
|
+---> Double Tap ---> Stops Mic (if active) ---> Sends Enter (Scan code 0x1C)
SetWindowsHookExW(WH_KEYBOARD_LL).VK_VOLUME_UP or VK_VOLUME_DOWN is detected, the callback increments internal counters and returns 1 to discard the event, stopping Windows from adjusting audio volume. If the user holds Shift, the hook calls CallNextHookEx to preserve normal volume adjustments.AttachThreadInput, simulates an Alt key tap to bypass the Win32 SetForegroundWindow restriction, restores minimized state, and routes input directly to Antigravity's process.MIT License. See LICENSE file for details.
2 commits
Python
94.2%
Batchfile
4.6%
VBScript
1.2%
Turn any Bluetooth selfie button into a physical push-to-talk clicker and prompt submitter for Google Antigravity
Python
0
2 commits
updated Sep 19, 2026
A lightweight Windows background daemon that turns any standard 2-dollar Bluetooth selfie shutter or presentation clicker into a physical push-to-talk wand and prompt submitter for Google Antigravity.
Google Antigravity has built-in speech-to-text dictation triggered via Ctrl+M. While the voice model is fast, having to reach for the keyboard to hit Ctrl+M, speak, and then hit Enter ruins the hands-free voice assistant experience.
Most cheap Bluetooth selfie remotes (AB Shutter 3, TikTok scroll rings, camera remotes) register as standard Bluetooth HID keyboards that emit Volume Up (0xAF) or Volume Down (0xAE).
This daemon intercepts those signals at the Win32 driver level, suppresses the Windows volume changes and screen HUD, brings the Antigravity window to the foreground, and maps them to dictation actions:
Ctrl+M).Enter via hardware scan code 0x1C).WH_KEYBOARD_LL) with zero dropped clicks.Global\AntigravityBluetoothRemoteMutex) prevents duplicate hook collisions.pythonw.exe and one-click Windows Startup installer.Works out of the box with virtually any Bluetooth remote that triggers camera shutters:
Volume Up (0xAF), Volume Down (0xAE), or Play/Pause (0xB3)git clone https://github.com/X7xenon/antigravity-bluetooth-remote.git
cd antigravity-bluetooth-remote
pip install -r requirements.txt
python main.py
Or double-click start_remote.bat.
Double-click start_remote_silent.vbs.
This runs the daemon via pythonw.exe without opening a command prompt or taskbar icon.
Double-click install_startup.bat.
This adds a shortcut to %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup pointing to the silent runner. The remote will be active every time you log in.
To remove it, double-click uninstall_startup.bat.
usage: main.py [-h] [--interval INTERVAL] [--no-sound] [--debug]
[--no-suppress] [--status] [--test-mic] [--test-enter]
Antigravity Bluetooth Remote: Map any selfie shutter clicker to Antigravity actions
options:
-h, --help show this help message and exit
--interval INTERVAL Double-tap threshold in seconds (default: calibrated ~0.55s)
--no-sound Disable audio beep feedback
--debug Enable verbose hook event logging
--no-suppress Do not swallow OS volume events (native volume will change)
--status Display current background service status and metrics
--test-mic Test action: Focus Antigravity and simulate Ctrl+M
--test-enter Test action: Focus Antigravity and simulate Enter key
To check if the daemon is running and view click statistics:
python main.py --status
Output:
---------------------------------------------------------------
Antigravity Bluetooth Remote Status
---------------------------------------------------------------
Running : YES
Started At : 2026-09-19 15:00:00
Single Taps : 14
Double Taps : 6
Suppressed : 26
Last Event : single_tap (Antigravity Mic ON Ctrl+M)
Last Time : 2026-09-19 15:08:12
---------------------------------------------------------------
+-------------------------+
| Bluetooth Selfie Remote |
+-------------------------+
| (BLE HID: VK_VOLUME_UP / 0xAF)
v
+-------------------------+
| WH_KEYBOARD_LL Hook | ---> Returns 1 (Swallows key; no Windows volume HUD)
+-------------------------+
|
+---> Single Tap ---> Focuses Antigravity Window ---> Sends Ctrl+M (Mic Toggle)
|
+---> Double Tap ---> Stops Mic (if active) ---> Sends Enter (Scan code 0x1C)
SetWindowsHookExW(WH_KEYBOARD_LL).VK_VOLUME_UP or VK_VOLUME_DOWN is detected, the callback increments internal counters and returns 1 to discard the event, stopping Windows from adjusting audio volume. If the user holds Shift, the hook calls CallNextHookEx to preserve normal volume adjustments.AttachThreadInput, simulates an Alt key tap to bypass the Win32 SetForegroundWindow restriction, restores minimized state, and routes input directly to Antigravity's process.MIT License. See LICENSE file for details.
2 commits
Python
94.2%
Batchfile
4.6%
VBScript
1.2%