Attempt a mode switch

This commit is contained in:
Denis 2023-11-12 18:24:51 +01:00
parent 6bdbbd201d
commit 5f4af5880b
No known key found for this signature in database
GPG key ID: DD9B63F805CF5C03
15 changed files with 607 additions and 7 deletions

View file

@ -1,7 +1,7 @@
CFLAGS= -g -O0 -D _DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112L -std=c11 -fPIE -pedantic -Wall # -Werror CFLAGS= -g -O0 -D _DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112L -std=c11 -fPIE -pedantic -Wall # -Werror
LDFLAGS=-lpthread -levdev -lrt -lm LDFLAGS=-lpthread -levdev -lrt -lm
CC=gcc CC=gcc
OBJECTS=main.o input_dev.o dev_iio.o output_dev.o queue.o OBJECTS=main.o input_dev.o dev_iio.o output_dev.o queue.o platform.o
TARGET=rogue_enemy TARGET=rogue_enemy
all: $(TARGET) all: $(TARGET)

View file

@ -0,0 +1,6 @@
Event: time 1699802451.149044, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff3100a6
Event: time 1699802451.149044, type 1 (EV_KEY), code 186 (KEY_F16), value 1
Event: time 1699802451.149044, -------------- SYN_REPORT ------------
Event: time 1699802451.150020, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff3100a6
Event: time 1699802451.150020, type 1 (EV_KEY), code 186 (KEY_F16), value 0
Event: time 1699802451.150020, -------------- SYN_REPORT ------------

View file

@ -0,0 +1,18 @@
Event: time 1699802385.002438, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff3100a7
Event: time 1699802385.002438, type 1 (EV_KEY), code 187 (KEY_F17), value 1
Event: time 1699802385.002438, -------------- SYN_REPORT ------------
Event: time 1699802385.003374, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff3100a7
Event: time 1699802385.003374, type 1 (EV_KEY), code 187 (KEY_F17), value 0
Event: time 1699802385.003374, -------------- SYN_REPORT ------------
************************** RELEASE ****************************
Event: time 1699802387.554591, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff3100a8
Event: time 1699802387.554591, type 1 (EV_KEY), code 188 (KEY_F18), value 1
Event: time 1699802387.554591, -------------- SYN_REPORT ------------
Event: time 1699802387.555300, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff3100a8
Event: time 1699802387.555300, type 1 (EV_KEY), code 188 (KEY_F18), value 0
Event: time 1699802387.555300, -------------- SYN_REPORT ------------

View file

@ -0,0 +1,6 @@
Event: time 1699802287.731662, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff310038
Event: time 1699802287.731662, type 1 (EV_KEY), code 148 (KEY_PROG1), value 1
Event: time 1699802287.731662, -------------- SYN_REPORT ------------
Event: time 1699802287.732504, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff310038
Event: time 1699802287.732504, type 1 (EV_KEY), code 148 (KEY_PROG1), value 0
Event: time 1699802287.732504, -------------- SYN_REPORT ------------

View file

@ -0,0 +1,36 @@
Event: time 1699802715.457275, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff3100a5
Event: time 1699802715.457275, type 1 (EV_KEY), code 185 (KEY_F15), value 1
Event: time 1699802715.457275, -------------- SYN_REPORT ------------
Event: time 1699802715.715425, type 1 (EV_KEY), code 185 (KEY_F15), value 2
Event: time 1699802715.715425, -------------- SYN_REPORT ------------
Event: time 1699802715.752079, type 1 (EV_KEY), code 185 (KEY_F15), value 2
Event: time 1699802715.752079, -------------- SYN_REPORT ------------
Event: time 1699802715.788728, type 1 (EV_KEY), code 185 (KEY_F15), value 2
Event: time 1699802715.788728, -------------- SYN_REPORT ------------
Event: time 1699802715.825500, type 1 (EV_KEY), code 185 (KEY_F15), value 2
Event: time 1699802715.825500, -------------- SYN_REPORT ------------
Event: time 1699802715.862063, type 1 (EV_KEY), code 185 (KEY_F15), value 2
Event: time 1699802715.862063, -------------- SYN_REPORT ------------
Event: time 1699802715.898731, type 1 (EV_KEY), code 185 (KEY_F15), value 2
Event: time 1699802715.898731, -------------- SYN_REPORT ------------
Event: time 1699802715.935681, type 1 (EV_KEY), code 185 (KEY_F15), value 2
Event: time 1699802715.935681, -------------- SYN_REPORT ------------
Event: time 1699802715.972079, type 1 (EV_KEY), code 185 (KEY_F15), value 2
Event: time 1699802715.972079, -------------- SYN_REPORT ------------
Event: time 1699802716.008732, type 1 (EV_KEY), code 185 (KEY_F15), value 2
Event: time 1699802716.008732, -------------- SYN_REPORT ------------
Event: time 1699802716.045686, type 1 (EV_KEY), code 185 (KEY_F15), value 2
Event: time 1699802716.045686, -------------- SYN_REPORT ------------
Event: time 1699802716.082112, type 1 (EV_KEY), code 185 (KEY_F15), value 2
Event: time 1699802716.082112, -------------- SYN_REPORT ------------
Event: time 1699802716.118739, type 1 (EV_KEY), code 185 (KEY_F15), value 2
Event: time 1699802716.118739, -------------- SYN_REPORT ------------
Event: time 1699802716.155408, type 1 (EV_KEY), code 185 (KEY_F15), value 2
Event: time 1699802716.155408, -------------- SYN_REPORT ------------
Event: time 1699802716.192081, type 1 (EV_KEY), code 185 (KEY_F15), value 2
Event: time 1699802716.192081, -------------- SYN_REPORT ------------
Event: time 1699802716.228740, type 1 (EV_KEY), code 185 (KEY_F15), value 2
Event: time 1699802716.228740, -------------- SYN_REPORT ------------
Event: time 1699802716.255144, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff3100a5
Event: time 1699802716.255144, type 1 (EV_KEY), code 185 (KEY_F15), value 0
Event: time 1699802716.255144, -------------- SYN_REPORT ------------

