Fußtaster für Mumble PTT

Wenn ich über Mumble kommuniziere, habe ich üblicherweise ein Headset auf und verwende VOX. So habe ich die Hände frei und kann während dessen andere Dinge tun. Bis VOX richtig eingestellt ist, dauert es in der Regel. Auch berücksichtigen die Einstellungen nicht die Nebengeräusche (Husten, Essen, ...), die man nicht seinem Gesprächspartner zumuten möchte.

Also lieber Push-to-Talk verwenden. Problem 1: Ich habe nur 10 Finger und bauche die schon zum Schreiben. Problem 2: Ich habe auf meiner Tastatur (Modell M) keine Taste, auf die ich nicht verzichten kann. Modifier wie Strg oder Alt stören, wenn ich gleichzeitig schreiben möchte.

Idee: Fußtaster, der irgendwie ein PTT-Signal an Mumble sendet.

Also Einkaufsliste für nächste Chinabestellung:

Beim Fußtaster ist nur zu beachten, dass er nicht sofort auseinander fällt und noch Platz im Gehäuse frei ist. Beim Arduino ist darauf zu achten, dass es sich als Human Interface Device (HID) per USB ausgeben kann. Das ist bei vielen China-Clones nicht der Fall. Hier wird in der Regel ein günstiger CH340 verbaut, der ausschließlich USB zu Serial wandeln kann. Echte Arduinos haben irgendeinen FTDI-Chip verbaut, der wesentlich mehr kann. Ich habe mich einfach für ein Board entschieden, auf dem ein ATmega32U4 verbaut ist. Der hat den Wandler integriert und lässt sich als HID programmieren.

Nach dem üblichen Monat Wartezeit waren dann beide Komponenten angekommen. Auf dem im Fußtaster befindlichen Taster steht drauf, dass er für 230V geeignet sei. Ich habe aus dem Fußtaster etwas Kunststoff rausgefräst. So konnte ich den Arduino-Clone sicher befestigen. Den Taster habe ich gegen GND und einen digitalen Pin verlötet. Für die Verbindung mit dem Rechner habe ich ein USB-Kabel geschlachtet und angebracht.

geöffneter Fußtaster

Im Bild ist noch ein Piezo-Lautsprecher zu sehen. Dieser spielt beim Einschalten die Startmelodie von grml ab. Durch das Gehäuse ist davon nicht viel zu hören.

Ich habe auf verschiedene Arten versucht, mumble exklusiv den Taster zuzuweisen. Leider ist der Client im Gegensatz zum Server nicht scriptbar. Weiterhin ist es mir nicht gelungen, Spezialtasten zu erzeugen, die nicht mit anderen Programmen wechselwirken. Folgende Vorgehensweise funktioniert:

Bezüglich der Programmierung habe ich irgendein Beispiel genommen und eingestellt, dass die Super-Taste (Windows) gesendet wird. Per lsusb sieht es so aus:

Bus 006 Device 004: ID 2341:8036 Arduino SA Leonardo (CDC ACM, HID)

Nun muss ich verhindern, dass das Signal an den i3 und andere Programme weitergegeben wird. Dazu entferne ich mit xinput das Gerät vom aktuellen Master:

$ xinput
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ HID 04d9:1400                             id=9    [slave  pointer  (2)]
⎜   ↳ DELL Laser Mouse                          id=10   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Power Button                              id=7    [slave  keyboard (3)]
    ↳ HID 04d9:1400                             id=8    [slave  keyboard (3)]
    ↳ Arduino LLC Arduino Leonardo              id=11   [slave  keyboard (3)]
$ xinput --float 11
$ xinput
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ HID 04d9:1400                             id=9    [slave  pointer  (2)]
⎜   ↳ DELL Laser Mouse                          id=10   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Power Button                              id=7    [slave  keyboard (3)]
    ↳ HID 04d9:1400                             id=8    [slave  keyboard (3)]
∼ Arduino LLC Arduino Leonardo                  id=11   [floating slave]

Keine Ahnung, woher mumble seine Informationen über betätigte Tasten herbekommt. Jetzt ist es jedenfalls das einzige Programm. Mit Teamspeak funktioniert dieser Trick nicht.

Viel Spaß beim Nachbauen!