Przytrzymaj klawisze modyfikatora

23

Zakochałem się w tym, że mogę przytrzymać klawisz na Androidzie przez około 100 ms, aby uzyskać klawisz interpunkcyjny „pod” (inaczej w menu), i chciałbym mieć tę samą zdolność dla Ubuntu. Nie muszę powtarzać znaków, więc niczego mi nie brakowało. Czy to możliwe, a jeśli tak, to w jaki sposób? Dziękuję Ci :)

Patrick
źródło
Jest późno, ale czy możesz bardziej szczegółowo opisać funkcjonalność, którą chciałbyś wdrożyć dla Ubuntu.?
Harshit,
1
@Harshit, jasne: za pomocą klawiatury Google na Androidzie można wybrać możliwość przytrzymania klawiszy na klawiaturze -oft, aby wpisać interpunkcję, bez konieczności przechodzenia do osobnego menu. Idealnie byłoby to zaimplementowane jako opcja w Ubuntu, przytrzymując, powiedzmy, klawisz „2” dla typów 100ms a „@”, przytrzymując „-„ typy ”_” i tak dalej.
Patrick,

Odpowiedzi:

3

Obecnie nie ma szybkiego i łatwego sposobu włączenia tego rodzaju funkcji w wersji Ubuntu na komputery.

Osobiście jestem wielkim fanem domyślnych skrótów klawiszowych ; Uważam je za szybsze i dużo bardziej intuicyjne niż wybór długiego naciśnięcia w stylu mobilnym (♥). To powiedziawszy, jeśli masz czas i determinację, możesz być w stanie przywrócić opcję slowkeys w domyślnej podstawowej aplikacji Universal Access, aby zbudować coś podobnego do opcji mobilnej.

Grzebiąc w tym sam, XKB wydaje się być związany z kontrolą powolnych klawiszy. Możesz użyć XKB do skonfigurowania i ulepszenia powiązań klawiaturowych Ubuntu, i o ile mogę stwierdzić, ta sekcja ma to, czego potrzebujesz. Więc nie powinno być (względnie) trudne uzyskanie alternatywnego wydruku postaci, gdy klawisz jest przytrzymany.

Sprawy komplikują się, gdy do klawisza przypisane jest wiele znaków specjalnych (na przykład: przytrzymaj „a” i uzyskaj opcje dla ä, à, á, â itd.). Jak przeglądać opcje? Czy masz wyskakujące znaki w oknie dialogowym, a następnie użyj myszy, klawisza tab lub klawiszy strzałek, aby je wybrać? Wydaje się czasochłonne.

Lub możesz przypisać różne długości wstrzymania do różnych znaków. Przytrzymaj 100ms dla à, 200ms dla á, 300ms dla… Ale pamiętanie, ile sekund to czas, w których postacie mogą się podchodzić, nie wspominając już o przypisaniu ich wszystkich osobno. Plus, kiedy wejdziesz w dłuższe listy postaci, możesz siedzieć i trzymać klucz przez dobre 3-4 sekundy. Wydaje się jeszcze bardziej czasochłonne.

Zamiast powolnych klawiszy możesz wypróbować opcję powtarzania klawiszy , aby wiele stuknięć klawisza zapewniało znak specjalny: na przykład 3 stuknięcia „a” dla à. Ale wtedy ryzykujesz pojawieniem się niechcianych znaków specjalnych, gdy wpiszesz coś takiego jak „dobry”, „niesamowity” lub „aaaaaaahhh!”

Być może wymyśliłeś inną, bardziej wydajną metodę implementacji, o której nie myślę, w takim przypadku idź i zmodyfikuj! Ale w międzyczasie nadal zalecam komponowanie kluczowych kombinacji. ☺

Boxbot
źródło
1
Patrząc na link, może być możliwe ustawienie każdego klawisza jako klawisza modyfikującego na interpunkcję, z opóźnieniem, co jest dokładnie tym, czego szukam! Później będę musiał majstrować przy tym.
Patrick
0

Jestem pewien, że można to zrobić, modyfikując procedurę obsługi przerwań klawiatury (ISR). Po każdym naciśnięciu klawisza do procesora wysyłany jest sygnał przerwania. Procesor obsłuży to przerwanie, uruchamiając ISR klawiatury.

ISR to programy niskiego poziomu, zwykle kodowane w języku asemblera, ponieważ dotyczą bezpośrednio sprzętu i muszą być szybkie. Oto więcej informacji na temat przerwań sprzętowych procesorów Intel i sposobu ich używania.

Klawiatury mają własne procesory od czasów oryginalnego IBM-PC i mogą bardzo szybko generować znaki, jeśli dowolny klawisz zostanie przytrzymany.

Przyda się tu kilka definicji:

Powtórz opóźnienie : czas upłynął między naciśnięciem klawisza a rozpoczęciem powtarzania.

Częstotliwość powtarzania : Po naciśnięciu klawisza klawiatura powtórzy ten klawisz. Szybkość, z jaką się powtarza, to częstotliwość powtarzania. Czasami nazywany stawką typową.

Procedura ISR na klawiaturze musiałaby zostać zmodyfikowana, aby zastąpić funkcję opóźnienia powtarzania funkcją „znak alternatywny”. Istotą jest moment naciśnięcia i zwolnienia klawisza. Mierząc czas trwania naciśnięcia klawisza, ISR (lub moduł obsługi przerwań) wiedziałby, że może przekazać normalny znak alternatywnego znaku (klawisz „pod nim”)

Zasadniczo zmodyfikowałbyś lub ponownie napisałeś sterownik urządzenia dla klawiatury.

To tylko ogólny pogląd na podejście, które moim zdaniem byłoby potrzebne, aby osiągnąć to, czego chcesz.

dbkeys
źródło
0

Ponieważ touchpad działa podobnie jak ekran dotykowy w Androidzie, zapewniłby lepszy interfejs niż klawiatura. Rzeczywiście można zaimplementować całkiem nowy zestaw procedur, aby powiększyć, przesuwając kciuk i palec wskazujący razem, a pomniejszyć poprzez odwrócenie kierunku.

Touchpad może już wykryć jeden palec, dwa palce, a nawet dłonie przypadkowo poruszające się po touchpadzie, a zatem ignorowane. Rozpoznawane są prędkości przyspieszania i zwalniania. Już kontroluje wskaźnik myszy dla tekstu, który chcesz wyróżnić długim naciśnięciem.

Powinna to być bułka z masłem dla programistów, aby dodać dodatkowy kawałek kodu do pomiaru dotykowego długości prasy i wywołać menu kontekstowe dla select, copy, paste, etc jak smartfony zrobić dzisiaj.

Myślę, że twoje pytanie to świetny pomysł, który może ewoluować oprogramowanie i klawiatury z wbudowanymi touchpadami na zupełnie nowy poziom. Powinienem zauważyć, że niektóre touchpady wbudowane w klawiatury mają kolorowy ekran LCD, który może jeszcze bardziej rozwinąć Twój pomysł. tzn. podświetlony tekst na ekranie może być dublowany na ekranie dotykowym lcd i powiększany dla drobnych ruchów.

Apple, Google, Microsoft i Linus mogą być podekscytowane Twoim pomysłem. Z pewnością wzbudziło to moje zainteresowanie!

WinEunuuchs2Unix
źródło
Czy wyczuwam sarkazm, czy to jest autentyczne?
Amit Gold,
Myślę, że to świetny pomysł. Przynosząc niektóre zalety smartfona z powrotem do domu na pulpit.
WinEunuuchs2Unix