View file

@ -0,0 +1,42 @@
Event: time 1699802685.428854, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff3100a5
Event: time 1699802685.428854, type 1 (EV_KEY), code 185 (KEY_F15), value 1
Event: time 1699802685.428854, -------------- SYN_REPORT ------------
Event: time 1699802685.688724, type 1 (EV_KEY), code 185 (KEY_F15), value 2
Event: time 1699802685.688724, -------------- SYN_REPORT ------------
Event: time 1699802685.725398, type 1 (EV_KEY), code 185 (KEY_F15), value 2
Event: time 1699802685.725398, -------------- SYN_REPORT ------------
Event: time 1699802685.762568, type 1 (EV_KEY), code 185 (KEY_F15), value 2
Event: time 1699802685.762568, -------------- SYN_REPORT ------------
Event: time 1699802685.798773, type 1 (EV_KEY), code 185 (KEY_F15), value 2
Event: time 1699802685.798773, -------------- SYN_REPORT ------------
Event: time 1699802685.835437, type 1 (EV_KEY), code 185 (KEY_F15), value 2
Event: time 1699802685.835437, -------------- SYN_REPORT ------------
Event: time 1699802685.872117, type 1 (EV_KEY), code 185 (KEY_F15), value 2
Event: time 1699802685.872117, -------------- SYN_REPORT ------------
Event: time 1699802685.908746, type 1 (EV_KEY), code 185 (KEY_F15), value 2
Event: time 1699802685.908746, -------------- SYN_REPORT ------------
Event: time 1699802685.945713, type 1 (EV_KEY), code 185 (KEY_F15), value 2
Event: time 1699802685.945713, -------------- SYN_REPORT ------------
Event: time 1699802685.982089, type 1 (EV_KEY), code 185 (KEY_F15), value 2
Event: time 1699802685.982089, -------------- SYN_REPORT ------------
Event: time 1699802686.018753, type 1 (EV_KEY), code 185 (KEY_F15), value 2
Event: time 1699802686.018753, -------------- SYN_REPORT ------------
Event: time 1699802686.055456, type 1 (EV_KEY), code 185 (KEY_F15), value 2
Event: time 1699802686.055456, -------------- SYN_REPORT ------------
Event: time 1699802686.092080, type 1 (EV_KEY), code 185 (KEY_F15), value 2
Event: time 1699802686.092080, -------------- SYN_REPORT ------------
Event: time 1699802686.128741, type 1 (EV_KEY), code 185 (KEY_F15), value 2
Event: time 1699802686.128741, -------------- SYN_REPORT ------------
Event: time 1699802686.165429, type 1 (EV_KEY), code 185 (KEY_F15), value 2
Event: time 1699802686.165429, -------------- SYN_REPORT ------------
Event: time 1699802686.202093, type 1 (EV_KEY), code 185 (KEY_F15), value 2
Event: time 1699802686.202093, -------------- SYN_REPORT ------------
Event: time 1699802686.238744, type 1 (EV_KEY), code 185 (KEY_F15), value 2
Event: time 1699802686.238744, -------------- SYN_REPORT ------------
Event: time 1699802686.275419, type 1 (EV_KEY), code 185 (KEY_F15), value 2
Event: time 1699802686.275419, -------------- SYN_REPORT ------------
Event: time 1699802686.312108, type 1 (EV_KEY), code 185 (KEY_F15), value 2
Event: time 1699802686.312108, -------------- SYN_REPORT ------------
Event: time 1699802686.316777, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff3100a5
Event: time 1699802686.316777, type 1 (EV_KEY), code 185 (KEY_F15), value 0
Event: time 1699802686.316777, -------------- SYN_REPORT ------------

View file

@ -0,0 +1,296 @@
Event: time 1699802000.908792, -------------- SYN_REPORT ------------
Event: time 1699802000.912796, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802000.912796, type 1 (EV_KEY), code 187 (KEY_F17), value 0
Event: time 1699802000.912796, -------------- SYN_REPORT ------------
Event: time 1699802002.192841, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802002.192841, type 1 (EV_KEY), code 187 (KEY_F17), value 1
Event: time 1699802002.192841, -------------- SYN_REPORT ------------
Event: time 1699802002.462123, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802002.462123, -------------- SYN_REPORT ------------
Event: time 1699802002.498880, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802002.498880, -------------- SYN_REPORT ------------
Event: time 1699802002.535470, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802002.535470, -------------- SYN_REPORT ------------
Event: time 1699802002.572140, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802002.572140, -------------- SYN_REPORT ------------
Event: time 1699802002.608817, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802002.608817, -------------- SYN_REPORT ------------
Event: time 1699802002.648826, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802002.648826, -------------- SYN_REPORT ------------
Event: time 1699802002.685471, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802002.685471, -------------- SYN_REPORT ------------
Event: time 1699802002.722164, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802002.722164, -------------- SYN_REPORT ------------
Event: time 1699802002.758812, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802002.758812, -------------- SYN_REPORT ------------
Event: time 1699802002.795451, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802002.795451, -------------- SYN_REPORT ------------
Event: time 1699802002.832150, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802002.832150, -------------- SYN_REPORT ------------
Event: time 1699802002.868852, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802002.868852, -------------- SYN_REPORT ------------
Event: time 1699802002.905479, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802002.905479, -------------- SYN_REPORT ------------
Event: time 1699802002.942136, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802002.942136, -------------- SYN_REPORT ------------
Event: time 1699802002.978782, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802002.978782, -------------- SYN_REPORT ------------
Event: time 1699802003.015478, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802003.015478, -------------- SYN_REPORT ------------
Event: time 1699802003.052491, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802003.052491, -------------- SYN_REPORT ------------
Event: time 1699802003.092142, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802003.092142, -------------- SYN_REPORT ------------
Event: time 1699802003.128803, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802003.128803, -------------- SYN_REPORT ------------
Event: time 1699802003.165479, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802003.165479, -------------- SYN_REPORT ------------
Event: time 1699802003.202443, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802003.202443, -------------- SYN_REPORT ------------
Event: time 1699802003.242144, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802003.242144, -------------- SYN_REPORT ------------
Event: time 1699802003.278802, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802003.278802, -------------- SYN_REPORT ------------
Event: time 1699802003.315466, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802003.315466, -------------- SYN_REPORT ------------
Event: time 1699802003.352147, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802003.352147, -------------- SYN_REPORT ------------
Event: time 1699802003.388850, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802003.388850, -------------- SYN_REPORT ------------
Event: time 1699802003.425463, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802003.425463, -------------- SYN_REPORT ------------
Event: time 1699802003.439779, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802003.439779, type 1 (EV_KEY), code 187 (KEY_F17), value 0
Event: time 1699802003.439779, -------------- SYN_REPORT ------------
Event: time 1699802005.080726, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802005.080726, type 1 (EV_KEY), code 187 (KEY_F17), value 1
Event: time 1699802005.080726, -------------- SYN_REPORT ------------
Event: time 1699802005.222702, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802005.222702, type 1 (EV_KEY), code 187 (KEY_F17), value 0
Event: time 1699802005.222702, -------------- SYN_REPORT ------------
Event: time 1699802009.983570, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802009.983570, type 1 (EV_KEY), code 187 (KEY_F17), value 1
Event: time 1699802009.983570, -------------- SYN_REPORT ------------
Event: time 1699802010.215561, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802010.215561, type 1 (EV_KEY), code 187 (KEY_F17), value 0
Event: time 1699802010.215561, -------------- SYN_REPORT ------------
Event: time 1699802010.922570, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802010.922570, type 1 (EV_KEY), code 187 (KEY_F17), value 1
Event: time 1699802010.922570, -------------- SYN_REPORT ------------
Event: time 1699802011.029603, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802011.029603, type 1 (EV_KEY), code 187 (KEY_F17), value 0
Event: time 1699802011.029603, -------------- SYN_REPORT ------------
Event: time 1699802011.339606, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802011.339606, type 1 (EV_KEY), code 187 (KEY_F17), value 1
Event: time 1699802011.339606, -------------- SYN_REPORT ------------
Event: time 1699802011.430577, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802011.430577, type 1 (EV_KEY), code 187 (KEY_F17), value 0
Event: time 1699802011.430577, -------------- SYN_REPORT ------------
Event: time 1699802011.686583, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802011.686583, type 1 (EV_KEY), code 187 (KEY_F17), value 1
Event: time 1699802011.686583, -------------- SYN_REPORT ------------
Event: time 1699802011.771570, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802011.771570, type 1 (EV_KEY), code 187 (KEY_F17), value 0
Event: time 1699802011.771570, -------------- SYN_REPORT ------------
Event: time 1699802012.650546, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802012.650546, type 1 (EV_KEY), code 187 (KEY_F17), value 1
Event: time 1699802012.650546, -------------- SYN_REPORT ------------
Event: time 1699802012.762573, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802012.762573, type 1 (EV_KEY), code 187 (KEY_F17), value 0
Event: time 1699802012.762573, -------------- SYN_REPORT ------------
Event: time 1699802012.951609, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802012.951609, type 1 (EV_KEY), code 187 (KEY_F17), value 1
Event: time 1699802012.951609, -------------- SYN_REPORT ------------
Event: time 1699802013.063567, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802013.063567, type 1 (EV_KEY), code 187 (KEY_F17), value 0
Event: time 1699802013.063567, -------------- SYN_REPORT ------------
Event: time 1699802013.228557, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802013.228557, type 1 (EV_KEY), code 187 (KEY_F17), value 1
Event: time 1699802013.228557, -------------- SYN_REPORT ------------
Event: time 1699802013.334572, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802013.334572, type 1 (EV_KEY), code 187 (KEY_F17), value 0
Event: time 1699802013.334572, -------------- SYN_REPORT ------------
Event: time 1699802013.483576, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802013.483576, type 1 (EV_KEY), code 187 (KEY_F17), value 1
Event: time 1699802013.483576, -------------- SYN_REPORT ------------
Event: time 1699802013.605586, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802013.605586, type 1 (EV_KEY), code 187 (KEY_F17), value 0
Event: time 1699802013.605586, -------------- SYN_REPORT ------------
Event: time 1699802013.740513, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802013.740513, type 1 (EV_KEY), code 187 (KEY_F17), value 1
Event: time 1699802013.740513, -------------- SYN_REPORT ------------
Event: time 1699802013.867522, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802013.867522, type 1 (EV_KEY), code 187 (KEY_F17), value 0
Event: time 1699802013.867522, -------------- SYN_REPORT ------------
Event: time 1699802014.051517, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802014.051517, type 1 (EV_KEY), code 187 (KEY_F17), value 1
Event: time 1699802014.051517, -------------- SYN_REPORT ------------
Event: time 1699802014.122526, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802014.122526, type 1 (EV_KEY), code 187 (KEY_F17), value 0
Event: time 1699802014.122526, -------------- SYN_REPORT ------------
Event: time 1699802014.287549, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802014.287549, type 1 (EV_KEY), code 187 (KEY_F17), value 1
Event: time 1699802014.287549, -------------- SYN_REPORT ------------
Event: time 1699802014.414549, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802014.414549, type 1 (EV_KEY), code 187 (KEY_F17), value 0
Event: time 1699802014.414549, -------------- SYN_REPORT ------------
Event: time 1699802014.569547, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802014.569547, type 1 (EV_KEY), code 187 (KEY_F17), value 1
Event: time 1699802014.569547, -------------- SYN_REPORT ------------
Event: time 1699802014.631514, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802014.631514, type 1 (EV_KEY), code 187 (KEY_F17), value 0
Event: time 1699802014.631514, -------------- SYN_REPORT ------------
Event: time 1699802014.800470, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802014.800470, type 1 (EV_KEY), code 187 (KEY_F17), value 1
Event: time 1699802014.800470, -------------- SYN_REPORT ------------
Event: time 1699802014.876531, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802014.876531, type 1 (EV_KEY), code 187 (KEY_F17), value 0
Event: time 1699802014.876531, -------------- SYN_REPORT ------------
Event: time 1699802015.352530, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802015.352530, type 1 (EV_KEY), code 187 (KEY_F17), value 1
Event: time 1699802015.352530, -------------- SYN_REPORT ------------
Event: time 1699802015.489491, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802015.489491, type 1 (EV_KEY), code 187 (KEY_F17), value 0
Event: time 1699802015.489491, -------------- SYN_REPORT ------------
Event: time 1699802015.629519, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802015.629519, type 1 (EV_KEY), code 187 (KEY_F17), value 1
Event: time 1699802015.629519, -------------- SYN_REPORT ------------
Event: time 1699802015.725503, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802015.725503, type 1 (EV_KEY), code 187 (KEY_F17), value 0
Event: time 1699802015.725503, -------------- SYN_REPORT ------------
Event: time 1699802015.895515, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802015.895515, type 1 (EV_KEY), code 187 (KEY_F17), value 1
Event: time 1699802015.895515, -------------- SYN_REPORT ------------
Event: time 1699802015.976520, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802015.976520, type 1 (EV_KEY), code 187 (KEY_F17), value 0
Event: time 1699802015.976520, -------------- SYN_REPORT ------------
Event: time 1699802017.768481, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802017.768481, type 1 (EV_KEY), code 187 (KEY_F17), value 1
Event: time 1699802017.768481, -------------- SYN_REPORT ------------
Event: time 1699802018.035658, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802018.035658, -------------- SYN_REPORT ------------
Event: time 1699802018.072208, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802018.072208, -------------- SYN_REPORT ------------
Event: time 1699802018.108800, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802018.108800, -------------- SYN_REPORT ------------
Event: time 1699802018.145462, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802018.145462, -------------- SYN_REPORT ------------
Event: time 1699802018.182137, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802018.182137, -------------- SYN_REPORT ------------
Event: time 1699802018.218819, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802018.218819, -------------- SYN_REPORT ------------
Event: time 1699802018.255493, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802018.255493, -------------- SYN_REPORT ------------
Event: time 1699802018.292183, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802018.292183, -------------- SYN_REPORT ------------
Event: time 1699802018.328803, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802018.328803, -------------- SYN_REPORT ------------
Event: time 1699802018.365473, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802018.365473, -------------- SYN_REPORT ------------
Event: time 1699802018.402133, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802018.402133, -------------- SYN_REPORT ------------
Event: time 1699802018.438892, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802018.438892, -------------- SYN_REPORT ------------
Event: time 1699802018.475466, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802018.475466, -------------- SYN_REPORT ------------
Event: time 1699802018.512206, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802018.512206, -------------- SYN_REPORT ------------
Event: time 1699802018.548813, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802018.548813, -------------- SYN_REPORT ------------
Event: time 1699802018.585479, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802018.585479, -------------- SYN_REPORT ------------
Event: time 1699802018.622151, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802018.622151, -------------- SYN_REPORT ------------
Event: time 1699802018.658786, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802018.658786, -------------- SYN_REPORT ------------
Event: time 1699802018.695466, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802018.695466, -------------- SYN_REPORT ------------
Event: time 1699802018.732424, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802018.732424, -------------- SYN_REPORT ------------
Event: time 1699802018.768849, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802018.768849, -------------- SYN_REPORT ------------
Event: time 1699802018.805734, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802018.805734, -------------- SYN_REPORT ------------
Event: time 1699802018.842176, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802018.842176, -------------- SYN_REPORT ------------
Event: time 1699802018.878810, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802018.878810, -------------- SYN_REPORT ------------
Event: time 1699802018.915616, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802018.915616, -------------- SYN_REPORT ------------
Event: time 1699802018.952163, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802018.952163, -------------- SYN_REPORT ------------
Event: time 1699802018.988815, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802018.988815, -------------- SYN_REPORT ------------
Event: time 1699802019.025480, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802019.025480, -------------- SYN_REPORT ------------
Event: time 1699802019.062145, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802019.062145, -------------- SYN_REPORT ------------
Event: time 1699802019.096416, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802019.096416, type 1 (EV_KEY), code 187 (KEY_F17), value 0
Event: time 1699802019.096416, -------------- SYN_REPORT ------------
Event: time 1699802020.692406, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802020.692406, type 1 (EV_KEY), code 187 (KEY_F17), value 1
Event: time 1699802020.692406, -------------- SYN_REPORT ------------
Event: time 1699802020.969124, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802020.969124, -------------- SYN_REPORT ------------
Event: time 1699802021.005476, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802021.005476, -------------- SYN_REPORT ------------
Event: time 1699802021.045464, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802021.045464, -------------- SYN_REPORT ------------
Event: time 1699802021.082133, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802021.082133, -------------- SYN_REPORT ------------
Event: time 1699802021.118801, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802021.118801, -------------- SYN_REPORT ------------
Event: time 1699802021.155463, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802021.155463, -------------- SYN_REPORT ------------
Event: time 1699802021.192139, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802021.192139, -------------- SYN_REPORT ------------
Event: time 1699802021.228793, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802021.228793, -------------- SYN_REPORT ------------
Event: time 1699802021.265494, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802021.265494, -------------- SYN_REPORT ------------
Event: time 1699802021.302135, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802021.302135, -------------- SYN_REPORT ------------
Event: time 1699802021.338859, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802021.338859, -------------- SYN_REPORT ------------
Event: time 1699802021.375480, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802021.375480, -------------- SYN_REPORT ------------
Event: time 1699802021.412137, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802021.412137, -------------- SYN_REPORT ------------
Event: time 1699802021.448816, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802021.448816, -------------- SYN_REPORT ------------
Event: time 1699802021.485462, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802021.485462, -------------- SYN_REPORT ------------
Event: time 1699802021.522164, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802021.522164, -------------- SYN_REPORT ------------
Event: time 1699802021.558809, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802021.558809, -------------- SYN_REPORT ------------
Event: time 1699802021.595471, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802021.595471, -------------- SYN_REPORT ------------
Event: time 1699802021.632144, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802021.632144, -------------- SYN_REPORT ------------
Event: time 1699802021.668814, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802021.668814, -------------- SYN_REPORT ------------
Event: time 1699802021.705539, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802021.705539, -------------- SYN_REPORT ------------
Event: time 1699802021.742166, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802021.742166, -------------- SYN_REPORT ------------
Event: time 1699802021.778805, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802021.778805, -------------- SYN_REPORT ------------
Event: time 1699802021.815483, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802021.815483, -------------- SYN_REPORT ------------
Event: time 1699802021.852170, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802021.852170, -------------- SYN_REPORT ------------
Event: time 1699802021.888809, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802021.888809, -------------- SYN_REPORT ------------
Event: time 1699802021.925977, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802021.925977, -------------- SYN_REPORT ------------
Event: time 1699802021.962134, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802021.962134, -------------- SYN_REPORT ------------
Event: time 1699802021.998833, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802021.998833, -------------- SYN_REPORT ------------
Event: time 1699802022.035525, type 1 (EV_KEY), code 187 (KEY_F17), value 2
Event: time 1699802022.035525, -------------- SYN_REPORT ------------
Event: time 1699802022.060574, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1699802022.060574, type 1 (EV_KEY), code 187 (KEY_F17), value 0
Event: time 1699802022.060574, -------------- SYN_REPORT ------------

View file

@ -0,0 +1,63 @@
Event: time 1699802130.551120, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006d
Event: time 1699802130.551120, type 1 (EV_KEY), code 188 (KEY_F18), value 0
Event: time 1699802130.551120, -------------- SYN_REPORT ------------
Event: time 1699802136.758901, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006d
Event: time 1699802136.758901, type 1 (EV_KEY), code 188 (KEY_F18), value 1
Event: time 1699802136.758901, -------------- SYN_REPORT ------------
Event: time 1699802137.022138, type 1 (EV_KEY), code 188 (KEY_F18), value 2
Event: time 1699802137.022138, -------------- SYN_REPORT ------------
Event: time 1699802137.058799, type 1 (EV_KEY), code 188 (KEY_F18), value 2
Event: time 1699802137.058799, -------------- SYN_REPORT ------------
Event: time 1699802137.095769, type 1 (EV_KEY), code 188 (KEY_F18), value 2
Event: time 1699802137.095769, -------------- SYN_REPORT ------------
Event: time 1699802137.132453, type 1 (EV_KEY), code 188 (KEY_F18), value 2
Event: time 1699802137.132453, -------------- SYN_REPORT ------------
Event: time 1699802137.168793, type 1 (EV_KEY), code 188 (KEY_F18), value 2
Event: time 1699802137.168793, -------------- SYN_REPORT ------------
Event: time 1699802137.205768, type 1 (EV_KEY), code 188 (KEY_F18), value 2
Event: time 1699802137.205768, -------------- SYN_REPORT ------------
Event: time 1699802137.242134, type 1 (EV_KEY), code 188 (KEY_F18), value 2
Event: time 1699802137.242134, -------------- SYN_REPORT ------------
Event: time 1699802137.278820, type 1 (EV_KEY), code 188 (KEY_F18), value 2
Event: time 1699802137.278820, -------------- SYN_REPORT ------------
Event: time 1699802137.315459, type 1 (EV_KEY), code 188 (KEY_F18), value 2
Event: time 1699802137.315459, -------------- SYN_REPORT ------------
Event: time 1699802137.352149, type 1 (EV_KEY), code 188 (KEY_F18), value 2
Event: time 1699802137.352149, -------------- SYN_REPORT ------------
Event: time 1699802137.388821, type 1 (EV_KEY), code 188 (KEY_F18), value 2
Event: time 1699802137.388821, -------------- SYN_REPORT ------------
Event: time 1699802137.425464, type 1 (EV_KEY), code 188 (KEY_F18), value 2
Event: time 1699802137.425464, -------------- SYN_REPORT ------------
Event: time 1699802137.462156, type 1 (EV_KEY), code 188 (KEY_F18), value 2
Event: time 1699802137.462156, -------------- SYN_REPORT ------------
Event: time 1699802137.499122, type 1 (EV_KEY), code 188 (KEY_F18), value 2
Event: time 1699802137.499122, -------------- SYN_REPORT ------------
Event: time 1699802137.535458, type 1 (EV_KEY), code 188 (KEY_F18), value 2
Event: time 1699802137.535458, -------------- SYN_REPORT ------------
Event: time 1699802137.572125, type 1 (EV_KEY), code 188 (KEY_F18), value 2
Event: time 1699802137.572125, -------------- SYN_REPORT ------------
Event: time 1699802137.608799, type 1 (EV_KEY), code 188 (KEY_F18), value 2
Event: time 1699802137.608799, -------------- SYN_REPORT ------------
Event: time 1699802137.645464, type 1 (EV_KEY), code 188 (KEY_F18), value 2
Event: time 1699802137.645464, -------------- SYN_REPORT ------------
Event: time 1699802137.682157, type 1 (EV_KEY), code 188 (KEY_F18), value 2
Event: time 1699802137.682157, -------------- SYN_REPORT ------------
Event: time 1699802137.718800, type 1 (EV_KEY), code 188 (KEY_F18), value 2
Event: time 1699802137.718800, -------------- SYN_REPORT ------------
Event: time 1699802137.755515, type 1 (EV_KEY), code 188 (KEY_F18), value 2
Event: time 1699802137.755515, -------------- SYN_REPORT ------------
Event: time 1699802137.792112, type 1 (EV_KEY), code 188 (KEY_F18), value 2
Event: time 1699802137.792112, -------------- SYN_REPORT ------------
Event: time 1699802137.828788, type 1 (EV_KEY), code 188 (KEY_F18), value 2
Event: time 1699802137.828788, -------------- SYN_REPORT ------------
Event: time 1699802137.865511, type 1 (EV_KEY), code 188 (KEY_F18), value 2
Event: time 1699802137.865511, -------------- SYN_REPORT ------------
Event: time 1699802137.902129, type 1 (EV_KEY), code 188 (KEY_F18), value 2
Event: time 1699802137.902129, -------------- SYN_REPORT ------------
Event: time 1699802137.938782, type 1 (EV_KEY), code 188 (KEY_F18), value 2
Event: time 1699802137.938782, -------------- SYN_REPORT ------------
Event: time 1699802137.975445, type 1 (EV_KEY), code 188 (KEY_F18), value 2
Event: time 1699802137.975445, -------------- SYN_REPORT ------------
Event: time 1699802138.004910, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006d
Event: time 1699802138.004910, type 1 (EV_KEY), code 188 (KEY_F18), value 0
Event: time 1699802138.004910, -------------- SYN_REPORT ------------

View file

@ -2,6 +2,7 @@
#include "message.h" #include "message.h"
#include "queue.h" #include "queue.h"
#include "dev_iio.h" #include "dev_iio.h"
#include "platform.h"
#include <libevdev-1.0/libevdev/libevdev.h> #include <libevdev-1.0/libevdev/libevdev.h>
#include <linux/input-event-codes.h> #include <linux/input-event-codes.h>
@ -18,6 +19,29 @@
static const char *input_path = "/dev/input/"; static const char *input_path = "/dev/input/";
static const char *iio_path = "/sys/bus/iio/devices/"; static const char *iio_path = "/sys/bus/iio/devices/";
int input_filter_identity(struct input_event* events, size_t* size, uint32_t* count) {
return INPUT_FILTER_RESULT_OK;
}
int input_filter_asus_kb(struct input_event* events, size_t* size, uint32_t* count) {
if ((*count >= 2) && (events[0].type == EV_MSC) && (events[0].code == MSC_SCAN) && (events[0].value == 0xff3100a7)) {
if ((events[1].type == EV_KEY) && (events[1].code == KEY_F18)) {
if (events[1].value == 1) {
printf("Detected mode switch command, switching mode...\n");
cycle_mode();
} else {
// Do nothing effectively discarding the input
}
}
return INPUT_FILTER_RESULT_DO_NOT_EMIT;
} else if ((*count >= 2) && (events[0].type == EV_MSC) && (events[0].code == MSC_SCAN) && (events[0].value == 0xff3100a8)) {
return INPUT_FILTER_RESULT_DO_NOT_EMIT;
}
return INPUT_FILTER_RESULT_OK;
}
static struct libevdev* ev_matches(const char* sysfs_entry, const uinput_filters_t* const filters) { static struct libevdev* ev_matches(const char* sysfs_entry, const uinput_filters_t* const filters) {
struct libevdev *dev = NULL; struct libevdev *dev = NULL;
@ -88,6 +112,7 @@ struct input_ctx {
dev_iio_t *iio_dev; dev_iio_t *iio_dev;
queue_t* queue; queue_t* queue;
message_t messages[MAX_MESSAGES_IN_FLIGHT]; message_t messages[MAX_MESSAGES_IN_FLIGHT];
input_filter_t input_filter_fn;
}; };
static void* iio_read_thread_func(void* ptr) { static void* iio_read_thread_func(void* ptr) {
@ -176,7 +201,9 @@ static void* input_read_thread_func(void* ptr) {
if (read_ev.type == EV_MSC) { if (read_ev.type == EV_MSC) {
if (read_ev.code == MSC_SCAN) { if (read_ev.code == MSC_SCAN) {
#if defined(IGNORE_INPUT_SCAN)
continue; continue;
#endif // IGNORE_INPUT_SCAN
} else if (read_ev.code == MSC_TIMESTAMP) { } else if (read_ev.code == MSC_TIMESTAMP) {
// the output device will handle that // the output device will handle that
//printf("MSC_TIMESTAMP found. Ignoring...\n"); //printf("MSC_TIMESTAMP found. Ignoring...\n");
@ -211,11 +238,13 @@ static void* input_read_thread_func(void* ptr) {
// clear out flags // clear out flags
msg->flags = 0x00000000U; msg->flags = 0x00000000U;
if (queue_push(ctx->queue, (void*)msg) != 0) { if (ctx->input_filter_fn(msg->ev, &msg->ev_size, &msg->ev_count) != INPUT_FILTER_RESULT_DO_NOT_EMIT) {
fprintf(stderr, "Error pushing event.\n"); if (queue_push(ctx->queue, (void*)msg) != 0) {
fprintf(stderr, "Error pushing event.\n");
// flag the memory to be safe to reuse // flag the memory to be safe to reuse
msg->flags |= MESSAGE_FLAGS_HANDLE_DONE; msg->flags |= MESSAGE_FLAGS_HANDLE_DONE;
}
} }
// either way.... fill a new buffer on the next cycle // either way.... fill a new buffer on the next cycle
@ -456,6 +485,7 @@ void *input_dev_thread_func(void *ptr) {
struct input_ctx ctx = { struct input_ctx ctx = {
.dev = NULL, .dev = NULL,
.queue = in_dev->queue, .queue = in_dev->queue,
.input_filter_fn = in_dev->input_filter_fn,
}; };
for (int h = 0; h < MAX_MESSAGES_IN_FLIGHT; ++h) { for (int h = 0; h < MAX_MESSAGES_IN_FLIGHT; ++h) {

View file

@ -1,8 +1,10 @@
#pragma once #pragma once
#include "queue.h" #include "queue.h"
#include "message.h"
#define INCLUDE_INPUT_DEBUG #define INCLUDE_INPUT_DEBUG
#undef IGNORE_INPUT_SCAN
#define INPUT_DEV_CTRL_FLAG_EXIT 0x00000001U #define INPUT_DEV_CTRL_FLAG_EXIT 0x00000001U
@ -28,8 +30,14 @@ typedef struct input_dev {
volatile uint32_t crtl_flags; volatile uint32_t crtl_flags;
queue_t *queue; queue_t *queue;
input_filter_t input_filter_fn;
} input_dev_t; } input_dev_t;
void *input_dev_thread_func(void *ptr); void *input_dev_thread_func(void *ptr);
int open_and_hide_input(); int open_and_hide_input();
int input_filter_identity(struct input_event* events, size_t* size, uint32_t* count);
int input_filter_asus_kb(struct input_event*, size_t*, uint32_t*);

8
main.c
View file

@ -2,6 +2,7 @@
#include "input_dev.h" #include "input_dev.h"
#include "output_dev.h" #include "output_dev.h"
#include "platform.h"
queue_t imu_ev; queue_t imu_ev;
queue_t gamepad_ev; queue_t gamepad_ev;
@ -27,6 +28,7 @@ static input_dev_t in_iio_dev = {
.crtl_flags = 0x00000000U, .crtl_flags = 0x00000000U,
.iio_filters = &in_iio_filters, .iio_filters = &in_iio_filters,
.queue = &imu_ev, .queue = &imu_ev,
.input_filter_fn = input_filter_identity,
}; };
static uinput_filters_t in_asus_kb_1_filters = { static uinput_filters_t in_asus_kb_1_filters = {
@ -38,6 +40,7 @@ static input_dev_t in_asus_kb_1_dev = {
.crtl_flags = 0x00000000U, .crtl_flags = 0x00000000U,
.ev_filters = &in_asus_kb_1_filters, .ev_filters = &in_asus_kb_1_filters,
.queue = &gamepad_ev, .queue = &gamepad_ev,
.input_filter_fn = input_filter_asus_kb,
}; };
static uinput_filters_t in_asus_kb_2_filters = { static uinput_filters_t in_asus_kb_2_filters = {
@ -49,6 +52,7 @@ static input_dev_t in_asus_kb_2_dev = {
.crtl_flags = 0x00000000U, .crtl_flags = 0x00000000U,
.ev_filters = &in_asus_kb_2_filters, .ev_filters = &in_asus_kb_2_filters,
.queue = &gamepad_ev, .queue = &gamepad_ev,
.input_filter_fn = input_filter_asus_kb,
}; };
static uinput_filters_t in_asus_kb_3_filters = { static uinput_filters_t in_asus_kb_3_filters = {
@ -60,6 +64,7 @@ static input_dev_t in_asus_kb_3_dev = {
.crtl_flags = 0x00000000U, .crtl_flags = 0x00000000U,
.ev_filters = &in_asus_kb_3_filters, .ev_filters = &in_asus_kb_3_filters,
.queue = &gamepad_ev, .queue = &gamepad_ev,
.input_filter_fn = input_filter_asus_kb,
}; };
static uinput_filters_t in_xbox_filters = { static uinput_filters_t in_xbox_filters = {
@ -71,6 +76,7 @@ static input_dev_t in_xbox_dev = {
.crtl_flags = 0x00000000U, .crtl_flags = 0x00000000U,
.ev_filters = &in_xbox_filters, .ev_filters = &in_xbox_filters,
.queue = &gamepad_ev, .queue = &gamepad_ev,
.input_filter_fn = input_filter_identity,
}; };
void request_termination() { void request_termination() {
@ -92,6 +98,8 @@ void sig_handler(int signo)
} }
int main(int argc, char ** argv) { int main(int argc, char ** argv) {
init_global_mode();
queue_init(&gamepad_ev, 32); queue_init(&gamepad_ev, 32);
queue_init(&imu_ev, 32); queue_init(&imu_ev, 32);

View file

@ -12,4 +12,9 @@ typedef struct message {
size_t ev_size; size_t ev_size;
volatile uint32_t flags; volatile uint32_t flags;
} message_t; } message_t;
#define INPUT_FILTER_RESULT_OK 0
#define INPUT_FILTER_RESULT_DO_NOT_EMIT 1
typedef int (*input_filter_t)(struct input_event*, size_t*, uint32_t*);

64
platform.c Normal file
View file

@ -0,0 +1,64 @@
#include <asm-generic/errno-base.h>
#include <stdlib.h>
#define PLATFORM_FILE
#include "platform.h"
static const char* const platform_input_path = "/sys/devices/platform/asus-mcu.0/input/mode";
static rc71l_platform_t static_platform;
void init_global_mode() {
global_platform = NULL;
if (access(platform_input_path, F_OK) == 0) {
FILE* mode_file = fopen(platform_input_path, "r");
if (mode_file == NULL) {
fprintf(stderr, "Unable to open the MCU platform mode file %s: modes cannot be switched.\n", platform_input_path);
return;
}
char mode_str[12];
unsigned long read_bytes = fread((void*)&mode_str[0], 1, sizeof(mode_str), mode_file);
if (read_bytes < 1) {
fprintf(stderr, "Unable to read the MCU platform mode file %s: no bytes.\n", platform_input_path);
fclose(mode_file);
}
static_platform.mode = strtoul(&mode_str[0], NULL, 10);
fclose(mode_file);
global_platform = &static_platform;
printf("Asus MCU platform found: current mode %lu\n", global_platform->mode);
global_platform->modes_count = 3;
} else {
fprintf(stderr, "Unable to find the MCU platform mode file %s: modes cannot be switched.\n", platform_input_path);
}
}
int cycle_mode() {
if (global_platform == NULL) {
fprintf(stderr, "Asus MCU not registered: aborting.\n");
}
char new_mode_str[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
unsigned long new_mode = (global_platform->mode + 1) % global_platform->modes_count;
sprintf(new_mode_str, "%lu", new_mode);
FILE* mode_file = fopen(platform_input_path, "r");
if (mode_file == NULL) {
fprintf(stderr, "Unable to open the MCU platform mode file %s: modes cannot be switched.\n", platform_input_path);
return -1;
}
size_t len = strlen(new_mode_str);
const int write_bytes = fwrite((void*)&new_mode_str[0], 1, len, mode_file);
if (write_bytes < len) {
fprintf(stderr, "Error writing new mode: expected to write %d bytes, %d written.\n", (int)len, (int)write_bytes);
return -2;
}
fclose(mode_file);
return 0;
}

18
platform.h Normal file
View file

@ -0,0 +1,18 @@
#pragma once
#include "rogue_enemy.h"
typedef struct rc71l_platform {
unsigned long mode;
unsigned int modes_count;
} rc71l_platform_t;
#ifdef PLATFORM_FILE
rc71l_platform_t* global_platform = NULL;
#else
extern rc71l_platform_t* global_platform;
#endif
void init_global_mode();
int cycle_mode();