Wirtualna klawiatura jest wymagana w środowisku Linux, które powinno być uruchamiane za każdym razem, gdy użytkownik naciśnie na edytowalne składniki interfejsu użytkownika, takie jak wirtualna klawiatura na iPhonie, iPadzie, Android, itp.Automatyczne uruchamianie klawiatury w systemie Linux, gdy użytkownik naciśnie edytowalne komponenty interfejsu użytkownika
Przegląd rozwiązania: Jako podstawę wirtualnej klawiatury została zastosowana klawiatura matchbox, która jest aplikacją typu open-source i zapewnia bogatą funkcjonalność. Mechanizm automatycznego przełączania został rozwiązany poprzez modyfikację źródła QT i GTK w celu wysłania sygnałów Dbus w sygnale "on_press" (gdy użytkownik naciśnie na edytowalny kompilator UI) do jakiegoś demona, który włącza wirtualną klawiaturę.
Problem: „on_press” sygnał DBus jest wysyłany, gdy użytkownik naciśnie lub klika składników UI czyli podczas „on_click” wypadek QT i GTK. Wirtualna klawiatura jest ukryta w zdarzeniu "focus_out" w QT i GTK. Klawiatura nie jest włączona podczas zdarzenia "focus_in", ponieważ niektóre aplikacje podczas uruchamiania emitują na chwilę zdarzenie "focus_in", a następnie emitują zdarzenie "focus_out", więc wirtualna klawiatura była wyświetlana przez krótki czas, a następnie ukryta, co nie było dokładne. zostało to rozwiązane przez wygenerowanie sygnału "on_press" Dbus podczas "on_click" zdarzeń GTK i QT.
Więc teraz mam inny problem.
- Powiedzmy użytkownik nacisnął na edytowalny oknie pojawiła się wirtualna klawiatura, "on_click" (GTK, wydarzenie QT) -> "on_press" (sygnał DBus) -> klawiatura wirtualna jest uruchomiona
- Następnie użytkownik naciska na Przycisk Tab, aby przejść do innego edytowalnego pola. "focus_out" (GTK, zdarzenie QT) -> "hide_keyboard" (sygnał Dbus) -> wirtualna klawiatura jest ukryta i nie jest ponownie uruchamiana.
Dzieje się tak, ponieważ drugie okno edytowalne emituje zdarzenie "focus_in", a nie "on_click".
Więc proszę, pomóż znaleźć rozwiązanie dla sprawy, gdy użytkownik przełącza między edytowalnym pudełkiem a przyciskiem tabulatora. Lub jeśli masz zupełnie inne rozwiązanie, zasugeruj to.
Dzięki z góry, Levon