Skocz do zawartości

Pomocna odpowiedź

Podoba Ci się ten projekt? Zostaw pozytywny komentarz i daj znać autorowi, że zbudował coś fajnego!

Masz uwagi? Napisz kulturalnie co warto zmienić. Doceń pracę autora nad konstrukcją oraz opisem.

(edytowany)

Ja nic nie mówię, ale są małe wyświetlacze (choć pewnie luzem łatwiej kupić i z taśmą do lutowania niż FPC). Kurcze, gdzieś w ciekawych filmach jest odlewanie własnego przycisku z wyświetlaczem. Nic odkrywczego nie wymyślam oczywiście, ale wynik może być ciekawy.

Co do HID i skrótów klawiszowych, to Windowsowe skróty (*.lnk) umożliwiają przypisanie skrótów klawiszowych, a tutaj to już wszystko można odpalić skryptem (przynajmniej PowerShell zrobi wszystko co da się w systemie zrobić), którego wykonanie nie będzie widoczne: skrypt *.vbs plus ewentualnie *.bat, czy *.ps1. Ja tam nie jestem wielkim programistą, ale podglądam i np. tą "sztuczkę" podejrzałem w Scrcpy.

Edytowano przez matsobdev
  • 2 tygodnie później...
(edytowany)

Małe wyświetlacze pod przyciskami to jest katorga - masa roboty, żeby wszystkie podłączyć, zamocować i jeszcze przygotować przycisk, który będzie nad nimi działał (możemy zapomnieć o standardowych Cherry MXach lub im podobnych). Stream Deck rozwiązuje ten problem znacznie sprytniej: stosuje tylko jeden duży wyświetlacz, nad którym umieszczona jest płytka z otworami i krawędziami dookoła otworów wrażliwymi na dotyk (zgaduję, że działa to podobnie do pojemnościowego ekranu dotykowego). Nad nią z kolei znajdują się przyciski, które po wciśnięciu dotykają tych wrażliwych obszarów (wszystko widać dosyć dobrze na przykład tu).

Jeżeli chodzi o Windowsowe skróty, to wydaje mi się, że ten pomysł kwalifikuje się idealnie do tego, o czym wspominałem wcześniej, czyli do obchodzenia ograniczeń. Takie rozwiązanie ma bowiem cały szereg wad:

  • Pliki skrótów muszą być umieszczone w odpowiednich katalogach
  • Różne wersje Windows w różny sposób podchodza do skrótów klawiaturowych - zmienia się to z wersji na wersję, co potencjalnie wymaga ciągłego dostosowywania skrótów. Na przykład w Windows 7 można było rejestrować globalne skróty z użyciem klawisza Windows. W Windows 10 (chyba nawet 8 ) jest to już niemożliwe.
  • Skrótów jest ograniczona liczba - mogą one również kolidować ze skrótami używanych aplikacji
  • PowerShell teoretycznie daje możliwość "pisania" w .NET, ale implementowanie jakichkolwiek bardziej złożonych rozwiąząń to droga przez mękę. Dla przykładu, jeden z domyślnie dostępnych pluginów w Open Macro Keyboard pozwala na szybkie przełączenie się do głównego okna procesu o zadanej nazwie pliku wykonywalnego (np. devenv.exe dla Visual Studio, spotify.exe dla Spotify i tak dalej). Zaimplementowałem to w C++ (bo korzystam z WinAPI oraz z COM w celu aktywowania okna - inaczej praktycznie się nie da). Powodzenia z pisaniem tego w PowerShellu.
  • PowerShell jest wolny, bo jest językiem interpretowanym. Możemy więc zapomnieć np. o szybkim wykonaniu kilku operacji jedna po drugiej.
  • Aby móc uruchamiać pliki ze skryptami, trzeba albo je cyfrowo podpisać albo wymusić na systemie operacyjnym możliwość uruchamiania potencjalnie niebezpiecznych skryptów. To samo jest z .vbs - szczególnie w tym przypadku wyłączanie zabezpieczeń systemowych jest ryzykowne, bo masa złośliwego oprogramowania jest zaimplementowana właśnie jako skrypty .vbs
  • Pliki PowerShell + LNK stanowią efektywny "profil". Można się nim dzielić z innymi, ale jest to dosyć niebezpieczne, bo w takich skryptach można zawrzeć zupełnie dowolny kod - w tym złośliwy. OpenMacroKeyboard eksportuje profile do pliku .xml niezawierającego niczego, co dałoby się bezpośrednio uruchomić (choć oczywiście można np. przybindować do przycisku link do złośliwej strony, tego nie da się uniknąć).
  • Bez dodatkowego oprogramowania niemożliwe jest przygotowanie profili pod uruchomioną aplikację (w sensie, klawiatura makro przełącza się na określony ekran w zależności od tego, która aplikacja w danym momencie jest aktywna). OpenMacroKeyboard w tej chwili nie ma jeszcze takiej funkcjonalności, ale jeśli projektem zainteresuje się więcej osób, to planuję coś takiego dopisać.
  • Bez dodatkowego oprogramowania niemożliwe jest zastosowanie odrębnych "ekranów", czyli przyporządkowań akcji do klawiszy. Jedną z największych zalet Open Macro Keyboard jest to, że umożliwia podgląd bieżącego "ekranu" na wyświetlaczu komputera nawet w przypadku klawiatur, które nie mają żadnej metody przekazania feedbacku dla użytkownika (np. diody czy wyświetlacz).
  • Bez dedykowanej aplikacji na PC, skróty klawiaturowe muszą być zaszyte w firmware klawiatury - ich modyfikacja wymaga przeprogramowania mikrokontrolera

