掌機 - GKDmini Plus - C/C++ - Set Volume



main.c

#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
#include <fcntl.h>
#include <linux/input.h>

uint64_t get_tickcount_ms(void)
{
    struct timeval tv;

    gettimeofday(&tv, NULL);
    return (uint64_t)(tv.tv_sec) * 1000 + (tv.tv_usec / 1000);
}
 
int main(int argc, char **argv)
{
    uint64_t s0 = 0;
    int fd = -1;
    struct input_event ev = { 0 };
 
    fd = open("/dev/input/event1", O_RDONLY);
    if (fd > 0) {
        s0 = get_tickcount_ms();
        while (read(fd, &ev, sizeof(struct input_event))) {
            if ((ev.type == EV_KEY) && (ev.value == 1)) {
                if ((get_tickcount_ms() - s0) > 100) {
                    s0 = get_tickcount_ms();

                    if (ev.code == 115) {
                        system("amixer sset Master 3%+");
                    }
                    if (ev.code == 114) {
                        system("amixer sset Master 3%-");
                    }
                }
            }
        }
        close(fd);
    }
    return 0;
}