summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xController_Program.numbersbin338395 -> 346725 bytes
-rw-r--r--devoutbin0 -> 45952 bytes
-rw-r--r--handle_devices.c66
-rw-r--r--main.c4
4 files changed, 43 insertions, 27 deletions
diff --git a/Controller_Program.numbers b/Controller_Program.numbers
index 3d8ef80..7525912 100755
--- a/Controller_Program.numbers
+++ b/Controller_Program.numbers
Binary files differ
diff --git a/devout b/devout
new file mode 100644
index 0000000..99a2a23
--- /dev/null
+++ b/devout
Binary files differ
diff --git a/handle_devices.c b/handle_devices.c
index 7481f61..4e84a3b 100644
--- a/handle_devices.c
+++ b/handle_devices.c
@@ -81,13 +81,20 @@ void open_ps4_bt(int* controller_event_fptrs, uint64_t* connected_controllers, i
}
void open_ps4_wired(int* controller_event_fptrs, uint64_t* connected_controllers, int choice) {
- controller_event_fptrs[PS4_WIRED_GYRO] = open("/dev/input/by-id/usb-Sony_Interactive_Entertainment_Wireless_Controller-event-if03", O_RDONLY);
- controller_event_fptrs[PS4_WIRED_BUTTONS] = open("/dev/input/by-id/usb-Sony_Interactive_Entertainment_Wireless_Controller-if03-event-joystick", O_RDONLY);
- controller_event_fptrs[PS4_WIRED_TOUCH] = open("/dev/input/by-id/usb-Sony_Interactive_Entertainment_Wireless_Controller-if03-event-mouse", O_RDONLY);
- if (controller_event_fptrs[PS4_WIRED_GYRO] != -1 && controller_event_fptrs[PS4_WIRED_BUTTONS] != -1 && controller_event_fptrs[PS4_WIRED_TOUCH] != -1) {
+ int ps4[NUM_EVENTS_PS4] = { 0 };
+ FILE* ps4_wired_pipe = popen("cat /proc/bus/input/devices | grep -A 5 \"^I: Bus=0003 Vendor=054c Product=09cc\" | grep \"event\" | cut -d 't' -f2 | paste - -s", "r");
+ fscanf(ps4_wired_pipe, "%2d %2d %2d", &ps4[TOUCHPAD], &ps4[GYRO], &ps4[BUTTONS]);
+ if ( ps4[TOUCHPAD] != 0 && ps4[GYRO] != 0 && ps4[BUTTONS] != 0) {
+ char ps4_events[NUM_EVENTS_PS4][26];
+ snprintf(ps4_events[TOUCHPAD], 25, "/dev/input/event%d", ps4[TOUCHPAD]);
+ snprintf(ps4_events[GYRO], 25, "/dev/input/event%d", ps4[GYRO]);
+ snprintf(ps4_events[BUTTONS], 25, "/dev/input/event%d", ps4[BUTTONS]);
+ controller_event_fptrs[PS4_WIRED_TOUCH] = open(ps4_events[TOUCHPAD], O_RDONLY);
+ controller_event_fptrs[PS4_WIRED_GYRO] = open(ps4_events[GYRO], O_RDONLY);
+ controller_event_fptrs[PS4_WIRED_BUTTONS] = open(ps4_events[BUTTONS], O_RDONLY);
*connected_controllers |= PS4_WIRED_ALL_BITS;
if (choice) {
- fprintf(stderr, "%4d: PS4 WIRED TOUCH\n", PS4_WIRED_TOUCH_BIT);
+ fprintf(stderr, "%4d: PS4 WIRED TOUCH \n", PS4_WIRED_TOUCH_BIT);
fprintf(stderr, "%4d: PS4 WIRED GYRO\n", PS4_WIRED_GYRO_BIT);
fprintf(stderr, "%4d: PS4 WIRED BUTTONS\n", PS4_WIRED_BUTTONS_BIT);
fprintf(stderr, "%4d: PS4 WIRED TOUCH AND GYRO \n", PS4_WIRED_TOUCH_AND_GYRO);
@@ -95,28 +102,37 @@ void open_ps4_wired(int* controller_event_fptrs, uint64_t* connected_controllers
fprintf(stderr, "%4d: PS4 WIRED GYRO AND BUTTONS\n", PS4_WIRED_GYRO_AND_BUTTONS);
fprintf(stderr, "%4d: ALL PS4 WIRED\n", PS4_WIRED_ALL_BITS);
}
- }
+ }
}
void open_steam(int* controller_event_fptrs, uint64_t* connected_controllers, int choice) {
- controller_event_fptrs[VALVE_STEAM] = open("/dev/input/by-id/usb-Valve_Software_Wired_Controller-if02-event-joystick", O_RDONLY);
- if (controller_event_fptrs[VALVE_STEAM] != -1) {
- *connected_controllers |= (uint64_t) 1;
+ int steam_event_number = 0;
+ FILE* steam_pipe = popen("cat /proc/bus/input/devices | grep -A 5 \"^I: Bus=0003 Vendor=28de Product=1102\" | tail -n 6 | grep \"event\" | cut -d \"t\" -f2", "r");
+ fscanf(steam_pipe, "%2d", &steam_event_number);
+ if ( steam_event_number != 0) {
+ char steam_event_string[26];
+ snprintf(steam_event_string, 25, "/dev/input/event%d", steam_event_number);
+ controller_event_fptrs[VALVE_STEAM] = open(steam_event_string, O_RDONLY);
+ *connected_controllers |= STEAM_BIT;
if (choice) {
- fprintf(stderr, "%4d: VALVE STEAM\n", 1);
+ fprintf(stderr, "%4d: STEAM \n", STEAM_BIT);
}
- }
-
+ }
}
void open_xbox_360(int* controller_event_fptrs, uint64_t* connected_controllers, int choice) {
- controller_event_fptrs[XBOX_360] = open("/dev/input/by-id/usb-©Microsoft_Xbox_360_Wireless_Receiver_for_Windows_E15D4C50-event-joystick", O_RDONLY);
- if (controller_event_fptrs[XBOX_360] != -1) {
- *connected_controllers |= (uint64_t) 2;
+ int xbox_360_event_number = 0;
+ FILE* xbox_360_pipe = popen("cat /proc/bus/input/devices | grep -A 5 \"^I: Bus=0003 Vendor=045e Product=02a1\" | tail -n1 | cut -d \"t\" -f2", "r");
+ fscanf(xbox_360_pipe, "%2d", &xbox_360_event_number);
+ if ( xbox_360_event_number != 0) {
+ char xbox_360_event_string[26];
+ snprintf(xbox_360_event_string, 25, "/dev/input/event%d", xbox_360_event_number);
+ controller_event_fptrs[XBOX_360] = open(xbox_360_event_string, O_RDONLY);
+ *connected_controllers |= XBOX_360_BIT;
if (choice) {
- fprintf(stderr, "%4d: XBOX 360\n", 2);
+ fprintf(stderr, "%4d: XBOX 360 \n", XBOX_360_BIT);
}
- }
+ }
}
@@ -220,7 +236,7 @@ void print_multiple_events(int num_exceptions, int controller_event_fptrs[], ...
while (read(controller_event_fptrs[pairs[0].event_fptr_index], &event[0], event_size) != -1) {
*shared_usec = event[0].time.tv_usec;
if (event[0].type == 0) continue;
-///*
+/*
printf("%d %lu.%-6lu %d %3d %11d\n",
pairs[0].event_user_num,
event[0].time.tv_sec - start_sec,
@@ -228,8 +244,8 @@ void print_multiple_events(int num_exceptions, int controller_event_fptrs[], ...
event[0].type,
event[0].code,
event[0].value);
-//*/
-/*
+*/
+///*
snprintf(buffer, BUFSIZE, "%d %lu.%-6lu %d %3d %11d\n",
pairs[0].event_user_num,
event[0].time.tv_sec - start_sec,
@@ -238,7 +254,7 @@ void print_multiple_events(int num_exceptions, int controller_event_fptrs[], ...
event[0].code,
event[0].value);
write(STDOUT_FILENO, buffer, sizeof(buffer));
-*/
+//*/
}
fprintf(stderr, "DISCONNECTED\n");
}
@@ -256,7 +272,7 @@ void print_multiple_events(int num_exceptions, int controller_event_fptrs[], ...
}
while (read(controller_event_fptrs[pairs[i+1].event_fptr_index], &event[i+1], event_size) != -1) {
if (event[i+1].type == 0) continue;
-///*
+/*
printf("%d %zu.%-6zu %d %3d %11d\n",
pairs[i+1].event_user_num,
event[i+1].time.tv_sec - start_sec,
@@ -265,8 +281,8 @@ void print_multiple_events(int num_exceptions, int controller_event_fptrs[], ...
event[i+1].type,
event[i+1].code,
event[i+1].value);
-
-/*
+*/
+///*
snprintf(buffer, BUFSIZE, "%d %zu.%-6zu %d %3d %11d\n",
pairs[i+1].event_user_num,
event[i+1].time.tv_sec - start_sec,
@@ -275,7 +291,7 @@ void print_multiple_events(int num_exceptions, int controller_event_fptrs[], ...
event[i+1].code,
event[i+1].value);
write(STDOUT_FILENO, buffer, sizeof(buffer));
-*/
+//*/
}
fprintf(stderr, "DISCONNECTED\n");
}
diff --git a/main.c b/main.c
index ce63cd3..4d173c3 100644
--- a/main.c
+++ b/main.c
@@ -37,13 +37,13 @@ int main(int argc, char** argv)
size_t start_sec;
switch (choice) {
- case 1: //valve steam controller
+ case STEAM_BIT:
{
close_unneeded_files(1, controller_event_fptrs, VALVE_STEAM);
print_one_event(controller_event_fptrs, VALVE_STEAM, 1);
break;
}
- case 2: //xbox 360 controller
+ case XBOX_360_BIT:
{
close_unneeded_files(1, controller_event_fptrs, XBOX_360);
print_one_event(controller_event_fptrs, XBOX_360, 1);