Il numero di tasti premuti che registriamo in un giorno è enorme. Dalle app di messaggistica alla codifica o alla scrittura del prossimo romanzo, il numero di pressioni dei tasti è difficile da calcolare. E se potessimo risparmiare un po’di tempo e le nostre articolazioni doloranti creando una tastiera di scelta rapida?
Pimoroni’s Keybow 2040 è una tastiera a 16 tasti che può essere programmata in CircuitPython per fungere da tastiera USB. Ogni singolo tasto può essere programmato per avviare un’applicazione, controllare i livelli audio, cambiare scena in OBS o incollare immagini di gatti divertenti su Twitter.
In questa guida, configureremo Keybow 2040 come una tastiera generica con tasti di navigazione della pagina, scorciatoie OBS e due tasti di scelta rapida per avviare applicazioni comuni.
La nostra tastiera di scelta rapida è stata progettata per alleviare il prurito. Per aumentare la nostra tastiera esistente e aggiungere funzionalità extra come il cambio di scena OBS e i lanciatori di applicazioni. Il tuo layout rifletterà le tue esigenze, quindi usa questa guida come base da cui creare un layout personalizzato.
Per questo progetto Avrai bisogno
Configurazione del Keybow 2040
Pimoroni ha un guida completa su come configurare il tuo Keybow 2040 e il processo di costruzione è straordinariamente semplice, richiede solo un cacciavite e pochi minuti di sforzo. Keybow 2040 viene fornito con CircuitPython e tutte le librerie necessarie preinstallate. Se hai bisogno di installare CircuitPython e le librerie, allora Pimoroni ha un tutorial che puoi seguire.
Invece di utilizzare i copritasti inclusi, abbiamo acquistato alcuni cappucci compatibili con MX da una tastiera di riserva. Abbiamo quindi posizionato i cappucci sulla tastiera nel layout desiderato.
La riga superiore è la navigazione di base, home, freccia su, fine e pagina su. La seconda riga sono i tasti freccia rimanenti e pagina giù. La terza riga controlla il nostro volume, su e giù, avvia lo strumento screenshot e apre un terminale/prompt dei comandi. L’ultima riga è riservata a OBS, spostandosi tra quattro scene. Ovviamente, se lo stai provando a casa, puoi utilizzare i tasti che desideri e assegnarli alle funzioni che desideri, che si tratti di avviare un’app, eseguire un’azione in un programma come OBS o controllare la riproduzione multimediale.
Keybow 2040 utilizza un sistema di numerazione che vede la chiave 0 in t egli in basso a sinistra del tabellone, e il tasto 15 in alto a destra. Quando si utilizza la libreria Keybow CircuitPython, utilizzeremo questi numeri per impostare cosa farà ogni tasto e come si illuminerà.
Programmazione dei tasti di scelta rapida Keybow 2040
Il codice per questo progetto è scritto in CircuitPython, che è molto simile a MicroPython e Python 3.
1. Collega il tuo Keybow 2040 al computer tramite un cavo USB-C. Apparirà un nuovo dispositivo, CIRCUITPY.
2. Utilizzando il tuo editor preferito, apri code.py trovato nell’unità CIRCUITPY. Consigliamo gli editor di codice Visual Studio Code, Thonny o Mu di Microsoft.
3. Elimina qualsiasi testo nel file.
4. Importa quattro librerie. Il primo è scheda, che ci consente di utilizzare il GPIO sul chip RP2040. Il secondo è Keybow2040 che è un’astrazione per rendere più facile il controllo del Keybow 2040. Importa tempo per controllare il ritmo del codice. Infine importa usb_hid che ci permetterà di inviare scorciatoie da tastiera come se avessimo una tastiera USB.
import board
da keybow2040 import Keybow2040
tempo di importazione
import usb_hid
5. Importa tre librerie per consentire a Keybow 2040 di agire come una tastiera, con un layout statunitense, e consentire la generazione di sequenze di tasti tramite codice.
da adafruit_hid.keyboard import Tastiera
da adafruit_hid.keyboard_layout_us import KeyboardLayoutUS
da adafruit_hid.keycode import Keycode
6. Importa due librerie che consentiranno a Keybow 2040 di inviare codici di controllo del consumo, generalmente utilizzati per le chiavi multimediali.
from adafruit_hid.consumer_control_code import ConsumerControlCode
da adafruit_hid.consumer_control import ConsumerControl
7. Keybow utilizza I2C per comunicare con l’RP2040. Dobbiamo dire al codice che stiamo usando I2C e creare un oggetto keybow a cui possiamo facilmente fare riferimento. Quindi usiamo quell’oggetto per creare un altro oggetto, tasti che rende l’interazione con la tastiera molto più semplice.
i2c=board.I2C()
arco della chiave=arco della chiave2040(i2c)
keys=keybow.keys
8. Crea tre oggetti, tastiera, utilizzata per creare un dispositivo di interfaccia umana USB (HID) e layout che imposta la tastiera per l’utilizzo di un layout americano. Il terzo oggetto è consumer e ci consente di inviare pressioni di tasti speciali, tipicamente assegnate a tasti multimediali come il controllo del volume.
tastiera=tastiera (usb_hid.devices)
layout=KeyboardLayoutUS (tastiera)
consumatore=ConsumerControl(usb_hid.devices)
9. Crea due elenchi: default e wasd. Questi elenchi memorizzeranno i numeri chiave che verranno utilizzati in seguito per illuminare chiavi specifiche. Come avrai intuito, wasd si riferisce ai tasti di movimento, nel nostro caso si associano ai tasti cursore.
default=[0,1,3,4,5,8,9,11,12,13,14, 15]
wasd=[2,6,7,10]
10. Crea un ciclo per eseguire costantemente il codice principale.
mentre True:
11. All’interno del ciclo per sempre crea un ciclo for che scorrerà l’elenco predefinito, impostando il LED per ogni tasto numerato su verde. Ogni volta che il ciclo for esegue un’iterazione, il valore di i passa all’elemento successivo nell’elenco, da 0 a 1,3…15. Nota che Keybow 2040 utilizza LED G R B (verde, rosso, blu) in modo che il verde brillante sia 255,0,0.
o i in default: keybow.keys[i].set_led(255,0,0)
12. Crea un altro ciclo for. Questa volta per impostare il colore dei tasti cursore su rosso, in modo da poterli individuare facilmente.
per i in wasd: keybow.keys[i].set_led(0,255,0)
13. Utilizza un test condizionale per verificare se viene premuto un tasto. La prima chiave è la chiave 0, situata nell’angolo in basso a sinistra. Quando viene premuto questo tasto vogliamo che prema i tasti SHIFT + A, rilascia i tasti, quindi illumini il tasto in rosso per 0,1 secondi. Questa scorciatoia cambia le scene in OBS quando presentiamo lo spettacolo The Pi Cast.
se i tasti[0].premuti: keyboard.send(Keycode.SHIFT, Keycode.A) keybow.keys[0].set_led(0, 255, 0) tastiera.release_all() tempo.sonno(0.1)
14. Imposta una condizione per la chiave 1, che si trova una chiave in basso a sinistra. Quando questo tasto viene premuto, imposta tutti i LED sul viola (rosso e blu misti), quindi invia un comando tramite tasto multimediale per abbassare (diminuire) il volume. I tasti vengono rilasciati e un breve sonno riduce il rischio di sballottamento dei tasti. Ripetere questo processo per tutte le chiavi che si desidera mappare. Se hai bisogno di un modello, il codice completo per questo progetto è in fondo a questa guida.
tasti elif[1].premuto: keybow.set_all(0, 255, 255) consumer.send(ConsumerControlCode.VOLUME_DECREMENT) tastiera.release_all() tempo.sonno(0.01)
15. Il tasto 9 sulla tastiera ha un keycap PrtSc e questo tasto attiverà lo strumento di cattura di Windows. Configura questo tasto per impostare tutti i LED in blu quando viene premuto, quindi indichiamo a CircuitPython di premere tre tasti contemporaneamente. Questi tasti sono Control, ALT e P. Quindi rilasciamo i tasti e mettiamo in pausa il codice per un momento.
tasti elif[9].premuto: keybow.set_all(0, 0, 255) keyboard.send(Keycode.CONTROL, Keycode.ALT, Keycode.P) tastiera.release_all() tempo.sonno(0.1)
16. Ripeti il processo condizionale per tutte e 16 le chiavi. Il processo di identificazione di un tasto e l’impostazione delle azioni da intraprendere quando viene premuto vengono ripetuti per tutti i sedici tasti. Il tasto finale è il tasto 15 (siamo partiti da 0) e quando questo tasto viene premuto imposta tutti i led in blu, quindi invia una pressione del tasto Page Up prima di rilasciare i tasti e fermarsi un attimo.
tasti elif[15].premuto: keybow.set_all(0, 0, 255) keyboard.send(Keycode.PAGE_UP) tastiera.release_all() tempo.sonno(0.1)
17. Per mantenere keybow alla ricerca di input, dobbiamo dirgli di aggiornarsi alla fine di ogni ciclo. Se questo non è presente, il codice non funzionerà come previsto.
keybow.update()
Salva il file code.py e Keybow 2040 si riavvierà ed eseguirà il tuo codice, in pochi secondi potrai premere i tasti e sbrigare la maggior parte delle attività ma abbiamo ancora un po’di lavoro da fare.
Aggiunta di scorciatoie da tastiera per avviare le app di Windows
Se utilizzi Windows, è necessario creare scorciatoie da tastiera in modo che quando premi uno dei tasti sulla tastiera, il sistema operativo sappia avviare un programma come lo Strumento di cattura (per premere il tasto Prtsrc sulla nostra tastiera) o il prompt CMD dopo aver premuto il tasto Terminale sulla nostra tastiera. Nota che il metodo di scelta rapida da tastiera integrato di Windows vuole CTRL + ALT + [una lettera o un numero] quindi il tasto Prtsrc sulla nostra tastiera in realtà attiverà CTRL + ALT + P, ad esempio. Ripeti questi passaggi per tutti i tasti della tastiera che avviano i programmi.
1. Cerca l’app (es:”strumento di cattura”) nella casella di ricerca di Windows. Non avviarlo.
2. Fare clic con il pulsante destro del mouse sull’icona del programma e selezionare”Apri percorso file”
3. Fare clic con il pulsante destro del mouse sull’icona l e selezionare”Proprietà”.
4. Fai clic sul campo Tasto di scelta rapida e inserisci la combinazione di tasti (CTRL + ALT + P nel nostro caso per Prtsrc). Questo imposterà il tasto di scelta rapida per quel comando che corrisponde al codice per quel tasto.
Impostazione dei tasti di scelta rapida OBS
Per impostare i collegamenti OBS dobbiamo aprire OBS, quindi fare clic su Impostazioni >> Tasti di scelta rapida per assegnare la pressione di un tasto a una scena.
Elenco codici completo
Nota che questo codice include scorciatoie per tutti i 16 tasti, che potresti voler usare per diverse funzioni nel tuo progetto.
import board
da keybow2040 import Keybow2040
tempo di importazione
import usb_hid
da adafruit_hid.keyboard import Tastiera
da adafruit_hid.keyboard_layout_us import KeyboardLayoutUS
da adafruit_hid.keycode import Keycode
da adafruit_hid.consumer_control_code import ConsumerControlCode
da adafruit_hid.consumer_control import ConsumerControl # Imposta Keybow
i2c=scheda.I2C()
arco della chiave=arco della chiave2040(i2c)
keys=keybow.keys # Imposta la tastiera e il layout
tastiera=Tastiera(usb_hid.devices)
layout=KeyboardLayoutUS (tastiera)
consumatore=ConsumerControl(usb_hid.devices)
predefinito=[0,1,3,4,5,8,9,11,12,13,14,15]
wasd=[2,6,7,10] mentre vero: per i di default: keybow.keys[i].set_led(255,0,0) per io in wasd: keybow.keys[i].set_led(0,255,0) se i tasti[0].premuti: keyboard.send(Keycode.SHIFT, Keycode.A) keybow.keys[0].set_led(0, 255, 0) tastiera.release_all() tempo.sonno(0.1) tasti elif[1].premuto: keybow.set_all(0, 255, 255) consumer.send(ConsumerControlCode.VOLUME_DECREMENT) tastiera.release_all() tempo.sonno(0.01) tasti elif[2].premuto: keybow.set_all(255, 0, 0) keyboard.send(Keycode.LEFT_ARROW) tastiera.release_all() tempo.sonno(0.01) tasti elif[3].premuto: keybow.set_all(255, 0, 0) keyboard.send(Keycode.HOME) tastiera.release_all() tempo.sonno(0.1) tasti elif[4].premuti: keyboard.send(Keycode.SHIFT, Keycode.B) keybow.keys[4].set_led(0, 255, 0) tastiera.release_all() tempo.sonno(0.1) tasti elif[5].premuti: keybow.set_all(0, 255, 255) consumer.send(ConsumerControlCode.VOLUME_INCREMENT) tempo.sonno(0.01) tasti elif[6].premuti: keybow.set_all(255, 0, 0) keyboard.send(Keycode.DOWN_ARROW) tastiera.release_all() tempo.sonno(0.01) tasti elif[7].premuti: keybow.set_all(255, 0, 0) keyboard.send(Keycode.UP_ARROW) tastiera.release_all() tempo.sonno(0.01) tasti elif[8].premuti: keyboard.send(Keycode.SHIFT, Keycode.C) keybow.keys[8].set_led(0, 255, 0) tempo.sonno(0.1) tasti elif[9].premuti: keybow.set_all(0, 0, 255) keyboard.send(Keycode.CONTROL, Keycode.ALT, Keycode.P) tastiera.release_all() tempo.sonno(0.1) tasti elif[10].premuti: keybow.set_all(255, 0, 0) keyboard.send(Keycode.RIGHT_ARROW) tastiera.release_all() tempo.sonno(0.01) tasti elif[11].premuti: keybow.set_all(255, 0, 0) keyboard.send(Codice chiave.END) tastiera.release_all() tempo.sonno(0.1) tasti elif[12].premuti: keyboard.send(Keycode.SHIFT, Keycode.D) keybow.keys[12].set_led(0, 255, 0) tempo.sonno(0.1) tasti elif[13].premuti: keybow.set_all(0, 0, 255) keyboard.send(Keycode.CONTROL, Keycode.ALT, Keycode.T) tastiera.release_all() tempo.sonno(0.1) tasti elif[14].premuti: keybow.set_all(0, 0, 255) keyboard.send(Keycode.PAGE_DOWN) tastiera.release_all() tempo.sonno(0.1) tasti elif[15].premuti: keybow.set_all(0, 0, 255) keyboard.send(Keycode.PAGE_UP) tastiera.release_all() tempo.sonno(0.1) keybow.update()