ATNEL tech-forum https://forum.atnel.pl/ |
|
MK_MATRIX_KBD i repetycja klawisza https://forum.atnel.pl/topic23864.html |
Strona 1 z 1 |
Autor: | Gienek_S [ 29 lip 2021, o 20:52 ] |
Tytuł: | MK_MATRIX_KBD i repetycja klawisza |
Witam. Testuję tę bibliotekę i nie potrafię uzyskać repetycji klawiszy. Konfiguracja biblioteki: język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Program główny: język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
BEEP sygnalizuje mi nowe naciśnięcia klawisza. I to działa poprawnie. Ale jak przytrzymam dowolny klawisz to nie jest on repetowany bo powinien mi powtarzać tego BEEP-a. Co jest nie tak ? P.S. Procesor ATMega128A |
Autor: | mirekk36 [ 29 lip 2021, o 21:48 ] |
Tytuł: | Re: MK_MATRIX_KBD i repetycja klawisza |
teraz nie pamiętam szczegółów i nie mam jak sprawdzić - ale czy nie próbowałeś wyłączyć zdarzenia ENABLE_ON_KEY_LONG_PRESS_EVENT czyli ustawić go na zero? Bo jak ono jest włączone to chyba (ale może się mylę) nie będzie repetycji bo to się troszkę kłóci sprawdź i daj znać |
Autor: | Gienek_S [ 30 lip 2021, o 20:00 ] |
Tytuł: | Re: MK_MATRIX_KBD i repetycja klawisza |
obojętnie czy: #define ENABLE_ON_KEY_LONG_PRESS_EVENT 1 czy: #define ENABLE_ON_KEY_LONG_PRESS_EVENT 0 efekt jest taki sam. |
Autor: | mirekk36 [ 30 lip 2021, o 20:41 ] |
Tytuł: | Re: MK_MATRIX_KBD i repetycja klawisza |
wiesz co? Właśnie sprawdziłem bibliotekę i działa idealnie Weź sobie to przetestuj panie kochany najpierw na pliku main.c który dostałeś razem z biblioteką. Działa "od kopa" po pobraniu, i to na tych ustawieniach które pokazałeś z pliku *.h ja niestety nie mam aż na tyle czasu żeby teraz analizować twój main.c ... więc najpierw jak mówię zacznij od kodu w main.c z pliku biblioteki i jak tam coś nie będzie działało to wtedy napisz co ok? |
Autor: | Gienek_S [ 30 lip 2021, o 21:27 ] |
Tytuł: | Re: MK_MATRIX_KBD i repetycja klawisza |
repetycja działa jak zmodyfikowałem funkcję "uint8_t GetKey (void)" do postaci: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Funkcje biblioteczne key_up i key_down same nie repetują klawisza. |
Autor: | mirekk36 [ 30 lip 2021, o 23:40 ] |
Tytuł: | Re: MK_MATRIX_KBD i repetycja klawisza |
Gienek_S napisał(a): Funkcje biblioteczne key_up i key_down same nie repetują klawisza. Ale proszę cię (i bez urazy) ale nie opowiadaj bajek bo zastanawiam się czy to ty mi tłumaczysz jak działa moja biblioteka ? czy raczej zapytałeś jak działa ? Ne wiem w ogóle co ty wymyślasz z tym GetKey ... to jest niestety absurd, dlatego, że jak się ustawi repetycję w bibliotece to funkcja key_long_press() czyli callback jest wywoływany automatycznie zgodnie z interwałem czasu określonym w #define AUTO_REPEAT_RIME, i to do niej wstaw sobie BEEP'a swojego |
Autor: | Gienek_S [ 31 lip 2021, o 08:02 ] |
Tytuł: | Re: MK_MATRIX_KBD i repetycja klawisza |
Przepraszam bardzo że cię irytują moje wypowiedzi. Ja tylko opisałem jak u mnie to działa, nie miałem zamiaru Ci nic tłumaczyć jak działa Twoja biblioteka. Jeszcze raz spróbuję przekazać moje spostrzeżenia. Zakładam że w pliku "mk_keyboard.h" mamy: #define ENABLE_ON_KEY_DOWN_EVENT 1 #define ENABLE_ON_KEY_UP_EVENT 1 #define ENABLE_ON_KEY_LONG_PRESS_EVENT 1 #define LONG_PRESS_TIME 50 // min = 20, default = 50, MAX = 254! #define LONG_PRESS_AS_AUTO_REPEAT 1 // 0 - DISABLE AUTO REPEAT, 1 - ENABLE AUTO REPEAT #define AUTO_REPEAT_RIME 15 // min = 1, default = 15, MAX = (LONG_PRESS_TIME-1) !!! W programie głównym wywołuję tylko funkcję MK_KBD_EVENT(); Czyli wszystko co biblioteka zwraca znajduje się odpowiednio w: 1.) void key_down( uint8_t key_nr ) 2.) void key_up( uint8_t key_nr ) 3.) void key_long_press( uint8_t key_nr ) tylko to co zauważyłem to funkcje 1. i 2. zwraca tylko raz klawisz. Natomiast funkcja 3.) zwraca klawisz po czasie LONG_PRESS_TIME po czym zwraca klawisz repetowany. I dlatego żeby uzyskać w jednej funkcji zwrot naciśniętego klawisza zrobiłem taką sumę logiczną tych dwóch zdarzeń w uint8_t GetKey (void) |
Autor: | mirekk36 [ 31 lip 2021, o 12:01 ] |
Tytuł: | Re: MK_MATRIX_KBD i repetycja klawisza |
Gienek_S napisał(a): Przepraszam bardzo że cię irytują moje wypowiedzi. Nie nie irytują tylko się zdziwiłem - ale pewnie źle zrozumiałem - więc przepraszam Gienek_S napisał(a): tylko to co zauważyłem to funkcje 1. i 2. zwraca tylko raz klawisz. Natomiast funkcja 3.) zwraca klawisz po czasie LONG_PRESS_TIME po czym zwraca klawisz repetowany. I dlatego żeby uzyskać w jednej funkcji zwrot naciśniętego klawisza zrobiłem taką sumę logiczną tych dwóch zdarzeń w uint8_t GetKey (void) ok teraz rozumiem po co robisz sobie ten get_key - ale zastanawiam się dlaczego ? No bo teraz już doszliśmy razem do tego że jednak repetycja działa i tak jak autor to obmyślił czyli tylko dla funkcji nr 3 jak napisałeś. Spróbuj opisać w czym masz problem ? bo np jeśli w funkcji nr 1 masz coś tam zrobić ale dokładnie to samo chciałbyś żeby się wykonywało podczas repetycji - to przecież nie potrzebne ci ŻADNE getkeye - tylko np, załóżmy że chcę zmieniać stan diody LED za każdym razem tak ? No to napisz sobie zewnętrzną funkcję np: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. i teraz wywołuj że tę funkcję z: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. a także z: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. to jest właściwa droga i właściwe podejście - te funkcje 1-3 są niejako zdarzeniami i wystarczy je oprogramować w dowolny sposób. Czyli nie wstawiaj do nich jakiegoś kodu, szczególnie jeśli ma być powtarzalny tylko włóż ten kod do właściwej nowej funkcji i wywołuj ją z metod na których ci zależy. To troszkę tak jak w programowaniu prawie że obiektowym |
Strona 1 z 1 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |