fix stuff
[dcpomatic.git] / src / tools / dcpomatic.cc
index b1dde6621a696c42645fc3089e956141f9f62f2f..8e7c2e4539c65838313665d81a7413f34e41cc1c 100644 (file)
@@ -1750,7 +1750,20 @@ private:
                return true;
        }
 
-       void OnInitCmdLine (wxCmdLineParser& parser) override
+       int FilterEvent(wxEvent& event) override
+       {
+               auto key = dynamic_cast<wxKeyEvent*>(&event);
+               if (key && key->GetEventType() == wxEVT_CHAR) {
+                       std::cout << "CHAR: " << key->m_keyCode << " " << key->m_uniChar << " " << key->m_rawCode << " " << key->m_rawFlags << "\n";
+               } else if (key && key->GetEventType() == wxEVT_KEY_UP) {
+                       std::cout << "KEY_UP: " << key->m_keyCode << " " << key->m_uniChar << " " << key->m_rawCode << " " << key->m_rawFlags << "\n";
+               } else if (key && key->GetEventType() == wxEVT_KEY_DOWN) {
+                       std::cout << "KEY_DOWN: " << key->m_keyCode << " " << key->m_uniChar << " " << key->m_rawCode << " " << key->m_rawFlags << "\n";
+               }
+               return -1;
+       }
+
+       void OnInitCmdLine(wxCmdLineParser& parser) override
        {
                parser.SetDesc (command_line_description);
                parser.SetSwitchChars (wxT ("-"));
@@ -1835,14 +1848,33 @@ private:
                // xdo_enter_text_window (xdo, CURRENTWINDOW, text.c_str(), 200000);
                // xdo_send_keysequence_window (xdo, CURRENTWINDOW, "Return", 200000);
                // xdo_free (xdo);
-               auto uinput = open("/dev/uinput", O_WRONLY);
-               if (uinput >= 0) {
-                       write (uinput, text.c_str(), text.length());
-                       write (uinput, "\n", 1);
-                       close (uinput);
-               } else {
-                       std::cout << "failed to open uinput\n";
-               }
+               auto send = [this](int code, int rawcode) {
+                       auto event = wxKeyEvent(wxEVT_KEY_DOWN);
+                       event.SetEventObject(this);
+                       event.m_keyCode = event.m_uniChar = code;
+                       event.m_rawCode = rawcode;
+                       std::cout << "process " << code << " " << rawcode << "\n";
+                       ProcessEvent (event);
+
+                       event = wxKeyEvent(wxEVT_CHAR);
+                       event.SetEventObject(this);
+                       event.m_keyCode = event.m_uniChar = code;
+                       event.m_rawCode = rawcode;
+                       std::cout << "process " << code << " " << rawcode << "\n";
+                       ProcessEvent (event);
+
+                       event = wxKeyEvent(wxEVT_KEY_UP);
+                       event.SetEventObject(this);
+                       event.m_keyCode = event.m_uniChar = code;
+                       event.m_rawCode = rawcode;
+                       std::cout << "process " << code << " " << rawcode << "\n";
+                       ProcessEvent (event);
+               };
+
+               for (auto i = 0U; i < text.length(); ++i) {
+                       send (text[i], text[i]);
+               }
+               send (WXK_RETURN, 65293);
 #endif
        }
 #endif