Ogólnie wszystko zależy od potrzeb. Jeżeli ktoś potrzebuje tylko uruchomić kilka aplikacji i ewentualnie zautomatyzować kilka skrótów klawiaturowych, to rozwiązanie z plikami .ps1 może się sprawdzić. Chociaż gdyby się nad tym chwilę zastanowić, to to wszystko jest już dostępne za darmo w Open Macro Keyboard, zadziała szybciej, implementacja firmware dla klawiatury jest łatwiejsza (przesłanie kilku komunikatów tekstowych za pomocą klasy Serial) i jednorazowa, no i wreszcie Open Macro Keyboard pozwala potem rozbudowywać możliwości klawiatury bez konieczności przeprogramowywania jej - osobiście nawet w takim prostym przypadku chyba też skorzystałbym z zaprezentowanego frameworka 🙂

Pozdrawiam -- Spook.

Edytowano przez spook
  • Lubię! 2
  • 7 miesiące później...
(edytowany)

Cześć. Bardzo fajny projekt, w wolnej chwili spróbuję na nowo stworzyć swojego Stream decka z wykorzystaniem OMK. W swojej pierwszej wersji wykorzystałem właśnie Arduino Leonardo (enkoder, klawisz, klawisz, enkoder / 4x klawisz / 4x klawisz + jeszcze jeden enkoder do sterowania głośnościa i jeden klawisz powrotu). Chciałem móc korzystać z folderów w moim stream decku, jednak aby nie pogubić się w skrótach dodałem ekran LCD 128x64 który został mi z drukarki 3D. Nie podobało mi się jednak to rozwiązanie i nie było zbyt kompaktowe.
W drugiej wersji postanowiłem ponownie wykorzystać ekran z drukarki 3D, tym razem Bigtreetech TFT35 v2. Niestety procesor wbudowany w ten ekran to STM32 z którym nigdy wcześniej nie miałem styczności, dlatego nie chciałem z jednej strony pisać całego programu od nowa i programować ten układ. Zrobiłem jednak częściową inżynierie wsteczną i udało mi się rozszyfrować jak wrzucić własne obrazu, własne podpisy pod danym przyciskiem na ekranie, jak zrobić następne strony i zmieniłem ilośc ikon z 2x4 na 3x5. Komunikację z PC zrobiłem od d**y strony i naciśnięcie danego przycisku na ekranie wysyła komende strona_przycisk (np. 1_1) do Arduino Pro Micro które odczytuje po Serialu komende z STM. Następnie wywołuje dane kombinację przyciśnięć pod PC, ponieważ działa jako urządzenie HID.

Minusem tego rozwiązania była potrzeba edycji 6 plików, aby zmienić coś zmienić. Nazwy zdjęć, opisy przycisków, nazwy zmiennych, konfiguracja makr dla Arduino Leonardo, przygotowanie zdjęć w odpowiedniej rozdzielczości, zgranie to na kartę, skompilowanie programu, aktualizacja oprogramowania w ekraniku, aktualizacja programu w Arduino. W między czasie zrobiłem aplikacje webową która edytowała automatycznie te pliki (wycinała odpowiedni fragment i dodawała nowy z nowymi nazwami, zmiennymi itp), przygotowywała odpowiednio zdjęcia oraz nagrywała wciśnięte przyciski na klawiaturze i przerabiała je na kod do Arduino. Później przemyślałem to, że nie nazwy zmiennych nie muszą się zmieniać tylko wystarczy zrobić strona_przycisk.
Tak więc z tego co dobrze pamiętam (bawiłem się z tym 2 lata temu, a aktualnie ekran wrócił do drukarki), odeszła potrzeba konfigurowania, kompilowania i wgrywania firmware'u do ekranu. Trzeba jednak wyciągnać z niego kartę na której przechowywane są zdjęcia i wgrać nowe, oraz tłumaczenia zmiennych strona_przycisk na odpowiedni opis do danego przycisku. Potrzeba też zaaktualizować Arduino, aby wywoływał nową kombinację klawiszy HID.

