Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 3. 10. 2016 12:06:46

kamlan
Člen
Registrace: 15. 9. 2016
Příspěvků: 21

Makro:jak zjistit aktuální jazyk klávesnice (displeje)? VYŘEŠENÉ ar/cz

Jak v Libreoffice Basic zjistit aktuální jazyk klávesnice? Potřeboval bych makro pro Writer, které by zjistilo na kterou klávesnici je právě přepnuto a podle toho něco udělalo. Makro: právě je EN tak něco1, nebo právě je CZ tak něco2.

Editoval kamlan (5. 10. 2016 10:17:43)

Offline

#2 3. 10. 2016 12:44:42

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,527

Re: Makro:jak zjistit aktuální jazyk klávesnice (displeje)? VYŘEŠENÉ ar/cz

Na Linuxu se musíte podívat nahoru vpravé straně kde je ikonka s nastavením klávesnice (alespoň je tomu tak v Ubuntu). U Windows by mělo fungovat přepínání pomocí Shift+Alt(levý). Vidět sice nic není ale když tam nebude čeština tak se Vám nepovedou české znaky s diakritikou.
     Takže když vyzkoušíte například "š" tak čeština ho tam má a ostatné jazyky ne. Přepínání Shift+Alt funguje pro přepínání "do" a "z" stejně. Zase jde ale o to kolik máte nainstalovaných jazyků. Já mám ještě mimo angličtiny němčinu a tak na jedno kliknutí Shift+Alt skočím do anglické klávesnice, ale abych se vrátil musím to udělat 2x jinak skončím v němčině.


     To jsou takové návody pro vlastní použití. Pokud byste potřeboval detekovat nastavení klávesnici na jiném stroji tak byste potřeboval otestovat v cyklu alespoň znaky s českou diakritikou protože problém se týká nejen SW, ale i HW.
     Makra mohou detekovat národní prostředí. To se děje například při programování rozšíření kde je podpora pro více jazyků. Naproti tomu nevím jak si to poradí když bude sice určena sada ANSI (respektive UTF-8) a uživatel přepne manuálně režim na jinou klávesnici.


     Předpokládám že spíš potřebujete programátorské "jednorázová" přepínání. Například zavináč @ (=Alt+64), logický operátor < (=Alt+60), > (=Alt+62) a podobně. Najděte si všechny znaky které nejčastěji potřebujete a napište si tahák. Za pár dní to budete umět z paměti.


PS - jazyk pro Basic je UTF-8.

Editoval neutr (3. 10. 2016 12:46:51)


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#3 3. 10. 2016 16:24:25

kamlan
Člen
Registrace: 15. 9. 2016
Příspěvků: 21

Re: Makro:jak zjistit aktuální jazyk klávesnice (displeje)? VYŘEŠENÉ ar/cz

Myslel jsem, že bych si udělal nějaké vychytávky pro českou a arabskou klávesnici, kde když by se spustilo makro, tak by detekovalo aktuální klávesnici (je-li zrovna CZ nebo AR) a podle toho se něco provedlo. Avšak pokud makra umí zjistit jen národní prostředí, tak je to nepoužitelné.
V příkladě jsem uváděl CZ a EN pro usnadnění, EN klávesnici již roky nepoužívám, neboť všechny EN znaky co nemá česká klávesnice jdou pod Win mačkat s pravým Altem (pravý Alt+V je třeba @) a pod Ubuntu mi něco takového fungovalo myslím též. Ty EN znaky mám na klávesnici namalované barvičkami na letadýlka, stejně jako arabské, každé jinou barvou, takže klávesnice sice vypadá jako papoušek, ale je to přehledné. A aby se barvy neloupaly, přelepil jsem klávesy normálně průhlednou izolepou, což mi zabralo sice pár hodin (vystříhat, nalepit), ale už se barvy neloupou. Ono jde sice sehnat nějaké přelepky, ale třeba pro arabštinu nenabízely znaky se Shiftem, tak jsem to prostě vyřešil po svém.

Offline

#4 3. 10. 2016 18:10:25

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,527

Re: Makro:jak zjistit aktuální jazyk klávesnice (displeje)? VYŘEŠENÉ ar/cz

Ale já jsem psal že lze udělat cyklus který prověří aktuální nastavení klávesnice. Existují události OnClick a kód klávesy. Princip detekce je jednoduchý. - Vystřelím jen tak z hlavy :
     Klikneme a klávesu A a čekáme znak "A" (definovaný v textové podobě). To by mělo simulovat fyzické klikutí (i když jsem toto vysloveně netestoval). Makro by se aktivovalo například klávesovou zkratkou. Může to být jen v určitém dokumentu nebo nad všemi druhy dokumentů. Je otázka co má být pří pozitivním a negativním výsledku. Mám onClick snad nad všemi klávesami ze 101 mimo ENTER a ESC.
     Když by Vám stačil český dialog s výstupem například "ANO - čeština", nebo "Ne - arabština" tak to postavím abyste to mohl otestovat.


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#5 3. 10. 2016 18:35:29

