Obsah:

Programovatelná klávesnice: 5 kroků (s obrázky)
Programovatelná klávesnice: 5 kroků (s obrázky)

Video: Programovatelná klávesnice: 5 kroků (s obrázky)

Video: Programovatelná klávesnice: 5 kroků (s obrázky)
Video: 15 triků pro iPhone, které musíš vyzkoušet. 2024, Červenec
Anonim
Programovatelná klávesnice
Programovatelná klávesnice
Programovatelná klávesnice
Programovatelná klávesnice

V tomto projektu ukážu, jak vytvořit relativně jednoduchou a levnou programovatelnou klávesnici pro mapování vašich nejpoužívanějších klávesových zkratek, aplikací a dalších.

Tato klávesnice je detekována jako klávesnice ve všech hlavních operačních systémech, nejsou potřeba žádné další ovladače.

Zásoby

  • Rotační kodér.
  • Spousta (podle vašich potřeb) tlačítek.
  • Arduino Pro Micro, Arduino Leonardo nebo jakákoli jiná vývojová deska s Atmega32U4 MCU.
  • Drát, pájka, páječka atd.
  • (Volitelné) Nějaký těžký základ, aby se klávesnice neklouzala, používám starý 3,5 "pevný disk

Krok 1: Elektrický obvod

Elektrický obvod
Elektrický obvod

Rozhodl jsem se použít desku Arduino Pro Micro dev s Atmega32U4 MCU, která má 18 použitelných digitálních pinů.

Piny pro připojení tlačítek a rotačního kodéru byly vybrány bez ohledu na konkrétní pořadí, ale je třeba poznamenat některé věci:

  1. Všechny piny s podporou digitálního čtení mají vnitřní výsuvy, které umožňují zmírnit externí stahovací odpory. Samozřejmě by měl být kód odpovídajícím způsobem aktualizován, protože očekává, že stav kolíku se při stisknutí tlačítek změní z nízkého na vysoký.
  2. V příkladu knihovny encoder.h je uvedeno, že nejlepšího výkonu kodéru je dosaženo, když oba piny připojené k MCU přeruší piny schopné. Většina analogových pinů Atmega32U4 nemá schopnost přerušení.
  3. Na přesných hodnotách stahovacího odporu příliš nezáleží, vše od 1 kΩ do 100 kΩ bude fungovat dobře. Vyšší hodnoty odporu umožňují menší ztrátový výkon, ale mají za následek pomalejší reakci kolíku na změny napětí. Vyberte si jakýkoli hodnotový odpor, který máte nejvíce.
  4. Mechanické kodéry nejsou nejspolehlivější kvůli opotřebení kontaktů a odskakování. Proto je potřeba dobré řešení pro odstraňování odskoku. Vybrané hodnoty kondenzátoru a doby zpoždění v kódu vám pravděpodobně neposkytnou nejlepší výsledky. Je tedy potřeba trochu experimentovat. Nebo přepněte na něco jako optický kodér, ale jeho cena je výrazně vyšší.

Krok 2: Sestavení

Shromáždění
Shromáždění
Shromáždění
Shromáždění
Shromáždění
Shromáždění
Shromáždění
Shromáždění

Chtěl jsem, aby klávesnice vypadala co nejčistěji, a proto jsem všechny součásti připájel na zadní stranu desky prototypu. Došlo mi, že klávesnice by byla ergonomičtější, kdyby byla používána vyvýšená pod malým úhlem. Proto jsem Arduino Pro Micro připájel na samostatnou desku a propojil všechny digitální piny pomocí drátu na tlačítka. Je pohodlnější připojit USB kabel tímto způsobem.

Našel jsem starý 3,5 pevný disk, který lze použít jako základnu pro klávesnici, je poměrně těžký a brání sklouznutí desky po stole při provozu (pomáhají i protiskluzové podložky). Má také praktické otvory pro šrouby o průměru 3 mm, do kterých jsem přišrouboval mosazné podpěry a upevnil desku pod mírným úhlem.

Krok 3: Programování

Kód je napsán pomocí Arduino IDE. Budete muset nainstalovat 2 knihovny:

  • Kodér Paul Stoffregen
  • Klávesnice od Arduina

Chcete -li kompilovat pro Atmega32U4, musíte také nainstalovat soubor desky Arduino Pro Micro, Sparkfun má skvělý návod, jak to udělat.

Jedna věc, kterou si předem všimněte, je dávat pozor, abyste v kódu nenechali „stisknuté klávesy“. To se mi stalo a MCU neustále spamovalo nějakou kombinaci kláves. Jediný způsob, jakým jsem si vědom toho, jak to opravit, je znovu vypálit zavaděč na MCU. Pokud skončíte jako já, můžete podle tohoto průvodce vypálit zavaděč, k použití jako programátora budete potřebovat další desku arduino.

