Program Listing for File pdjeInputTest.cpp

Return to documentation for file (include/tests/INPUT_TESTS/pdjeInputTest.cpp)

#include "Input_State.hpp"
#include "PDJE_Input.hpp"
#include "PDJE_Input_Device_Data.hpp"
#include <string>
#include <thread>
// #include "linux/linux_input.hpp"
#include <iostream>
// #include <unistd.h>
#include "MainProcess.hpp"
#include <filesystem>
#include <format>
namespace fs = std::filesystem;
int
main()
{
    // std::cout << GenExecuteShell("./PDJE_MODULE_INPUT_PROCESS", 84300)
    //           << std::endl;
    // auto mp = PDJE_IPC::MainProcess(54335);
    // std::cout << "opened connection" << std::endl;
    // if (mp.EndTransmission()) {
    //     std::cout << "Ended Transmission" << std::endl;
    // } else {
    //     std::cout << "Failed to End Transmission" << std::endl;
    // }

    // return 0;
    PDJE_Input pip;
    pip.Init();
    auto     devs = pip.GetDevs();
    DEV_LIST set_targets;
    for (auto i : devs) {
        std::cout << "name: " << i.Name << std::endl;
        switch (i.Type) {
        case PDJE_Dev_Type::MOUSE:
            std::cout << "type: mouse" << std::endl;
            break;
        case PDJE_Dev_Type::KEYBOARD:
            std::cout << "type: keyboard" << std::endl;
            set_targets.push_back(i);
            break;
        case PDJE_Dev_Type::HID:
            std::cout << "type: hid" << std::endl;
            break;
        case PDJE_Dev_Type::UNKNOWN:
            std::cout << "type: unknown" << std::endl;
            break;
        default:
            break;
        }

        std::cout << "dev path: " << i.device_specific_id << std::endl;
    }

    pip.Config(set_targets);
    // pip.NEXT();

    auto dline = pip.PullOutDataLine();
    pip.Run();//todo - impl process terminator
    // pip.NEXT();
    int         times = 100;
    std::thread watcher([&]() {
        while (true) {
            try{

                auto got = dline.input_arena->Get();
                for (uint64_t idx = 0; idx < got.second; ++idx)

                {

                    std::cout << "time: " << got.first[idx].microSecond << std::endl;
                    std::cout << "id: " << got.first[idx].id << std::endl;
                    std::cout << "name: " << got.first[idx].name << std::endl;

                    if (got.first[idx].type == PDJE_Dev_Type::KEYBOARD) {

                        std::cout
                        << "keyNumber: "
                        << static_cast<int>(got.first[idx].event.keyboard.k)
                        << std::endl;
                        std::cout << "pressed"
                        << got.first[idx].event.keyboard.pressed
                        << std::endl;
                    }

                    times--;
                    if (times < 0) {
                        return;
                    }
                    // }
                }
            } catch(const std::exception& e){
                std::cout << e.what() << std::endl;
            }
        }
    });

    watcher.join();
    pip.Kill();

    // OS_Input linux_oi;
    // linux_oi.SocketOpen("./PDJE_MODULE_INPUT_RTMAIN");
    // auto     devs = linux_oi.getDevices();
    // DEV_LIST toSet;
    // for (const auto &i : devs) {
    //     std::cout << i.Name << ", " << i.Type << std::endl;
    //     if (i.Type == "MOUSE") {
    //         toSet.push_back(i);
    //     }
    // }
    // std::cout << linux_oi.setDevices(toSet) << std::endl;
    // sleep(1);
    // linux_oi.EndSocketTransmission();
    // sleep(1);
    // std::cout << "end server" << std::endl;
    return 0;
}