This is a fork of the original Deej with additional functionality for rotary encoder buttons.
This project adds native support for rotary encoder buttons, allowing you to control media functions (play/pause, next, previous, mute) directly from your Deej device.
- I am not a professional developer
- This version was created with AI assistance
- Tested on:
- Windows 11 with Arduino Nano v3.0 (atmega328p/168p)
- Linux (Fedora) with Arduino Nano v3.0
- If you encounter bugs or issues, feel free to fork and adapt it to your needs
- ✅ Windows - Full support with native Windows API
- ✅ Linux - Full support using playerctl (MPRIS) and pactl (PulseAudio)
- Works seamlessly on both X11 and Wayland - no permission prompts required
- Button configuration via YAML - Define button actions without reprogramming the Arduino
- Media commands - Play/pause, next track, previous track, master mute
- Easy customization - Change functions by editing only the
config.yaml - Cross-platform - Works on both Windows and Linux
An example file is included in the project: arduino/Arduino_Nano_4_encodeers+buttons.ino
Important: Buttons must send commands in this format:
BTN:0 // Encoder 1 button
BTN:1 // Encoder 2 button
BTN:2 // Encoder 3 button
BTN:3 // Encoder 4 button
config.yaml!
Windows:
com_port: COM4 # Change to your Arduino's COM port (check Device Manager)Linux:
com_port: /dev/ttyUSB0 # or /dev/ttyACM0 (check with: ls /dev/tty*)To find your Arduino port on Linux:
ls /dev/tty* | grep -E "(USB|ACM)"Change the media controls according to your setup:
button_mapping:
0: mute_master # Mute/unmute system
1: media_play_pause # Play/Pause
2: media_previous # Previous track
3: media_next # Next track
com_port: COM4 # Windows example (change accordingly)
# com_port: /dev/ttyUSB0 # Linux example (uncomment and change if using Linux)
baud_rate: 9600- Download
deej.exeandconfig.yamlfrom Releases - Place them in the same directory
- Edit
config.yamlwith your COM port and button mappings - Run
deej.exe
- Download
deej-linuxandconfig_linux.yamlfrom Releases - Make the binary executable:
chmod +x deej-linux - Install playerctl:
sudo apt install playerctl(Debian/Ubuntu) orsudo dnf install playerctl(Fedora) - Edit
config.yamlwith your serial port (usually/dev/ttyUSB0or/dev/ttyACM0) - Run
./deej-linux
If Deej doesn't recognize your Arduino, the problem might be with the CH340 driver:
- Download and install the CH340 driver
- If already installed and still not working: completely uninstall and reinstall
- Restart your computer after installation
For questions about building the Deej hardware, join the official Deej Discord
Special thanks to TheGiantSwede from the Deej Discord who helped me with the Arduino code with encoders
This project maintains the MIT license from the original Deej.
Este é um fork do Deej original com funcionalidade adicional para botões de rotary encoders.
Este projeto adiciona suporte nativo aos botões dos rotary encoders, permitindo que você controle funções de mídia (play/pause, next, previous, mute) diretamente pelo seu dispositivo Deej.
- Não sou desenvolvedor profissional
- Esta versão foi criada com ajuda de IA
- Testada em:
- Windows 11 com Arduino Nano v3.0 (atmega328p/168p)
- Linux (Fedora) com Arduino Nano v3.0
- Se encontrar bugs ou problemas, sinta-se à vontade para fazer um fork e adaptar às suas necessidades
- ✅ Windows - Suporte completo com API nativa do Windows
- ✅ Linux - Suporte completo usando playerctl (MPRIS) e pactl (PulseAudio)
- Funciona perfeitamente tanto no X11 quanto no Wayland - sem prompts de permissão
- Configuração de botões via YAML - Defina as ações dos botões sem reprogramar o Arduino
- Comandos de mídia - Play/pause, próxima música, música anterior, mute master
- Fácil personalização - Mude as funções editando apenas o
config.yaml - Multiplataforma - Funciona tanto no Windows quanto no Linux
Um arquivo de exemplo está incluído no projeto: arduino/Arduino_Nano_4_encodeers+buttons.ino
Importante: Os botões devem enviar comandos no formato:
BTN:0 // Botão do encoder 1
BTN:1 // Botão do encoder 2
BTN:2 // Botão do encoder 3
BTN:3 // Botão do encoder 4
config.yaml!
Windows:
com_port: COM4 # Mude para a porta COM do seu Arduino (verifique no Gerenciador de Dispositivos)Linux:
com_port: /dev/ttyUSB0 # ou /dev/ttyACM0 (verifique com: ls /dev/tty*)Para encontrar a porta do Arduino no Linux:
ls /dev/tty* | grep -E "(USB|ACM)"Mude os controles de mídia de acordo com a necessidade do seu projeto:
button_mapping:
0: mute_master # Muta/desmuta o sistema
1: media_play_pause # Play/Pause
2: media_previous # Música anterior
3: media_next # Próxima música
com_port: COM4 # Exemplo Windows (mude conforme necessário)
# com_port: /dev/ttyUSB0 # Exemplo Linux (descomente e mude se estiver usando Linux)
baud_rate: 9600- Baixe
deej.exeeconfig.yamlda página de Releases - Coloque-os no mesmo diretório
- Edite
config.yamlcom sua porta COM e mapeamento de botões - Execute
deej.exe
- Baixe
deej-linuxeconfig_linux.yamlda página de Releases - Torne o binário executável:
chmod +x deej-linux - Instale o playerctl:
sudo apt install playerctl(Debian/Ubuntu) ousudo dnf install playerctl(Fedora) - Edite
config.yamlcom sua porta serial (geralmente/dev/ttyUSB0ou/dev/ttyACM0) - Execute
./deej-linux
Se o Deej não reconhecer seu Arduino, o problema pode ser com o driver CH340:
- Baixe e instale o driver CH340
- Se já tiver instalado e ainda assim não funcionar: desinstale completamente e reinstale
- Reinicie o computador após a instalação
Para dúvidas sobre como montar o hardware do Deej, entre no Discord oficial do Deej
Agradecimento especial ao user TheGiantSwede do Discord do Deej pela ajuda com o código de rotary encoders no Arduino
Este projeto mantém a licença MIT do Deej original.