#include
#include
#include
#include
#include
#include
void Akey(int fd, struct uinput_user_dev uidev){
int dtime=200000; //in ms
//A hold D*3 L K J* 2 K L relese A
// Simulate pressing and releasing the 'A' key
struct input_event event;
memset(&event, 0, sizeof(event));
event.type = EV_KEY;
event.code = KEY_A;
event.value = 1; // Pressing the key
write(fd, &event, sizeof(event));
event.type = EV_SYN;
event.code = SYN_REPORT;
event.value = 0;
write(fd, &event, sizeof(event));
/////////////D1///////////////////////
event.type = EV_KEY;
event.code = KEY_D;
event.value = 1; // Pressing the key
write(fd, &event, sizeof(event));
event.type = EV_SYN;
event.code = SYN_REPORT;
event.value = 0;
write(fd, &event, sizeof(event));
usleep(dtime/2);
event.type = EV_KEY;
event.code = KEY_D;
event.value = 0; // Releasing the key
write(fd, &event, sizeof(event));
event.type = EV_SYN;
event.code = SYN_REPORT;
event.value = 0;
write(fd, &event, sizeof(event));
usleep(dtime/2);
///////////D1////////////////
/////////////D2///////////////////////
event.type = EV_KEY;
event.code = KEY_D;
event.value = 1; // Pressing the key
write(fd, &event, sizeof(event));
event.type = EV_SYN;
event.code = SYN_REPORT;
event.value = 0;
write(fd, &event, sizeof(event));
usleep(dtime/2);
event.type = EV_KEY;
event.code = KEY_D;
event.value = 0; // Releasing the key
write(fd, &event, sizeof(event));
event.type = EV_SYN;
event.code = SYN_REPORT;
event.value = 0;
write(fd, &event, sizeof(event));
usleep(dtime/2);
///////////D2////////////////////
/////////D3///////////////////////
event.type = EV_KEY;
event.code = KEY_D;
event.value = 1; // Pressing the key
write(fd, &event, sizeof(event));
event.type = EV_SYN;
event.code = SYN_REPORT;
event.value = 0;
write(fd, &event, sizeof(event));
usleep(dtime/2);
event.type = EV_KEY;
event.code = KEY_D;
event.value = 0; // Releasing the key
write(fd, &event, sizeof(event));
event.type = EV_SYN;
event.code = SYN_REPORT;
event.value = 0;
write(fd, &event, sizeof(event));
usleep(dtime/2);
///////////D3////////////////
/////////////L///////////////////////
event.type = EV_KEY;
event.code = KEY_L;
event.value = 1; // Pressing the key
write(fd, &event, sizeof(event));
event.type = EV_SYN;
event.code = SYN_REPORT;
event.value = 0;
write(fd, &event, sizeof(event));
usleep(dtime);
event.type = EV_KEY;
event.code = KEY_L;
event.value = 0; // Releasing the key
write(fd, &event, sizeof(event));
event.type = EV_SYN;
event.code = SYN_REPORT;
event.value = 0;
write(fd, &event, sizeof(event));
usleep(dtime);
///////////L////////////////
/////////////K///////////////////////
event.type = EV_KEY;
event.code = KEY_K;
event.value = 1; // Pressing the key
write(fd, &event, sizeof(event));
event.type = EV_SYN;
event.code = SYN_REPORT;
event.value = 0;
write(fd, &event, sizeof(event));
usleep(dtime);
event.type = EV_KEY;
event.code = KEY_K;
event.value = 0; // Releasing the key
write(fd, &event, sizeof(event));
event.type = EV_SYN;
event.code = SYN_REPORT;
event.value = 0;
write(fd, &event, sizeof(event));
usleep(dtime);
///////////K////////////////
/////////////J///////////////////////
event.type = EV_KEY;
event.code = KEY_J;
event.value = 1; // Pressing the key
write(fd, &event, sizeof(event));
event.type = EV_SYN;
event.code = SYN_REPORT;
event.value = 0;
write(fd, &event, sizeof(event));
usleep(dtime);
event.type = EV_KEY;
event.code = KEY_J;
event.value = 0; // Releasing the key
write(fd, &event, sizeof(event));
event.type = EV_SYN;
event.code = SYN_REPORT;
event.value = 0;
write(fd, &event, sizeof(event));
usleep(dtime*2);
///////////J////////////////
/////////////J///////////////////////
event.type = EV_KEY;
event.code = KEY_J;
event.value = 1; // Pressing the key
write(fd, &event, sizeof(event));
event.type = EV_SYN;
event.code = SYN_REPORT;
event.value = 0;
write(fd, &event, sizeof(event));
usleep(dtime);
event.type = EV_KEY;
event.code = KEY_J;
event.value = 0; // Releasing the key
write(fd, &event, sizeof(event));
event.type = EV_SYN;
event.code = SYN_REPORT;
event.value = 0;
write(fd, &event, sizeof(event));
usleep(dtime*2);
///////////J////////////////
/////////////K///////////////////////
event.type = EV_KEY;
event.code = KEY_K;
event.value = 1; // Pressing the key
write(fd, &event, sizeof(event));
event.type = EV_SYN;
event.code = SYN_REPORT;
event.value = 0;
write(fd, &event, sizeof(event));
usleep(dtime);
event.type = EV_KEY;
event.code = KEY_K;
event.value = 0; // Releasing the key
write(fd, &event, sizeof(event));
event.type = EV_SYN;
event.code = SYN_REPORT;
event.value = 0;
write(fd, &event, sizeof(event));
usleep(dtime*2);
///////////K////////////////
/////////////L///////////////////////
event.type = EV_KEY;
event.code = KEY_L;
event.value = 1; // Pressing the key
write(fd, &event, sizeof(event));
event.type = EV_SYN;
event.code = SYN_REPORT;
event.value = 0;
write(fd, &event, sizeof(event));
usleep(dtime);
event.type = EV_KEY;
event.code = KEY_L;
event.value = 0; // Releasing the key
write(fd, &event, sizeof(event));
event.type = EV_SYN;
event.code = SYN_REPORT;
event.value = 0;
write(fd, &event, sizeof(event));
usleep(dtime);
///////////L////////////////
usleep(200000); // Delay in microseconds
event.type = EV_KEY;
event.code = KEY_A;
event.value = 0; // Releasing the key
write(fd, &event, sizeof(event));
event.type = EV_SYN;
event.code = SYN_REPORT;
event.value = 0;
write(fd, &event, sizeof(event));
}
int main() {
sleep(5); // gimme a sec to start this sht
int fd = open("/dev/input/by-path/platform-i8042-serio-0-event-kbd", O_WRONLY | O_NONBLOCK);
if (fd < 0) {
perror("Failed to open /dev/input/by-path/platform-i8042-serio-0-event-kbd");
return 1;
}
//system("helm");
//A hold D*3 L K J* 2 K L relese A
// Create the virtual input device
struct uinput_user_dev uidev;
memset(&uidev, 0, sizeof(uidev));
strncpy(uidev.name, "Virtual Keyboard", UINPUT_MAX_NAME_SIZE);
uidev.id.bustype = BUS_VIRTUAL;
uidev.id.vendor = 0x1234;
uidev.id.product = 0x5678;
uidev.id.version = 1;
write(fd, &uidev, sizeof(uidev));
ioctl(fd, UI_DEV_CREATE);
// Enable keyboard events
ioctl(fd, UI_SET_EVBIT, EV_KEY);
for (int keycode = KEY_ESC; keycode <= KEY_SLASH; keycode++) {
ioctl(fd, UI_SET_KEYBIT, keycode);
}
// system("helm");
Akey(fd, uidev);
ioctl(fd, UI_DEV_DESTROY);
close(fd);
return 0;
}