fix stuff
[dcpomatic.git] / src / tools / dcpomatic.cc
index d4e8bf217ad6295e5854095bb4cb6e674d59a1d6..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 ("-"));
@@ -1831,10 +1844,37 @@ private:
        void cucumber_type (string text)
        {
 #ifdef DCPOMATIC_LINUX
-               xdo_t* xdo = xdo_new (NULL);
-               xdo_enter_text_window (xdo, CURRENTWINDOW, text.c_str(), 200000);
-               xdo_send_keysequence_window (xdo, CURRENTWINDOW, "Return", 200000);
-               xdo_free (xdo);
+               // xdo_t* xdo = xdo_new (NULL);
+               // xdo_enter_text_window (xdo, CURRENTWINDOW, text.c_str(), 200000);
+               // xdo_send_keysequence_window (xdo, CURRENTWINDOW, "Return", 200000);
+               // xdo_free (xdo);
+               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