main.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #include <cstring>
  2. #include <cassert>
  3. #include <thread>
  4. #include <chrono>
  5. extern "C" {
  6. #include <xdo.h>
  7. }
  8. const auto KEY_INTERVAL = std::chrono::seconds(64);
  9. const useconds_t KEY_DELAY = 12000; // microseconds
  10. void search_windows_by_name(const xdo_t* xdo, const char* name_regex, Window** windowlist_ret, unsigned int* nwindows_ret) {
  11. xdo_search_t search;
  12. memset(&search, 0, sizeof(xdo_search_t));
  13. search.max_depth = -1;
  14. search.require = xdo_search::SEARCH_ALL;
  15. search.searchmask |= SEARCH_NAME;
  16. search.winname = name_regex;
  17. xdo_search_windows(xdo, &search, windowlist_ret, nwindows_ret);
  18. }
  19. void search_toontown_windows(const xdo_t* xdo, Window** windowlist_ret, unsigned int* nwindows_ret) {
  20. search_windows_by_name(xdo, "Toontown.*", windowlist_ret, nwindows_ret);
  21. }
  22. void send_keysequence(const xdo_t* xdo) {
  23. Window* windows;
  24. unsigned int nwindows;
  25. search_toontown_windows(xdo, &windows, &nwindows);
  26. for(unsigned int i=0; i<nwindows; i++) {
  27. xdo_send_keysequence_window(xdo, windows[i], "Left", KEY_DELAY);
  28. xdo_send_keysequence_window(xdo, windows[i], "Right", KEY_DELAY);
  29. }
  30. }
  31. int main() {
  32. xdo_t* xdo = xdo_new(NULL);
  33. assert(xdo);
  34. while(true) {
  35. send_keysequence(xdo);
  36. std::this_thread::sleep_for(KEY_INTERVAL);
  37. }
  38. return 0;
  39. }