kamlan
Člen
Registrace: 15. 9. 2016
Příspěvků: 21

Re: Makro:jak zjistit aktuální jazyk klávesnice (displeje)? VYŘEŠENÉ ar/cz

To by bylo výborné, tohle by mi skutečně stačilo. Děkuji

Offline

#6 3. 10. 2016 20:12:32

kamlan
Člen
Registrace: 15. 9. 2016
Příspěvků: 21

Re: Makro:jak zjistit aktuální jazyk klávesnice (displeje)? VYŘEŠENÉ ar/cz

Ještě mě napadlo, zda by konkrétně u arabštiny nešlo testovat, zda je zrovna aktivní CTL a tím by se poznalo, že jde o arabštinu, kdežto při neaktivním CTL by šlo o češtinu. Ale též nevím, zda je možné (případně jak) testovat právě je-li aktivní CTL.

Offline

#7 4. 10. 2016 11:43:01

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,527

Re: Makro:jak zjistit aktuální jazyk klávesnice (displeje)? VYŘEŠENÉ ar/cz

Hledal jsem CTL na netu. Jsou tam nějaké případy ale týkají se jen existujícího textu v dokumentu. Samotné nastavení při novém (prázdném) dokumentu žádné ačkoliv to někde ve zdrojáku musí být pod check boxem. To je ale docela fuška bez základní orientace.
     Takže posílám slíbené makro. není to nic moc. Test je nastaven na písměno "ř". V jiném případě vyhodí také info s kopií stisknutého znaku. Neumí ale detekovat o jaký znak se jedná (to umí jen to ř). Přes to je v dialogu vidět úplně vpravo za závorkou.
     Moc jsem si s tím nehrál protože jsem hledal CTL a tak se nyní ještě navíc stisknutá klávesa napíše do sešitu. Tím je paradoxně každý dialog nadbytečný. Lze to myslím ale snadno vyřadit. Nejdříve se podívejte jak to funguje.
Test klávesnice
     Test se musí nastartovat z nabídky "Test - CS". Následně je potřeba stisknout klávesu "ř", nebo alespoň nějakou čistě českou - s diakritikou. Po stisknutí vyskočí dialog a KeyHandler se sám deaktivuje. Kopie zadaného znaku je vždy za rovnítkem.
     Takže pokud tam bude jen čeština a arabština stačí asi stisknout jakýkoliv znak. Já myslím že tam ale máte ještě také angličtinu - ta je přednastavená myslím vždy. Pak potřebujete "č, ř, ž, .. a podobně.
     Testoval jsem to na anglické klávesnici a funguje to. Domnívám se, že by to mělo s těmi arbskými znaky fungovat také tak.


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#8 4. 10. 2016 18:16:06

kamlan
Člen
Registrace: 15. 9. 2016
Příspěvků: 21

Re: Makro:jak zjistit aktuální jazyk klávesnice (displeje)? VYŘEŠENÉ ar/cz

Děkuji, funguje perfektně, dá se s tím leccos vyřešit :-). Namísto vizuálního testování znaků If oEvt.Keychar = "ř" Then se dá použít asc(Keychar) -> a čeština má trojciferná čísla kdežto arabština čtyřciferná, takže v podstatě je-li číslo z asc(Keychar)<1000, tak jde o českou klávesnici, nebo naopak >1000 (arabské rozšířené Unicode znaky) tak jde o arabskou klávesnici.

Prosím ještě jedna maličkost, nevíte lze-li nějak jednodušeji zjistit jaký znak je na aktuální pozici textového kurzoru? Prostě když kliknu myší někam do dokumentu a spustím makro, tak aby zjistilo, že na této pozici je třeba znak "a". Zatím to řeším tak, že po spuštění makra se vykoná v podstatě jednou "Shift+šipka vpravo", tím dojde k označení daného znaku jako výběr a přes  ThisComponent.getCurrentSelection() zjistím znak ve výběru. Ale nejde to nějak přímo bez toho označování do výběru?

Offline

#9 4. 10. 2016 19:17:39

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,527

Re: Makro:jak zjistit aktuální jazyk klávesnice (displeje)? VYŘEŠENÉ ar/cz

Ne to opravdu nejde. Kurzor normálně stojí mezi znaky. Dá se tedy detekovat jen třeba počet znaků do začátku odstavce, věty, nebo slova (a nebo směrem do konce a podobně).
     Takže v podstatě bez toho "Shift+šipka vpravo (vlevo)" to nejde. Dá se detekovat "jen tak" opravdu jen odstavec a podobně. Tedy pro úplnost - lze stisknout Insert a kurzor se změní ale ta klávesová zkratka "Shift+šipka" je bezpečnější kvůli přepisování. Hodně (asi většina) strojů mívá Insert který přepisuje a to by mohlo být nepříjemné.


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

Zápatí