Add ugly support for OnePlus alert slider (tested on OP Nord2)
This commit is contained in:
parent
f0cac6df49
commit
2d96bc5545
@ -253,3 +253,13 @@ cc_binary {
|
|||||||
"libhidlbase",
|
"libhidlbase",
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cc_binary {
|
||||||
|
name: "oplus-alert-slider",
|
||||||
|
srcs: [
|
||||||
|
"oplus-alert-slider.cpp",
|
||||||
|
],
|
||||||
|
init_rc: [
|
||||||
|
"oplus-alert-slider.rc",
|
||||||
|
],
|
||||||
|
}
|
||||||
|
54
cmds/oplus-alert-slider.cpp
Normal file
54
cmds/oplus-alert-slider.cpp
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <sys/ioctl.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <linux/input.h>
|
||||||
|
|
||||||
|
int read_tristate() {
|
||||||
|
int fd = open("/proc/tristatekey/tri_state", O_RDONLY);
|
||||||
|
char p[16];
|
||||||
|
int ret = read(fd, p, sizeof(p) - 1);
|
||||||
|
p[ret] = 0;
|
||||||
|
return atoi(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int fd = -1;
|
||||||
|
for(int i=0; i<255; i++) {
|
||||||
|
char path[256];
|
||||||
|
snprintf(path, 256, "/dev/input/event%d", i);
|
||||||
|
fd = open(path, O_RDWR);
|
||||||
|
if(fd == -1) continue;
|
||||||
|
char name[256];
|
||||||
|
ioctl(fd, EVIOCGNAME(256), name);
|
||||||
|
printf("Got input name %s\n", name);
|
||||||
|
if(strcmp(name, "oplus,hall_tri_state_key") == 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
close(fd);
|
||||||
|
fd = -1;
|
||||||
|
}
|
||||||
|
if(fd == -1) return 0;
|
||||||
|
|
||||||
|
ioctl(fd, EVIOCGRAB, 1);
|
||||||
|
|
||||||
|
struct input_event ev;
|
||||||
|
while(read(fd, &ev, sizeof(ev)) != 0) {
|
||||||
|
if(!(ev.code == 61 && ev.value == 0)) continue;
|
||||||
|
int state = read_tristate();
|
||||||
|
if(state == 1) {
|
||||||
|
}
|
||||||
|
printf("State %d\n", read_tristate());
|
||||||
|
if(state == 1) {
|
||||||
|
system("service call audio 31 i32 2 s16 android");
|
||||||
|
} else if(state == 2) {
|
||||||
|
system("service call audio 31 i32 1 s16 android");
|
||||||
|
} else if(state == 3) {
|
||||||
|
system("service call audio 31 i32 0 s16 android");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
3
cmds/oplus-alert-slider.rc
Normal file
3
cmds/oplus-alert-slider.rc
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
service phhoplus-alert-slider /system/bin/oplus-alert-slider
|
||||||
|
seclabel u:r:phhsu_daemon:s0
|
||||||
|
class main
|
Loading…
Reference in New Issue
Block a user