V hlavní smyčce MCU nejprve přečte každý stav tlačítka, pokud je detekována změna stavu z LOW na HIGH, provede se funkce keyboard_shortcut (i). Proměnná i je ID stisknutého tlačítka, celkový počet tlačítek je definován ALL_BUTTONS (v mém případě 15). Po spuštění klávesová zkratka (i) odešle CTRL+SHIFT a poté písmeno, které je namapováno na id tlačítka: 1-> A, 2-> B, 3-> C atd. Některé kombinace jako CTRL+SHIFT+N jsou vynechány, protože již ve výchozím nastavení používá Windows 10 (v tomto případě k vytvoření nové složky). Zde je seznam všech výchozích zkratek systému Windows. Po krátké prodlevě MCU odešle signál k uvolnění všech klíčů a funkce se vrátí zpět do hlavní smyčky.

Poté, co jsou zkontrolována všechna tlačítka, MCU zkontroluje, zda se změnila poloha rotačního kodéru, a pokud ano, provede se keyboard_shortcut (i) s jedinečným ID.

Stisknutím tlačítka kodéru převrátíte booleovskou proměnnou encoderButtonFlag. Při otáčení kodéru se do počítače odešle jiná zkratka v závislosti na směru otáčení a hodnotě encoderButtonFlag.

Pokud je debugFlag nastaven na 1, jsou zprávy o ladění odesílány přes UART na sériový monitor.

Krok 4: Konfigurace zkratek

Konfigurace zkratek
Konfigurace zkratek
Konfigurace zkratek
Konfigurace zkratek

Co dělá každá zkratka, záleží také na vás, všichni máme jiné preference. Jako příklad uvedu, jaké zkratky jsem pro sebe nakonfiguroval. Používám Linux Mint 19.3 se správcem plochy xfce4, takže moje příklady zahrnují hlavně bash skripty, ale ukážu i několik základních příkladů pro Windows10.

Na prvním obrázku vidíte, které skripty jsem mapoval na jaké zkratky. To se provádí z nabídky nastavení xfce, postup je přímočarý. Tyto skripty najdete v mém úložišti GitHub

Menší 6 tlačítek ve spodní části slouží ke spouštění aplikací, jako je webový prohlížeč nebo správce souborů, některé z těchto aplikací se nazývají ze skriptu start_only_one_app.sh, který získá názvy všech spuštěných aplikací a vyhledá aplikaci, kterou chcete spustit. Pokud již okno aplikace existuje, bude zaostřeno, jinak bude spuštěna nová instance aplikace.

Další skripty:

  • 2nd_display_control.sh - zapíná/vypíná druhý monitor.
  • moon_lamp.sh - zapíná/vypíná moji lampu Moon.
  • pc_load.sh - vytváří oznamovací bublinu s aktuálním využitím CPU a GPU a teplotami.
  • shutdown.sh - inicializuje vypnutí počítače se zpožděním 1 minuty a vytvoří bublinu s upozorněním, ve které se zobrazuje zbývající čas.
  • spec_vpn.sh - připojí se ke konkrétnímu serveru OpenVPN nebo pokud připojení již existuje, odpojí se od serveru.
  • shortcut_controll.sh - převezme příkaz (plus, mínus, karta, zavřít) jako argument, detekuje, jaké okno je nyní zaměřeno, a pokud je nalezena konkrétní aplikace aktivní, provede kontrolní akci. Například pro otevření nové karty ve vznešeném textovém editoru je výchozí zkratka „CTRL+N“a v terminálu xfce - „CTRL+T“, takže tento skript umožňuje otevřít novou kartu ve vznešeném a terminálu stejným tlačítkem.

První funkcí rotačního kodéru je ovládání hlasitosti, druhou funkcí je ovládání aktivního přiblížení okna pomocí shortcut_controll.sh.

V operačním systému Windows můžete mapovat zástupce aplikací pomocí okna vlastností programu, jak ukazuje druhý obrázek. Pro cokoli jiného budete chtít použít AutoHotkey. Je to skriptovací jazyk automatizace pro Windows.

Některé jednoduché příklady syntaxe AHK:

;Ovládání hlasitosti

^+t:: Odeslat {Volume_Up}

vrátit se

^+v:: Odeslat {Volume_Down}

vrátit se

; Zavřít aktivní okno

^+h:: WinGetTitle, Title, A

PostMessage, 0x112, 0xF060,,, %Název %

vrátit se

;Vypnout počítač

^+b:: Spustit vypnutí /s

Krok 5: Vylepšení

Vylepšení
Vylepšení

Některá možná vylepšení:

  • Kvalitnější tlačítka.
  • Prototypová deska plošných spojů se při stisknutí tlačítek poměrně hodně ohýbá.
  • RGB osvětlení pro změnu barvy podle toho, na jakou funkci je nastaven rotační kodér.
  • Další tlačítka (použijte IO expandér IC).
  • Lepší rotační kodér (nebo lepší řešení pro odskakování).

Doporučuje: