Terminál és emuláció

Üres perceimben elkezdtem írni egy terminál-FAQ című dolgozatot, hátha valakit érdekel. Vagy ha nem, legalább nekem megmarad írásban.

Ugyanitt megemlítem, hogy a dtelnet most éppen apró darabokra van szétszedve, de már elkezdtem összerakni. A gond a kijelölések hibás működésével kezdődött, azután volt némi pixel-dropping ClearType használatánál, azután elkezdtem egyes részeket átszervezni, hogy legalább én értsem, mi történik, azután a színek kezelését is megkavartam; később jelentkezett valaki, hogy a scrolling region kezelése problémás, viszont kellene neki az aláhúzás... Szóval kavaros az egész...

Hozzászólások

s/utl/url/
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. 

Mintha a dtelnet linkje se lenne teljesen korrekt :-) (Meg az oldalon latszolag a levlista neve)

Ha mar:
smacs = Set Mode Alt Char Set
rmacs = Remove Mode Alt Char Set
(es igy meg ertelme is van a nevenek)
smul/rmul - UnderLine
smso/rmso - StandOut
sgr0 - Set graphics Rendition Zero
elvben a smul es smso is emulatorfuggo, valamint az sgr0 hivatalosan minden ilyen szirt-szart kikapcsol (vastag, fenyes, alahuzott, duplaszeles, duplamagas, stb) Erdemes egyszer megnezni egy DEC VT-100 (vagy 200, 320, stb) doksiban a vezerloszekvenciak leirasat ;-)

Ja, es az smacs-ban az a szep, amikor az ember megcsinalja Korn-shellben, hogy mejenek a kurzormozgato billentyuk (amihez ott ugye aliasok kellenek), majd mikor lekerdezi az aliasokat, akkor a kurzor-le utan olvashatatlan a terminal, mert az volt az smacs :-) - en anno direkt ezert meg egy plusz aliast is definialtam, ami viszont rmacs ertekkel birt,

Jaja, köszi a hasznos kiegészítést!

Sok-sok mindent le lehetne még írni.. például, hogy a blink (ESC[5m) kikapcsolására van szekvencia (ESC[25m) csak nincs neve; ugyanígy a bold (ESC[1m) párja is névtelen (ESC[21m), ezért írtam a sgr0-t jobb híján.

Továbbá értekezni kellene pl az rxvt különleges feature-iről, pl hogy Shift+nyíl,Ctrl+nyíl más-más szekvenciát küld, ezt a mcedit kezeli is; az xterm-new és az xterm-old mibenlétéről; a scrolling region jelentőségéről...

Hát kikapcsolónak én csak az ESC[0m; -et ismertem, de az ugye mindent kikapcsol.
Ami meg az ilyen Shift-tel így Ctrl-lel meg amúgy, ez is már a VT100|VTXXX idejében is hasonló volt, lehetett is szopni pl. hogy Application Keypad Mode v. Numeric Keypad Mode-ban volt a numerikus része a billentyűzetnek, és nem mindegy, hogy a BS-hez nyomtál-e pl. Ctrl-t. Nyilván az ilyen jellegű hülyeségeiket valahonnan vették a terminál-emulátor fejlesztők.

Keypad-ról jut eszembe: egy derék felhasználó kérte a 'keypad application mode' supportját (smkx (ESC=) Application Mode, rmkx (ESC>) Numeric Mode), én meg, kis stréber, bele is tettem... azután csodálkoztam, hogy pl a less-ben nem működik a numerikus billentyűzet (legalábbis az én AIX-os gépeimen) -- a less ugyanis (vagy az általa használt curses) KPAM módba kapcsol, anélkül, hogy azokkal a szekvenciákkal bármit is csinálna.
Szóval most a 'connect' képernyőn lehet szabályozni, hogy akarunk-e ilyet, default=No (putty-ban ugyanez: Terminal/Features/Disable application keypad mode)

Lassan kiadom az 1.2.8-at, itt a perverzió: dtelnet.exe, tesztprogram dtelnet.test.sh
Állítólag ebben újra működik az egérgörgő, megjavult a -I opció, és 16 előtér/háttérszín használható (feláldozva a 'blink' és 'bold' attribútomokat), és (bizonyos fontoknál/méreteknél) az aláhúzás is működik.

Note to self: tesztelni és dokumentálni kellene a stty rows <sorok> columns <oszlopok> parancs működését.

Lett egy dtelnet-1.3.0 Semmi komoly, apró kényelmi funkciók, például csinálhatunk szemkímélőbb színbeállítást a /A opcióval (bár igaz, hogy a színeket a sorszámukkal kell megadni, ebben segít a mellékelt test-script), pl: dtelnet.exe /A 0xea-0xf8

Kijött az 1.3.2 vadonatúj hibákkal, némi VMS-barát fícsörökkel, %HOME% támogatással.

Egy kis részlet egy inputrc-ből, hogy lássuk, mire képes ez az ipar:


# allow the use of the Home/End keys -- linux/vt100/xterm/rxvt

"\e[1~": beginning-of-line
"\e[7~": beginning-of-line
"\e[H":  beginning-of-line
"\eOH":  beginning-of-line

"\e[4~": end-of-line
"\e[8~": end-of-line
"\e[F":  end-of-line
"\eOF":  end-of-line