/* * Copyright (c) 2017 Kris Occhipint. * http://filmsbykris.com * * Detects if Volume Buttons are being pressed on SADES USB Headphones * Default actions are disabled using system call of xinput for Xorg * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 3. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include #include #include #include #include int main(void){ //get input device const char *dev = "/dev/input/by-id/usb-C-Media_Electronics_Inc._USB_Audio_Device-event-if03"; struct input_event ev; ssize_t n; int fd; //Disable the device's normal function in Xorg system("xinput --disable $(xinput|grep 'C-Media Electronics'|cut -d\\= -f2|cut -f1)"); //open device for reading fd = open(dev, O_RDONLY); //exit on error opening device if (fd == -1) { fprintf(stderr, "Cannot open %s: %s.\n", dev, strerror(errno)); return -1; } while (1) { n = read(fd, &ev, sizeof ev); if (ev.value == 1){ if ((int)ev.code == 115){ printf("Opening HTOP\n"); system("htop"); }else if ((int)ev.code == 114){ printf("Current Free Memory\n"); system("free -h"); }else if ((int)ev.code == 113){ printf("sending keys\n"); system("xte 'str Hello World'"); } } } return 0; }