Jak uzyskać wejście z klawiatury, bez naciskania przycisku „powrót” w C/Mac OSGet wejście z klawiatury, bez konieczności „powrotu” w C
Odpowiedz
W systemach uniksowych z zaciskami (przypuszczam, że MacOS X kwalifikuje się), musisz ustawić terminal tak zwany tryb "cbreak". Chodzi o to, że terminal zachowuje dane do momentu naciśnięcia "return", tak że nie ma nic, co mógłby zrobić twój kod C, chyba że instruuje terminal, aby nie wykonywał takiego buforowania. Jest to często nazywane "trybem Cbreak" i obejmuje funkcję tcsetattr()
.
Trochę googlowania znaleziono this code co wydaje się być w porządku. Gdy terminal jest w trybie Cbreak, będziesz mógł odczytać dane, ponieważ są one dostarczane ze standardowymi połączeniami getchar()
lub fgetc()
.
Możliwe jest również wymuszenie "linii do tej pory" przez naciśnięcie Ctrl-D (a gdy zostanie zrobione na pustej linii, daje to możliwość odczytania 0 znaków, to sygnalizuje to koniec warunek pliku). – Vatine
Jeśli trzeba obsłużyć szczegóły siebie, użyj wariantu curses. Jeśli jest dostępna, preferuj "ncurses" zamiast "curses". Zauważ, że niektóre klawisze to klawisze "Meta", które tak naprawdę modyfikują kody kluczy podstawowych. Istnieje kilka "trybów" do czytania kluczowych danych wejściowych, od "gotowanych", przez "częściowo ugotowane", po "surowe". Każdy tryb ma swoje osobliwości, dokładnie zapoznaje się z dokumentacją.
Czasami lepiej jest używać istniejącego kodu obsługi klawisza z różnych bibliotek programowania gier, słyszałem o dobrych wynikach z wykorzystaniem kluczy SDL do skanowania. To trochę potrwa, więc być może istnieją nowsze (i lepsze) zestawy narzędzi.
- 1. Odrzucanie klawiatury za pomocą UISearchBar, bez konieczności udzielania pierwszej odpowiedzi
- 2. Ionic/HTML5 - dziesiętne wejście klawiatury?
- 3. ReSharper blokuje wejście klawiatury w VS2013
- 4. Jak mogę zablokować wejście klawiatury i myszy w C#?
- 5. CGEventTapCreate obserwuje wejście klawiatury w kakao
- 6. Get wartość wejścia wewnątrz wejście
- 7. Odczytaj wejście klawiatury w Scali z wpisanymi znakami widocznymi
- 8. Tylko cyfry jako wejście klawiatury dla ipad
- 9. jQuery: Jak mogę odsłuchać ogólne wejście klawiatury?
- 10. Czy mogę zmienić wejście klawiatury użytkownika?
- 11. [Objective-C] Edycja UILabel bez ukrywania klawiatury
- 12. W interpreter Pythona, bez powrotu "'"
- 13. MVC.net get enum nazwa wyświetlana w widoku bez konieczności odwoływania się do typu enum w świetle
- 14. uzyskiwanie zdarzeń klawiatury bez ustawienia okna
- 15. Jak przechwycić wejście klawiatury na najniższym poziomie w systemie Linux?
- 16. Odtwórz wejście struktury bez etykiety
- 17. usuwanie klawiatury z ekranu bez wywoływania resignFirstResponder
- 18. Przewijanie RichEdita bez konieczności ustawiania ostrości
- 19. Zaktualizuj konfigurację logowania bez konieczności ponownego wdrażania.
- 20. Tworzenie nazwanej listy bez konieczności wpisywania nazwy każdego obiektu dwukrotnie
- 21. window.print() - bez konieczności otwierania okna drukowania
- 22. Używanie typowych właściwości get get w języku C# ... z parametrami
- 23. C# Wysyłanie wprowadzania klawiatury
- 24. Android - wejście html traci fokus po otwarciu miękkiej klawiatury (ASP.net)
- 25. Korzystanie z Java Compiler API bez konieczności instalowania JDK
- 26. Czy "tekst wejściowy powłoki adb" symuluje wejście klawiatury programowej?
- 27. OOP - bez GET/SET
- 28. Get adnotację z C# SelectList
- 29. Wejście vs: Wejście w jQuery
- 30. Typ wejściowy klawiatury klawiatury iOS z przecinkiem
Jest to zależne od systemu operacyjnego, więc możesz uzyskać lepsze odpowiedzi, jeśli wskażesz system operacyjny, który Cię interesuje. – Brian
Dodany znacznik OS z wzmianki w treści pytania. –
Wow, tekst rzeczywiście mówi Mac OS. Zupełnie tego nie zauważyłem :) – Brian