Niestety tak jak opisałeś na samym początku HID ma swoje wady, a twoje rozwiązanie wydaje się lepszym/ bardziej kompletnym pomysłem.

Wyświetlanie na ekranie podpowiedzi dotyczących wybranego katalogu jest fajne, jednak nie przezwycięży ekranu w DIY Stream Decku na którym cały czas wyświetlają się nam aktualne skróty. Nie zagłebiłem się jeszcze w kod OMK i nie ukrywam nie pisałem nigdy aplikacji desktopowej, więc może ty masz pomysł lub zrobiłeś w między czasie wersję z dotykowym ekranem na którym wyświetlają się cały czas przyciski. Program w takim wypadku musiał by wysyłać ikony/opisy za każdym razem po przejsciu do innego folderu do Arduino/Pico, a on rysowałby je na ekranie?

image.thumb.png.7d809d88d1f3500384efd7a2cb5c4360.png

Edytowano przez Techkubas
  • Lubię! 2
  • 3 tygodnie później...

Cześć. Stworzyłem sobie narazie Stream Decka na podstawie Numpada z starej klawiatury, kilku dodatkowych enkoderó i Arduino Nano. Całość działa ok, zmieniłem sobie parę rzeczy, jak układ menu edycji układu ponieważ przy układzie numpada z jednym dodatkwoym wierszem, guziki Ok i anuluj chowały się pod paskiem zadań, wydłużyłem też potrzebny czas przyciśniecia, ponieważ czasami okno skrótów pojawiało się po zwykłym naciśnięciu klawisza.

Mam jednak 2 problemy.

1. Korzystam raz z laptopa, a raz z komputera. Urządzenia mam podłaczone przez KVM więc nie muszę przepinać "Stream dekca", jednak potrzeba by było eksportować i importować plik omkprofile z danym układem skrótów między urządzeniami. Czy istnieje gdzieś podobny plik z któego korzysta OMK bez potrzeby importu i eksportu, aby można było go synchronizować za pomocą Syncthing, czy po prostu synchronizować cały skompilowany folder OMK?
2. Czasami OMK nie wykrywa automatycznie klawiatury, potrzebne jest ponowne uruchomienie programu / odłaczenie Stream Decka / wybranie Połącz ponownie w programie. Czym może to być spowodowane?
image.thumb.png.c4bd65b97db0de0e0e267c7a8c7af507.png

  • Lubię! 1
  • 3 miesiące później...

Hej,

Nie wiem, czemu nie zauważyłem Twojego postu 😞 Ale już odpisuję.

Open Macro Keyboard przechowuje ustawienia w katalogu użytkownika, C:\Users\<użytkownik>\AppData\Roaming\Spooksoft\OpenMacroKeyboard.

Jeśli chodzi o ponowne połączenie, prawdę mówiąc nie przychodzi mi nic do głowy. Jeśli znasz C#, możesz spróbować napisać automatyczne ponawianie prób połączenia po jakimś okresie czasu, być może na przykład Windows najpierw uruchamia aplikację, a dopiero potem podłącza urządzenie przez USB i aplikacja próbuje połączyć się z klawiaturą, gdy ta nie jest jeszcze dostępna w systemie.

Pozdrawiam -- Spook.

  • Lubię! 1
(edytowany)

Dla wszystkich zainteresowanych, po kilku iteracjach zaprojektowałem wreszcie końcową wersję płytki klawiatury, która działa już bez problemów. Jeżeli ktoś ma ochotę się taką klawiaturą pobawić, wystawiłem ją na Allegro (mam obecnie dostępne 2 sztuki):

https://allegrolokalnie.pl/oferta/klawiatura-makro-z-podswietleniem-led-rgb

Załączam z tym postem również informacje na temat klawiatury i sposoby, na jakie można jej używać.

Pozdrawiam -- Spook.

Open Macro Keyboard v3 rev.pdf

Edytowano przez spook
  • Lubię! 1

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...