Skip to content

internetblacksmith/pico_meet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Keybow 2040 Google Meet Controller

Control your Google Meet calls using the Pimoroni Keybow 2040 mechanical keypad! This project provides a Chrome extension and CircuitPython code to create a physical control interface for Google Meet.

🎯 Features

  • 16-key mechanical keypad with RGB lighting
  • Physical controls for common Google Meet actions:
    • Toggle microphone/camera
    • Open/close chat and participants
    • Raise/lower hand
    • Toggle captions
    • Send emoji reactions (👍, 👏, 😂)
    • Leave call
  • Visual feedback with color-coded LEDs
  • No complex setup - works as a USB keyboard

📦 Components

  1. Chrome Extension (chrome-extension/)

    • Listens for keyboard shortcuts
    • Controls Google Meet interface
    • Works on https://meet.google.com/*
  2. CircuitPython Code (keybow-2040-code/)

    • Runs on Keybow 2040
    • Sends keyboard shortcuts via USB HID
    • Provides RGB feedback

🔧 Hardware Requirements

🚀 Installation

1. Prepare Keybow 2040

  1. Install CircuitPython firmware:

  2. Install libraries:

    • Download CircuitPython Library Bundle
    • Copy these to lib/ folder on Keybow 2040:
      • adafruit_hid/
      • keybow2040.py
      • adafruit_is31fl3731.py
      • adafruit_bus_device/
      • adafruit_register/
  3. Install code:

    • Copy keybow-2040-code/code.py to root of Keybow 2040
    • Copy keybow-2040-code/boot.py to root of Keybow 2040

2. Install Chrome Extension

  1. Load extension:

    • Open Chrome and go to chrome://extensions/
    • Enable "Developer mode"
    • Click "Load unpacked"
    • Select the chrome-extension/ folder
  2. Test installation:

    • Go to Google Meet
    • Join or start a meeting
    • Try keyboard shortcuts (Ctrl+Shift+M for mic toggle)

🎮 Key Layout

Row 1: [Mic]    [Camera]  [Chat]    [Participants]
Row 2: [Hand]   [Captions] [Leave]  [Empty]
Row 3: [👍]     [👏]       [😂]      [Empty]
Row 4: [Empty]  [Empty]    [Empty]   [Empty]

Color Coding

  • Red: Microphone
  • Green: Camera / Thumbs up
  • Blue: Chat
  • Yellow: Participants / Clap
  • Magenta: Hand raise / Laugh
  • Cyan: Captions
  • Orange: Leave call
  • White: Key pressed (feedback)

⌨️ Keyboard Shortcuts

Action Shortcut Key Position
Toggle Mic Ctrl+Alt+M (0,0)
Toggle Camera Ctrl+Alt+V (0,1)
Toggle Chat Ctrl+Alt+T (0,2)
Toggle Participants Ctrl+Alt+U (0,3)
Toggle Hand Ctrl+Alt+H (1,0)
Toggle Captions Ctrl+Alt+S (1,1)
Leave Call Ctrl+Alt+Q (1,2)
Thumbs Up Ctrl+Alt+1 (2,0)
Clap Ctrl+Alt+2 (2,1)
Laugh Ctrl+Alt+3 (2,2)

🔧 Troubleshooting

Keybow 2040 Issues

  • Not recognized: Check CircuitPython firmware installation
  • No LED response: Verify library installation
  • Keys not working: Check boot.py enables HID keyboard

Chrome Extension Issues

  • Shortcuts not working: Check extension is loaded and enabled
  • Meet buttons not found: Google Meet may have updated - selectors may need adjustment
  • Permission denied: Ensure extension has access to meet.google.com

General Issues

  • Delay in response: Normal - USB HID and web page interaction have small delays
  • Some functions missing: Google Meet features vary by account type and meeting settings

🛠️ Customization

Adding New Functions

  1. Add keyboard shortcut in chrome-extension/manifest.json
  2. Add handler in meet-controller.js
  3. Add key mapping in keybow-2040-code/code.py

Changing Key Layout

Edit KEY_MAPPING in code.py:

(row, col): ("Description", [Keycode.CONTROL, Keycode.SHIFT, Keycode.KEY], (r, g, b))

Custom Colors

Modify RGB values in KEY_MAPPING for different LED colors.

📝 Technical Details

Communication Method

  • Simple approach: Keybow 2040 acts as USB keyboard
  • No complex protocols: Uses standard HID keyboard shortcuts
  • Cross-platform: Works on any OS that supports USB keyboards

Google Meet Integration

  • Content script: Runs on Google Meet pages
  • DOM manipulation: Finds and clicks Meet interface buttons
  • Mutation observer: Handles dynamic content changes

🤝 Contributing

Feel free to submit issues and enhancement requests!

📄 License

MIT License - see original Stream Deck project for inspiration.

🙏 Acknowledgments

  • This project started as an original idea - during research I discovered the Stream Deck project and drew inspiration from it
  • Google Meet button selectors and DOM interaction patterns inspired by the Stream Deck Google Meet project
  • Thanks to Pimoroni for the excellent Keybow 2040 hardware
  • CircuitPython community for excellent documentation

About

Keybow 2040 Google Meet controller — CircuitPython firmware with companion Chrome extension

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors