Arduino jako klávesnice
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Arduino jako klávesnice
Zdravím,
mohly byste mi prosím poradit s tímto problémem:
Potřebuji emulovat zmáčknutí klávesy tak, aby se to ve Windows tvářilo, jako by k němu byla připojená klávesnice a přímo zmáčkla daný znak.
Normální programy pro vkládání textu můj problém neřeší, protože je text vkládán a nepřichází přímo z klávesnice. Napadlo mě proto použít Arduino, ovšem narazil jsem na řadu komplikací:
1) Zjistil jsem, že pro knihovnu Keyboard.h budu potřebovat jen některé vybrané Arduina s USB převodníkem v čipu. Aktuálně mám nano a mega, přičemž bych preferoval využít nano, ale v případě že by to jinak nešlo, koupil bych si i jiné.
2) Potřebuji psát česky (to znamená i s diakritikou) a obávám se, že většina metod bude podporovat pouze ASCI.
Ideálně něco takového, jen s češtinou: https://www.youtube.com/watch?v=wTbjmul ... L&index=28
Taky bych potřeboval, aby bylo Arduino připojeno jako klávesnice, ale abych do něj mohl posílat skrz Serial linku text.
Děkuji všem, kteří mi poradí, či nasměrování na nějaký zdroj, kde je problém řešen. Já jsem bohužel nic nenašel, nebo jsem to nepochopil
mohly byste mi prosím poradit s tímto problémem:
Potřebuji emulovat zmáčknutí klávesy tak, aby se to ve Windows tvářilo, jako by k němu byla připojená klávesnice a přímo zmáčkla daný znak.
Normální programy pro vkládání textu můj problém neřeší, protože je text vkládán a nepřichází přímo z klávesnice. Napadlo mě proto použít Arduino, ovšem narazil jsem na řadu komplikací:
1) Zjistil jsem, že pro knihovnu Keyboard.h budu potřebovat jen některé vybrané Arduina s USB převodníkem v čipu. Aktuálně mám nano a mega, přičemž bych preferoval využít nano, ale v případě že by to jinak nešlo, koupil bych si i jiné.
2) Potřebuji psát česky (to znamená i s diakritikou) a obávám se, že většina metod bude podporovat pouze ASCI.
Ideálně něco takového, jen s češtinou: https://www.youtube.com/watch?v=wTbjmul ... L&index=28
Taky bych potřeboval, aby bylo Arduino připojeno jako klávesnice, ale abych do něj mohl posílat skrz Serial linku text.
Děkuji všem, kteří mi poradí, či nasměrování na nějaký zdroj, kde je problém řešen. Já jsem bohužel nic nenašel, nebo jsem to nepochopil
Středně pokročilý nováček.
Re: Arduino jako klávesnice
Jak píšeš, simulace klávesnice (nebo třeba i myši) je možná pouze s procesory ATmega32U. Takže například "Arduino Micro".
Při použití knihovny "Keyboard.h" záleží na tom, jak máš nastavenou klávesnici v PC.
Diakritiku je možné zobrazovat stejně, jako když mačkáš klávesy na klávesnici.
Takže třeba pro českou klávesnici, když zmáčneš klávesu [6], tak se zobrazí "ž".
Některé diakritické znaky se musí tvořit kombinací Shift a klávesy [+], nebo [=] (klávesa vedle BackSpace).
Například "ň" je stejně jako při normálním zápisu na klávesnici složeno ze sekvence:
- Shift dolů
- stisknout a uvolnit [+] (příprava na háček)
- uvolnit Shift
- stisknout [n]
Podobně třeba velké "Ó" se vytvoří sekvencí:
- stisknout a uvolnit klávesu [=] (přípava na čárku)
- stisknout [O] (kombinace shift + O)
VŽDYCKY ALE ZÁLEŽÍ NA NASTAVENÍ KLÁVESNICE V PC.
Při přepnutí třeba na anglickou klávesnici to už fungovat nebude.
Pozor taky na prohození "Y" a "Z" při nastavení QWERTY, nebo QWERTZ rozložení.
Příklad pro odeslání textu: "příliš ň Ó"
Při použití knihovny "Keyboard.h" záleží na tom, jak máš nastavenou klávesnici v PC.
Diakritiku je možné zobrazovat stejně, jako když mačkáš klávesy na klávesnici.
Takže třeba pro českou klávesnici, když zmáčneš klávesu [6], tak se zobrazí "ž".
Některé diakritické znaky se musí tvořit kombinací Shift a klávesy [+], nebo [=] (klávesa vedle BackSpace).
Například "ň" je stejně jako při normálním zápisu na klávesnici složeno ze sekvence:
- Shift dolů
- stisknout a uvolnit [+] (příprava na háček)
- uvolnit Shift
- stisknout [n]
Podobně třeba velké "Ó" se vytvoří sekvencí:
- stisknout a uvolnit klávesu [=] (přípava na čárku)
- stisknout [O] (kombinace shift + O)
VŽDYCKY ALE ZÁLEŽÍ NA NASTAVENÍ KLÁVESNICE V PC.
Při přepnutí třeba na anglickou klávesnici to už fungovat nebude.
Pozor taky na prohození "Y" a "Z" při nastavení QWERTY, nebo QWERTZ rozložení.
Příklad pro odeslání textu: "příliš ň Ó"
Kód: Vybrat vše
#include "Keyboard.h"
void setup(void)
{
delay(5000); // chvili pauza na spusteni textoveho editoru
Keyboard.begin();
// "příliš ň Ó"
Keyboard.write('p'); // klavesa [p]
Keyboard.write('5'); // klavesa [5] = (r s hackem)
Keyboard.write('9'); // klavesa [9] = (i s carkou)
Keyboard.print("li"); // klavesy [l] a [i]
Keyboard.write('3'); // klavesa [3] = (s s hackem)
Keyboard.print(" "); // mezery
Keyboard.press(KEY_LEFT_SHIFT); // stisknout SHIFT
Keyboard.write('+'); // klavesa s hackem
Keyboard.releaseAll(); // uvolneni shiftu
Keyboard.write('n'); // klavesa [n] => male n s hackem
Keyboard.print(" "); // mezery
Keyboard.print('='); // klavesa s carkou
Keyboard.write('O'); // klavesa [O] => velke O s carkou
}
void loop(void)
{
}
Re: Arduino jako klávesnice
... a samozřejmě zůstává zachovaná i běžná sériová linka pro obousměrnou komunikaci, takže se dá vytvořit třeba tohle:
Pak stačí zadat do sériového terminálu jedno písmeno a už jen mačkat ENTER.
Arduino si přečte znak přijatý sériovou linkou, zvetší jeho ASCII kód o 1 a pomocí simulace klávesnice ten zvětšený znak zapíše zpátky do vstupního políčka sériového terminálu.
Video:
https://youtu.be/B0GQnfS9Ut4
Kód: Vybrat vše
#include "Keyboard.h"
void setup(void)
{
Serial.begin(9600);
}
void loop(void)
{
if (Serial.available())
{
while (Serial.available())
{
char znak = Serial.read();
Serial.write(znak+1); // vraci znak posunuty o 1 ASCII pozici (z 'A' udela 'B')
Keyboard.write(znak+1); // a ten posunuty znak zaroven zapise do vstupniho pole serioveho monitoru
}
}
}
Pak stačí zadat do sériového terminálu jedno písmeno a už jen mačkat ENTER.
Arduino si přečte znak přijatý sériovou linkou, zvetší jeho ASCII kód o 1 a pomocí simulace klávesnice ten zvětšený znak zapíše zpátky do vstupního políčka sériového terminálu.
Video:
https://youtu.be/B0GQnfS9Ut4
Re: Arduino jako klávesnice
Mooc děkuji za odpověď.
Ještě se se zeptám, jakým způsobem se bude Arduino hlásit v počítači?
Bude potřeba nahrát speciální ovladač, aby se Arduino ukazovalo jako klávesnice, nebo zadávání funguje jinak?
Ještě se se zeptám, jakým způsobem se bude Arduino hlásit v počítači?
Bude potřeba nahrát speciální ovladač, aby se Arduino ukazovalo jako klávesnice, nebo zadávání funguje jinak?
Středně pokročilý nováček.
Re: Arduino jako klávesnice
Ve windows 8.1 se hlásí takhle:
Myslím, že ovladače si to našlo automaticky při prvním zasunutí do USB portu - ale to už si nepamatuju.Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 39 hostů