Liczba naciśnięć klawiszy, które rejestrujemy w ciągu dnia, jest ogromna. Od aplikacji do przesyłania wiadomości po kodowanie lub pisanie kolejnej powieści, sama liczba naciśnięć klawiszy jest trudna do obliczenia. Ale co, gdybyśmy mogli zaoszczędzić trochę czasu i nasze bolące stawy, tworząc skrót klawiaturowy?
Pimoroni’s Keybow 2040 to 16-klawiszowa klawiatura, którą można zaprogramować w CircuitPython, aby działała jako klawiatura USB. Każdy pojedynczy klawisz można zaprogramować do uruchamiania aplikacji, kontrolowania poziomów dźwięku, przełączania scen w OBS lub wklejania śmiesznych zdjęć kotów na Twittera.
W tym poradniku skonfigurujemy Keybow 2040 jako klawiaturę ogólnego przeznaczenia z klawiszami nawigacji po stronach, skrótami OBS i dwoma klawisze skrótów do uruchamiania popularnych aplikacji.
Nasza klawiatura skrótów została zaprojektowana tak, aby drapać swędzenie. Aby rozszerzyć naszą istniejącą klawiaturę i dodać dodatkowe funkcje, takie jak przełączanie scen OBS i uruchamianie aplikacji. Twój układ będzie odzwierciedleniem Twoich potrzeb, więc użyj tego przewodnika jako podstawy do zbudowania spersonalizowanego układu.
Dla tego projektu Będziesz potrzebować
Konfigurowanie Keybow 2040
Pimoroni ma pełny przewodnik o tym, jak skonfigurować Keybow 2040, a proces kompilacji jest fantastycznie prosty, wymaga tylko śrubokręta i kilku minut wysiłku. Keybow 2040 jest dostarczany z CircuitPython i wszystkimi niezbędnymi bibliotekami wstępnie zainstalowanymi. Jeśli musisz zainstalować CircuitPython i biblioteki, Pimoroni ma samouczek, który możesz śledzić.
Zamiast używać dołączonych klawiszy, pozyskaliśmy niektóre nasadki kompatybilne z MX z zapasowej klawiatury. Następnie umieściliśmy czapki na klawiaturze w żądanym układzie.
Górny rząd to podstawowa nawigacja, strona główna, strzałka w górę, koniec i strona w górę. Drugi wiersz to pozostałe klawisze strzałek i strona w dół. Trzeci rząd kontroluje naszą głośność, w górę iw dół, uruchamia narzędzie do zrzutów ekranu i otwiera terminal/wiersz poleceń. Ostatni rząd jest zarezerwowany dla OBS, poruszając się między czterema scenami. Oczywiście, jeśli próbujesz tego w domu, możesz użyć dowolnych klawiszy i przypisać je do dowolnych funkcji, niezależnie od tego, czy jest to uruchamianie aplikacji, wykonywanie akcji w programie, takim jak OBS, czy sterowanie odtwarzaniem multimediów.
Keybow 2040 używa systemu numeracji, w którym klawisz 0 jest widoczny w t w lewym dolnym rogu planszy, a klucz 15 w prawym górnym rogu. Korzystając z biblioteki Keybow CircuitPython, użyjemy tych liczb, aby skonfigurować, co będzie robił każdy klawisz i jak będzie się świecił.
Programowanie klawiszy skrótów Keybow 2040
Kod tego projektu jest napisany w CircuitPython, który jest bardzo podobny do MicroPythona i Pythona 3.
1. Połącz Keybow 2040 z komputerem kablem USB-C. Pojawi się nowe urządzenie, CIRCUITPY.
2. Używając preferowanego edytora, otwórz code.py znajdujący się na dysku CIRCUITPY. Zalecamy edytory kodu Microsoft Visual Studio Code, Thonny lub Mu.
3. Usuń dowolny tekst z pliku.
4. Importuj cztery biblioteki. Pierwszą z nich jest płyta, która umożliwia nam korzystanie z GPIO w układzie RP2040. Drugi to Keybow2040, który jest abstrakcją ułatwiającą sterowanie Keybow 2040. Importuj czas, aby kontrolować tempo kodu. Na koniec zaimportuj usb_hid, co pozwoli nam wysyłać skróty klawiaturowe tak, jakbyśmy mieli klawiaturę USB.
importuj tablicę
z keybow2040 importuj Keybow2040
czas importu
importuj usb_hid
5. Zaimportuj trzy biblioteki , aby Keybow 2040 działał jako klawiatura w układzie amerykańskim i aby umożliwić generowanie naciśnięć klawiszy przez kod.
z adafruit_hid.keyboard import Klawiatura
z adafruit_hid.keyboard_layout_us importuj KeyboardLayoutUS
z adafruit_hid.keycode importuj kod klucza
6. Zaimportuj dwie biblioteki, które umożliwią Keybow 2040 wysyłanie kodów kontroli zużycia, zwykle używanych w przypadku kluczy multimedialnych.
z adafruit_hid.consumer_control_code import ConsumerControlCode
z adafruit_hid.consumer_control import ConsumerControl
7. Keybow używa I2C do komunikacji z RP2040. Musimy powiedzieć kodowi, że używamy I2C i utworzyć obiekt keybow, do którego możemy łatwo się odwołać. Następnie używamy tego obiektu do tworzenia kolejnego obiektu, klawiszy, co znacznie ułatwia interakcję z klawiaturą.
i2c=board.I2C()
keybow=Keybow2040(i2c)
klawisze=klawisz.klawisze
8. Utwórz trzy obiekty, klawiatura, używane do utworzenia urządzenia USB interfejsu użytkownika (HID) i układ, który ustawia klawiaturę na układ amerykański. Trzeci obiekt to konsument i umożliwia nam wysyłanie specjalnych naciśnięć klawiszy, zwykle przypisanych do klawiszy multimedialnych, takich jak regulacja głośności.
klawiatura=Klawiatura (usb_hid.devices)
układ=KeyboardLayoutUS (klawiatura)
konsument=ConsumerControl(usb_hid.devices)
9. Utwórz dwie listy: domyślna i wasd. Listy te przechowują numery klawiszy, które później będą używane do podświetlania określonych klawiszy. Jak można się domyślić, wasd odnosi się do klawiszy ruchu, w naszym przypadku są one mapowane na klawisze kursora.
default=[0,1,3,4,5,8,9,11,12,13,14, 15]
wasd=[2,6,7,10]
10. Utwórz pętlę, aby stale uruchamiać główny kod.
gdy prawda:
11. Wewnątrz pętli utwórz pętlę for , która będzie iterować po liście domyślnej, ustawiając diodę LED dla każdego klawisza numerycznego na zieloną. Za każdym razem, gdy pętla for wykonuje iterację, wartość i zmienia się na następną pozycję na liście, od 0 do 1,3…15. Zauważ, że Keybow 2040 używa diod LED G R B (zielony, czerwony, niebieski), więc jasnozielony to 255,0,0.
lub domyślnie: keybow.keys[i].set_led(255,0,0)
12. Utwórz kolejną pętlę for. Tym razem ustawiamy kolor klawiszy kursora na czerwony, dzięki czemu możemy je łatwo zlokalizować.
dla i w wasd: keybow.keys[i].set_led (0,255,0)
13. Użyj testu warunkowego , aby sprawdzić, czy klawisz został naciśnięty. Pierwszym klawiszem jest klawisz 0, znajdujący się w lewym dolnym rogu. Kiedy ten klawisz jest wciśnięty, chcemy, aby naciskał klawisze SHIFT + A, zwalnia klawisze, a następnie zapala klawisz na czerwono przez 0,1 sekundy. Ten skrót zmienia sceny w OBS, gdy prezentujemy program The Pi Cast.
po naciśnięciu klawiszy[0]. keyboard.send(Kod.SHIFT, Kod.A) keybow.keys[0].set_led (0, 255, 0) keyboard.release_all() czas.sen(0.1)
14. Ustaw warunek dla klucza 1, znajdującego się o jeden klucz w górę od lewego dolnego rogu. Po naciśnięciu tego klawisza wszystkie diody LED stają się fioletowe (mieszane z czerwonym i niebieskim), a następnie wysyła polecenie klawisza multimedialnego, aby zmniejszyć (zmniejszyć) głośność. Klawisze są zwalniane, a krótki sen zmniejsza ryzyko odbicia klawiszy. Powtórz ten proces dla wszystkich kluczy, które chcesz zmapować. Jeśli potrzebujesz szablonu, kompletny kod tego projektu znajduje się na dole tego poradnika.
klawisze elif[1].wciśnięty: keybow.set_all (0, 255, 255) consumer.send(ConsumerControlCode.VOLUME_DECREMENT) keyboard.release_all() czas.sen (0.01)
15. Klawisz 9 na klawiaturze ma nasadkę klawiszy PrtSc i ten klawisz uruchomi narzędzie do wycinania Windows. Skonfiguruj ten klawisz, aby po naciśnięciu wszystkie diody LED były niebieskie, a następnie poinstruuj CircuitPythona, aby nacisnął trzy klawisze naraz. Te klawisze to Control, ALT i P. Następnie zwalniamy klawisze i na chwilę zatrzymujemy kod.
klawisze elif[9].wciśnięty: keybow.set_all(0, 0, 255) keyboard.send(Keycode.CONTROL, Keycode.ALT, Keycode.P) keyboard.release_all() czas.sen(0.1)
16. Powtórz proces warunkowy dla wszystkich 16 kluczy. Proces identyfikowania klawisza i ustawiania działań, które mają być podjęte po jego naciśnięciu, powtarza się dla wszystkich szesnastu klawiszy. Ostatnim klawiszem jest klawisz 15 (zaczęliśmy od 0), a kiedy ten klawisz jest wciśnięty, wszystkie diody LED są niebieskie, a następnie wysyła naciśnięcie klawisza Page Up przed zwolnieniem klawiszy i chwilową pauzą.
klawisze elif[15].naciśnięty: keybow.set_all(0, 0, 255) keyboard.send(Klucz.PAGE_UP) keyboard.release_all() czas.sen(0.1)
17. Aby klawiatura szukała danych wejściowych, musimypowiedzieć mu, aby aktualizował się na końcu każdej pętli. Jeśli tego brakuje, kod nie będzie działał zgodnie z oczekiwaniami.
keybow.update()
Zapisz plik code.py i Keybow 2040 zrestartują się i uruchomią Twój kod. Za kilka sekund możesz nacisnąć klawisze i szybko wykonać większość zadań, ale wciąż mamy trochę pracy do wykonania.
Dodawanie skrótów klawiaturowych do uruchamiania aplikacji systemu Windows
Jeśli używasz systemu Windows, trzeba utworzyć skróty klawiaturowe, aby po naciśnięciu jednego z klawiszy na klawiaturze system operacyjny wiedział, jak uruchomić program, taki jak narzędzie do wycinania (do naciśnięcia klawisza Prtsrc na naszej klawiaturze) lub monit CMD po naciśnięciu klawisza Terminal na naszej klawiaturze. Zwróć uwagę, że wbudowana metoda skrótów klawiaturowych systemu Windows wymaga CTRL + ALT + [litera lub cyfra], więc klawisz Prtsrc na naszej klawiaturze będzie faktycznie uruchamiał na przykład CTRL + ALT + P. Powtórz te kroki dla dowolnych klawiszy klawiatury, które uruchamiają programy.
1. Wyszukaj aplikację (np. „narzędzie do wycinania”) w polu wyszukiwania systemu Windows. Nie uruchamiaj go.
2. Kliknij prawym przyciskiem myszy ikonę programu i wybierz „Otwórz lokalizację pliku”
3. Kliknij prawym przyciskiem myszy ikonę skrótu l i wybierz „Właściwości”.
4. Kliknij pole Klawisz skrótu i wprowadź kombinację klawiszy (CTRL + ALT + P w naszym przypadku dla Prtsrc). Spowoduje to ustawienie klawisza skrótu dla tego polecenia, który pasuje do kodu tego klawisza.
Konfigurowanie klawiszy skrótów OBS
Aby skonfigurować skróty OBS, musimy otworzyć OBS, a następnie kliknąć Ustawienia >> Skróty klawiszowe do przypisania naciśnięcia klawisza do Sceny.
Pełny wykaz kodów
Zauważ, że ten kod zawiera skróty do wszystkich 16 klawiszy, których możesz używać do różnych funkcji w swoim projekcie.
importuj tablicę
z keybow2040 import Keybow2040
czas importu
importuj usb_hid
z importu adafruit_hid.keyboard Klawiatura
z adafruit_hid.keyboard_layout_us importuj KeyboardLayoutUS
z adafruit_hid.keycode importuj kod klucza
z adafruit_hid.consumer_control_code importuj ConsumerControlCode
z adafruit_hid.consumer_control import ConsumerControl # Skonfiguruj Keybow
i2c=tablica.I2C()
keybow=Keybow2040(i2c)
klawisze=klawisz.klawisze # Skonfiguruj klawiaturę i układ
klawiatura=Klawiatura(usb_hid.devices)
układ=KeyboardLayoutUS (klawiatura)
konsument=ConsumerControl(usb_hid.devices)
domyślna=[0,1,3,4,5,8,9,11,12,13,14,15]
wasd=[2,6,7,10] podczas gdy prawda: dla mnie domyślnie: keybow.keys[i].set_led(255,0,0) dla mnie w wasd: keybow.keys[i].set_led (0,255,0) jeśli klawisze[0].naciśnięte: keyboard.send(Kod.SHIFT, Kod.A) keybow.keys[0].set_led (0, 255, 0) keyboard.release_all() czas.sen(0.1) klawisze elif[1].naciśnięty: keybow.set_all (0, 255, 255) consumer.send(ConsumerControlCode.VOLUME_DECREMENT) keyboard.release_all() czas.sen (0.01) klawisze elif [2].naciśnięty: keybow.set_all(255, 0, 0) keyboard.send(Klucz.LEFT_ARROW) keyboard.release_all() czas.sen (0.01) klawisze elif [3].wciśnięte: keybow.set_all(255, 0, 0) keyboard.send(Klucz.HOME) keyboard.release_all() czas.sen(0.1) klawisze elif [4].naciśnięte: keyboard.send(Kod.SHIFT, Kod.B) keybow.keys[4].set_led(0, 255, 0) keyboard.release_all() czas.sen(0.1) klawisze elif[5].naciśnięte: keybow.set_all (0, 255, 255) consumer.send(ConsumerControlCode.VOLUME_INCREMENT) czas.sen (0.01) klawisze elif [6] wciśnięte: keybow.set_all(255, 0, 0) keyboard.send(Klucz.DOWN_ARROW) keyboard.release_all() czas.sen (0.01) klawisze elif[7].naciśnięte: keybow.set_all(255, 0, 0) keyboard.send(Klucz.UP_ARROW) keyboard.release_all() czas.sen (0.01) klawisze elif[8].wciśnięte: keyboard.send(Kod.SHIFT, Kod.C) keybow.keys[8].set_led (0, 255, 0) czas.sen(0.1) klawisze elif[9].wciśnięte: keybow.set_all(0, 0, 255) keyboard.send(Keycode.CONTROL, Keycode.ALT, Keycode.P) keyboard.release_all() czas.sen(0.1) klawisze elif[10].wciśnięte: keybow.set_all(255, 0, 0) keyboard.send(Klucz.RIGHT_ARROW) keyboard.release_all() czas.sen (0.01) klawisze elif[11].wciśnięte: keybow.set_all(255, 0, 0) keyboard.send(Klucz.END) keyboard.release_all() czas.sen(0.1) klawisze elif[12].wciśnięte: keyboard.send(Kod.SHIFT, Kod.D) keybow.keys[12].set_led (0, 255, 0) czas.sen(0.1) klawisze elif[13].wciśnięte: keybow.set_all(0, 0, 255) keyboard.send(Keycode.CONTROL, Keycode.ALT, Keycode.T) keyboard.release_all() czas.sen(0.1) klawisze elif[14].wciśnięte: keybow.set_all(0, 0, 255) keyboard.send(Klucz.PAGE_DOWN) keyboard.release_all() czas.sen(0.1) klawisze elif[15].wciśnięte: keybow.set_all(0, 0, 255) keyboard.send(Klucz.PAGE_UP) keyboard.release_all() czas.sen(0.1) keybow.aktualizacja()