Unicode karaktereket tartalmazó string küldése GUI ablaknak Linux alatt

 ( TCH | 2019. szeptember 20., péntek - 21:01 )

Ahogy a téma mondja, szeretnék stringeket küldeni az ablakoknak. A probléma, hogy ha unicode karakterek is vannak benne, akkor az xdotool mindjárt az első ilyen karakternél elszáll

Invalid multi-byte sequence encountered
xdo_enter_text_window reported an error

hibával - amire az egyetlen találat ez az issue (és ahol megtaláltam az év leghasznavehetetlenebb hozzászólását) - az xvkbd pedig garbage karaktereket jelenít meg helyette - amire csak workaroundot találtam, hogy echo "$VALAMI" | iconv -f UFT8 -t UTF16 | xvkbd -file -, de akkor odavág két garbage karaktert az elejére; Persze levághatom egy cut -c 3- paranccsal az iconv és az xvkbd között, de gondolom okkal kerül oda az a két karakter, azonfelül a hungarumlaut (őŐűŰ) karakterek helyett így is "Q" jelenik meg.

Van valakinek ötlete, hogy hogy lehet ezek közül valamelyiket belőni rendesen? Vagy ha ajánl valami más tool, az elől sem zárkózom el...

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Az xdotoolhoz nem ertek, de a 2 garbage karakter a BOM. Ennek az a funkcioja, hogy a file (vagy itt string, de ezt az iconv nem tudja) hordozasakor rajojjon, hogy little endian vagy big endian az architektura.

--
When you tear out a man's tongue, you are not proving him a liar, you're only telling the world that you fear what he might say. -George R.R. Martin

Értem, akkor itt strippelhető. A hungarumlaut => Q-ra nincs tipped?

Ha jol ertem, megoldodott, ugyhogy csak az utokor kedveert:
Az iconv tud olyat is, hogy hasonlo karakterekre konvertal, ez a transliteration. Lehet, hogy a parancssoros iconv-odban ez alapbol be van kapcsolva.

A PHP-s iconv helpjebol:
If you append the string //TRANSLIT to out_charset transliteration is activated. This means that when a character can't be represented in the target charset, it can be approximated through one or several similarly looking characters. If you append the string //IGNORE, characters that cannot be represented in the target charset are silently discarded. Otherwise, E_NOTICE is generated and the function will return FALSE.

Caution
If and how //TRANSLIT works exactly depends on the system's iconv() implementation (cf. ICONV_IMPL). Some implementations are known to ignore //TRANSLIT, so the conversion is likely to fail for characters which are illegal for the out_charset.

(Az UFT8 ugye csak a hupon eliras?)

--
When you tear out a man's tongue, you are not proving him a liar, you're only telling the world that you fear what he might say. -George R.R. Martin

Thx, ezt azért majd megnézem.

> (Az UFT8 ugye csak a hupon eliras?)

Nem, ezt egészen konkrétan maga az xvkbd szerzője írta. (Az -utf kapcsoló nem segített, az -utf16-ot meg csak most találtam meg, de már megoldódott.)

Sz*rk: Ja, hogy "UFT"... Igen, az csak itt elírás. :/

Nálam az xdotool (3.20160805.1) is működik utf-8 karakterekkel, de ha megengedhető a vágólap használata, akkor megpróbálhatod ezt is:
echo "szöveg" | xclip -in -selection clipboard && xdotool key ctrl+v

/o\ Nem látom a fától az erdőt; miért nem jutott a vágólap az eszembe?! Köszönöm a segítséget.

Elfelejtetted elárulni, hogy mi az a parancs, ami a fenti hibát produkálja.

"xdotool type árvíztűrő" nekem működik.

Mind az xdotool, mind az xvkbd ezt csinálja:
xdotool type --window "$WINID" "$TEXT"
xvkbd -window "$WINID" -type "$TEXT"
De croach kollega workaroundja perfekt működik.