[MEGOLDVA!] console hu backspace

Fórumok

Sziasztok!

Az a kérdésem, hogy miért töröl két karaktert a backspace, ha magyar ékezetes betűket használok. Értem én, hogy azok 2 byte-on tárolódnak, de miért nem tudja a console, hogy azok is csak egy karakternek számítanak a megjelenítésnél. (Tehát a bufferből kettőt, de a képernyőről csak egyet kéne törölnie ugyebár.)
A beállítási módszerem igen egyszerű:

loadkeys hu
setfont lat2-16

Lehet, hogy túl puritán? Kéne még valami hozzá?

A válaszokat előre is köszönöm, főleg a használhatókat. :-)

MEGOLDÁS:
loadkeys -u hu
setfont lat2-16
export LANG="en_US.UTF-8"

Hozzászólások

Egyetlen backspace billentyű töröl kettőt?

Egészen pontosan hol töröl kettőt? Tehát például bash parancssorban, vagy valamely más parancs (például cat) bemenetét gépeled? A backspace leütésekor látszólag kettőt töröl, de ha elfogadtatod, akkor az adott program melyik értéket kapja, a látottat, vagy a logikailag helyeset?

Mi a locale beállításod? echo $LC_<tab>; echo $LANG; locale -a

"stty -a | grep iutf8" mit mond? "stty iutf8" megjavítja?

Grafikus terminálokban is tapasztalható a fenti hiba? Ott mi a locale, mi az stty iutf8?

A bash-ban töröl kettőt console üzemmódban.

Az echo 'ű' pl. visszaadja az ű-t.

Ennek: $LC_ csak egy változatát kínálja fel, a $LC_COLLATE visszaadott egy C-t.

A $LANG en_US, de hiába írom át export $LANG="hu_HU"-ra vagy ""-re, marad en_US. (Miért nem enged átírni egy szimpla környezeti változót?)

A locale -a visszaad egy rahedli országot, köztük van a hu_HU és a hu_HU.utf8 is.

Az stty -a visszaadja az iutf8-at is.

Az xterm-ben nem jelentkezik a hiba, de ott az ő és ű ékezet nélküliként jelenik meg. (Ezt még talán túlélem.)
A mousepad nevű texteditor progiban megjelenik az ő és ű is, holott ugyanazzal a font-al (monospace) dolgozik, mint az xterm.

Oops, a "locale -a"-t félreírtam, sima "locale"-re gondoltam.

Az a baj szerintem, hogy kevered az utf8-at, meg a nem utf8-at. Első körben el kéne dönteni, hogy melyiket szeretnéd következetesen használni. Az utf-8 a jó döntés.

Következő lépésként a LANG-ot ennek megfelelően kell beállítani, például "en_US.UTF-8". Ellenőrzésképp a "locale charmap" parancs UTF-8-at kell hogy adjon. Most iso-8859-1-en van.

A loadkeys proginak használd a "-u" kapcsolóját. Szükség lehet a unicode_start és/vagy "kbd_mode -u" parancs kiadására is.

stty esetén az a lényeg, hogy az iutf8 simán, vagy mínusz jellel szerepel-e, "iutf8" jó, "-iutf8" rossz, már ha utf8-at akarsz. "stty iutf8" állítja be jóra.

Az export parancsban ne rakj dollárt a változó elé.

Nagy isten vagy!!!
A $ részt szégyenlem, az nagyon amatőr hiba volt. :-)
Már az elsőként kipróbált LANG változó átírás megoldotta a dolgot, pedig a charmap még mindig ISO... (Még úgy is, hogy én export LANG=en_US.utf8 -at írtam, tehát se "" közé nem raktam, sem UTF-8 vagy egyéb cifrázás. Ami érdekes, hogy ugyanúgy jó az utf8, UTF8 és UTF-8 is. (Ezutóbbi a legérdekesebb, mert itt már nem az játszik be, hogy nem case sensitive a dolog. Ez már tök más, mégis megeszi.)

A loadkeys -u hu hatására megvan az UTF-8 charmap.

A unicode_start egy shell script, ami az általam is használt loadkeys és setfont parancsokat futtatja, de a LANG-ot nem állítja be, így egymagában nem sokat ér.

Az stty-ben az iutf8 most - nélküli, de lehet, hogy ez már a loadkeys -u hatása.

A kbd_mode most UTF-8, de szerintem ez is a loadkeys -u miatt van.

Ha nem szeretnéd a rendszert szétgányolni akkor használd a meglévő fájlokat:


/etc/rc.d/rc.font
/etc/rc.d/rc.keymap
/etc/profile.d/lang.sh
/etc/profile.d/lang.csh

Egyébként vannak kimondottam váltáshoz parancsok is, amik a telepítéskor is futkároznak azokat menet közben is elérheted.


setconsolefont
keyboardconfig

--
falura elmegy, városban meg úgy sem nézik...

Kösz, de ezekre már én is rájöttem. Pontosan ugyanezeket a file-okat pakoltam a telepítőmbe, meg még egy fstab-ot, egy lilo.conf-ot és az xfce egy-két config file-ját.
Az igazsághoz hozzátartozik, hogy nem a szabványos Slackware telepítőt használom, hanem egy abból létrehozott saját disztrot, amiben nincs menüs telepítő. 10 perc alatt fel lehet vele rántani egy tökéletesen működő Linux-ot, amiben minden benne van, ami nekem kell.

Mégegy furcsa adalék:
A Midnight Commander-ben pont fordítva működik rosszul, ott ugyanis az ékezetes karakterek leütésénél két karakter íródik lent a parancssorba, az első az igazi, a második pedig egy space (vagy valami, ami annak látszik). Törlésnél viszont jól működik, vagyis egyesével töröl mindent.

Ha utf8-at használsz, és a fentiek szerint jól beállítod, akkor szükség lesz még a midnight commanderből vagy 4.7-es verzióra, vagy 4.6-osból alaposan megpatcheltre (a legtöbb disztribúcióban benne van ez a patch). Ha ez megvan, akkor jól fog működni. Ha neked esetleg nincs, akkor valószínűleg az a legegyszerűbb, ha fordítasz forrásból egy legújabb stabil verziót.

A Slackware telepítő DVD ugyanúgy viselkedik. Ha kiválasztom az 1-el boot-olásnál a hu keyboard-ot, majd 1-el elfogadom és belépek, ugyanúgy beletöröl a prompt-ba ékezetes karakterek backspace-elése esetén. (És még az őű sem jelenik meg rendesen.)