Arduino jako klávesnice 2

Vejv-cz
Příspěvky: 8
Registrován: 26 dub 2019, 20:53

Arduino jako klávesnice 2

Příspěvek od Vejv-cz » 12 čer 2019, 17:31

Opět zdravím,
už jsem si konečně obstaral Arduino micro a trápím se s češtinou. https://www.arduino-forum.cz/viewtopic.php?f=40&t=1711
Potřebuji psát česky s diakritikou, čísly, speciálními znaky, ale vůbec se mi nedaří posílat znaky s háčky, čárky atd.

Napadlo mně zmáčknout klávesu alt a číslo znaku. To mělo fungovat stejně, jako na normální klávesnici, ale nezdařilo se.
Nyní skouším neelegantní metodu zmáčknutí čárky nebo háčku a napsání písmene, ale to se opět nedaří.

Jak doporučujete posílat české klávesy?

Toto je kód, který jsem zatím splácal:

Kód: Vybrat vše

#include "Keyboard.h"

int cisla[]= {234, 225, 226, 227, 228, 229, 230, 231, 232, 233};

void setup() {
  Serial.begin(115200);
  Keyboard.begin();
}

void dalsi(){
  Serial.println("OK");
  loop();
}

void loop() {
  String vstup;
  if(Serial.available()){
    vstup = Serial.readStringUntil('\n');
    int data= vstup.toInt();    

    if (data>=65 && data<=90){
      Keyboard.write(data);
      dalsi();
    }else if (data>=97 && data<=122){
      Keyboard.write(data);
      dalsi();
    }else if (data>=48 && data<=57){
      Keyboard.write(cisla[data-48]);
      dalsi();
    }
  }
}
Středně pokročilý nováček.

AstroMiK
Příspěvky: 623
Registrován: 08 pro 2017, 19:05

Re: Arduino jako klávesnice 2

Příspěvek od AstroMiK » 12 čer 2019, 20:56

Tady je ukázkový program pro psaní speciálních znaků pomocí Alt+číslo

Důležité je, že musí být zapnutý NumLock.
Bohužel nevím, jak by se dalo zjistit, jestli je aktuálně zapnutý, nebo vypnutý.
Přepnutí jeho stavu je pomocí: Keyboard.press(219);

Kódování numerické klávesnice je popsáno tu:
https://forum.arduino.cc/index.php?topic=179548.0

Video činnosti ukázkového kódu je tady:
https://youtu.be/ojqt8ydiVak

Kód: Vybrat vše

#include "Keyboard.h"

void setup()
 {
    
    delay(5000);
    Keyboard.begin();
    
   //  Keyboard.press(219);         // pripadne zapnuti NumLock
    
 }



void loop(void)
  {
    //  velka omega  (Alt + 937)
    Keyboard.press(KEY_LEFT_ALT);
    Keyboard.write(233);              //  = 9
    Keyboard.write(227);              //  = 3
    Keyboard.write(231);              //  = 7
    Keyboard.releaseAll();

    delay(1000);

   // ruske velke "JA"  (ALT + 1071)
    Keyboard.press(KEY_LEFT_ALT);
    Keyboard.write(225);              //  = 1
    Keyboard.write(234);              //  = 0
    Keyboard.write(231);              //  = 7
    Keyboard.write(225);              //  = 1
    Keyboard.releaseAll();

    delay(1000);
 
  }

Uživatelský avatar
gilhad
Příspěvky: 836
Registrován: 07 bře 2018, 11:22

Re: Arduino jako klávesnice 2

Příspěvek od gilhad » 12 čer 2019, 22:10

Tady je dobré uvědomit si, že klávesnice vlastně neví, co je na ní napsané a co si uživatel nainstaloval, takže odesílá to, co namačkal (s tím, že ví co jsou modifikátory a co normální klávesy). Takže namačkání nějakých kláves je vlastně akce naslepo a záleží na tom, co si o tom myslí OS.

AstroMiK
Příspěvky: 623
Registrován: 08 pro 2017, 19:05

Re: Arduino jako klávesnice 2

Příspěvek od AstroMiK » 13 čer 2019, 08:24

Gilhad:
Přesně tak.
V tom původním vlákně jsem to napsal do příspěvku červeně: "Vždycky záleží na nastavení klávesnice v PC".

Myslím (ale nemám to na 100% ověřené), že u těch kombinací Alt+číslo už nezáleží na přepnutí jazyka.
Třeba ta Omega se pomocí Alt+937 dá napsat na české i arabské klávesnici.

Uživatelský avatar
gilhad
Příspěvky: 836
Registrován: 07 bře 2018, 11:22

Re: Arduino jako klávesnice 2

Příspěvek od gilhad » 13 čer 2019, 11:30

AstroMiK píše:
Gilhad:
I tak záleží na tom, co si myslí OS - mě to při české klávesnici s numlockem a s pravým alt skáče na 9., 3. a 7. záložku , na anglické se to chová jinak a ještě jinak se to chová, pokud mám vypnutý numlock, ale Omegu to nenapíše ani při jedné z těch kombinací (a to to ťukám prstama na skutečné klávesnici)

commar
Příspěvky: 31
Registrován: 26 úno 2019, 15:20

Re: Arduino jako klávesnice 2

Příspěvek od commar » 13 čer 2019, 11:43

Musíte používat levý ALT a vyzkoušejte na numerické 937 a také 0937...

Uživatelský avatar
gilhad
Příspěvky: 836
Registrován: 07 bře 2018, 11:22

Re: Arduino jako klávesnice 2

Příspěvek od gilhad » 13 čer 2019, 12:41

commar píše:
13 čer 2019, 11:43
Musíte používat levý ALT a vyzkoušejte na numerické 937 a také 0937...
Ano, ani s levým altem a sekvencemi 937, resp 0937 to nevygeneruje ani Omegu, ani jiný viditelný znak, bez ohledu na stav NumLock a bez ohledu na to, zda používám českou či anglickou klávesnici.

(OS: Gentoo linux, fluxbox)
--------------------
Jinými slovy - klávesnice odesílá která tlačítka byla zmáčknuta. OS vyhodnocuje, co to doopravdy znamená v závislosti na tom, jak má nastavené svoje záležitosti (zvolený jazyk, konvence atd.)

Například Atl+F4 nezavírá okno, ale přepíná na 4. virtuální plochu. Ctrl+Alt+F4 přepíná na čtvrtý textový terminál. FN+F4 (multimediální tlačítko [sleep] podle popisu na klávesnici) vyvolá dva (naskriptované) zápisy zápis do logu (

Kód: Vybrat vše

Jun 13 12:58:25 merle root: ACPI event get: button/sleep PNP0C0E:00 00000080 0000000b
Jun 13 12:58:25 merle root: ACPI event unhandled: button/sleep PNP0C0E:00 00000080 0000000b
), ale počítač neuspí (a šlo by na to pověsit libovolnou další akci kromě/místo logování)

Prostě klávesnice odešle, co bylo stisknuto, co se následkem toho stane si rozhoduje OS

Vejv-cz
Příspěvky: 8
Registrován: 26 dub 2019, 20:53

Re: Arduino jako klávesnice 2

Příspěvek od Vejv-cz » 13 čer 2019, 16:07

Díky za odpovědi, ale u mně se to chová velmi zvláštně.

Když na fyzické klávesnici zkouším levý alt+937 vypíše se toto: ę
Pokud před to napíšu nulu(alt+0937 ): ©
U mně vůbec nezáleží jakou mám klávesnici(českou/anglickou) a ani nezáleží jestli je zapnutý num lock.

Arduino s vaším kódem napíše neviditelný znak.
Středně pokročilý nováček.

Vejv-cz
Příspěvky: 8
Registrován: 26 dub 2019, 20:53

Re: Arduino jako klávesnice 2

Příspěvek od Vejv-cz » 14 čer 2019, 15:57

Jak doporučujete tedy řešit můj problém.
Mám se spíše zajímat jak vyřešit problém s alt+kód znaku, nebo mi doporučíte jinou metodu, jak problém vyřešit?
Středně pokročilý nováček.

AstroMiK
Příspěvky: 623
Registrován: 08 pro 2017, 19:05

Re: Arduino jako klávesnice 2

Příspěvek od AstroMiK » 14 čer 2019, 16:20

Tak jsem zkoušel ten svůj program spustit tak, aby odesílal klávesy místo do původního "PS Padu" do "MS Wordu".
A začalo se to chovat tak, jak píšeš.
Z toho teda vyplývá, že nejenom operační systém, ale i cílová apikace má vliv na to, co se bude zobrazovat.

Já už teda dál nevím.

Do jakého programu vlastně chceš ty stisky kláves posílat?

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 0 hostů