- NevemTeve blogja
- A hozzászóláshoz be kell jelentkezni
- 960 megtekintés
Hozzászólások
Hm, úgy látom te nagyon értesz ezekhez a terminálemulátoros dolgokhoz! Emiatt bátorkodom megemlíteni neked egy régi gondomat, hátha tudsz segíteni. Olyan régi, hogy nagyjából azóta kínlódok vele amióta áttértem a Linuxra, pedig ennek jópár éve van már.
Szóval: bizonyos terminálemulátorokkal semmi bajom. Másokkal igen. A "baj" alatt azt értem, hogy ha ezen terminálemulátorokban megnyitok valami olyan alkalmazást ahol némi szövegszerkesztés is folyik - tipikus példa erre mondjuk az "mc edit" - akkor itt egyszerűen nem tudok kijelölni sorokat és/vagy sorrészleteket a Shift+KurzorBillentyű kombinációval! Más terminálemulátoroknál ez működik. Néhol a Shift+KurzorLe/Fel működik, csak a Shift+KurzorJobbra/Balra nem, mint épp most is nálam. Konkrétan: jelenleg Sabayon disztrót használok, ezalatt az Urxvt terminálemulátort, és az Mc Edit alatt csak a Shift+KurzorFel/Le működik, de a Shift+KurzorJobbra/Balra nem működik, nem lehet vele kijelölni.
Nagyon sok disztrót és terminálemulátort kipróbáltam már, és számomra "random" jelenségnek tűnik, mintegy szerencse függvényének hogy épp mit fogok ki, működik-e vagy sem.
Na most azt én tudom más postjaidból is hogy komoly tudással rendelkezel, és mert ez a számomra rém komoly gond (oké, meg lehet kerülni trükkökkel de igazán idegesítő) emiatt én tulajdonképpen nem azt szeretném ha konkrétan a mostani "állapotomra" valami ideiglenes orvosságot találnál, mert ugye a fene se tudja meddig marad meg nekem akár a Sabayon disztró akár az urxvt, hanem hogy kissé kiokosíts hogy ez mitől van, és mit lehet tenni annak érdekében hogy működjön, s így legközelebb már akármiféle más esetben is megoldhassam magam e gondot. Semmi baj ha a megoldás érdekében akár újra kell fordítanom az urxvt-t vagy más programot, nem baj ha bele kell nyúlnom a kódba netán, nem ijedek meg ilyesmitől. Max nem sikerül, semmi baj. Érteni szeretném hogy ez mitől van és mit kell(ene) csinálnom, mert ez iszonyúan idegesít régóta.
Köszi előre is a segítségedet!
-------------
Honlapom: http://parancssor.info
Könyvem a VIM-ről: http://mek.oszk.hu/09600/09648/#
=== Sabayon disztró, DWM ablakkezelő ===
- A hozzászóláshoz be kell jelentkezni
Amennyire én tudom, ez a Shift+Nyíl működés az rxvt specialitása, más emulátorok nem csinálnak ilyet -- a lényeg az, hogy a Shif+Nyíl más szekvenciát küld, mint a Nyíl magában, vagy a Ctrl+Nyíl. Vannak segédprogramok a szekvenciák megnézésére, pl: shkeys.c.
Most csak dtelnet van a kezem ügyében (rxvt-t emulálva), abban a következő szekvenciákat látom:
föl-le-jobb-bal
^[[A 27 0x1b 0033
91 0x5b 0133
65 0x41 0101
^[[B 27 0x1b 0033
91 0x5b 0133
66 0x42 0102
^[[C 27 0x1b 0033
91 0x5b 0133
67 0x43 0103
^[[D 27 0x1b 0033
91 0x5b 0133
68 0x44 0104
Shift + föl-le-jobb-bal
^[[a 27 0x1b 0033
91 0x5b 0133
97 0x61 0141
^[[b 27 0x1b 0033
91 0x5b 0133
98 0x62 0142
^[[c 27 0x1b 0033
91 0x5b 0133
99 0x63 0143
^[[d 27 0x1b 0033
91 0x5b 0133
100 0x64 0144
Ctrl + föl-le-jobb-bal
^[Oa 27 0x1b 0033
79 0x4f 0117
97 0x61 0141
^[Ob 27 0x1b 0033
79 0x4f 0117
98 0x62 0142
^[Oc 27 0x1b 0033
79 0x4f 0117
99 0x63 0143
^[Od 27 0x1b 0033
79 0x4f 0117
100 0x64 0144
Ezeket azután a mcedit felismeri, és ebből dönti el, hogy mit is ténykedjen.
Szerintem neked is elsősorban azt kellene kimérned, hogy milyen szekvenciákat kapsz az urxvt-től ezekre a billentyűkombinációkra.
PS: Ha legközelebb unix-közelben leszek, én is kipróbálom ezt az urxvt-t.
- A hozzászóláshoz be kell jelentkezni
Köszi a választ! Megjegyzem, mikor réges-régen még UhuLinuxszal kezdtem, amennyire emlékszem ott ez működött, Gnome terminal alatt. Azaz esetleg mégsem csak az rxvt specialitása talán. De ha az lenne is, az urxvt úgy tudom alapvetően az rxvt "továbbfejlesztett" (vagy hogy nevezzem) változata, akkor pedig nem értem abban miért nem működik.
Ráadásul azt végképp fel nem tudom fogni, egy ennyire alapvető funkció hogyhogy nem magától értetődő MINDEN terminálemulátorban... Ha én készítenék egy efféle szoftvert, egyszerűen pre-alfa verzióként se merném közreadni amíg ez nem működik benne. Tudom, nem én vagyok a programozók gyöngye de nem is erről van szó, hanem hogy ez szerintem olyasmi, ami nélkül az emulátor kvázi használhatatlan, vagy szerényebben fogalmazva a funkcionalitása oly mértékben sérült, hogy csak "nyögvenyelősen" lehet használni. Állandóan olyan érzésem van ettől, mintha zsákban akarnék futni.
-------------
Honlapom: http://parancssor.info
Könyvem a VIM-ről: http://mek.oszk.hu/09600/09648/#
=== Sabayon disztró, DWM ablakkezelő ===
- A hozzászóláshoz be kell jelentkezni
Az shkeys.c program kimenete az én esetemben:
Press any key to see codes, ctrl-D to terminate
FEL:
^[[A 27 0x1b 0033
91 0x5b 0133
65 0x41 0101
Shift+FEL:
^[[a 27 0x1b 0033
91 0x5b 0133
97 0x61 0141
LE:
^[[B 27 0x1b 0033
91 0x5b 0133
66 0x42 0102
Shift+LE:
^[[b 27 0x1b 0033
91 0x5b 0133
98 0x62 0142
JOBBRA:
^[[C 27 0x1b 0033
91 0x5b 0133
67 0x43 0103
SHIFT+JOBBRA:
^[[c 27 0x1b 0033
91 0x5b 0133
99 0x63 0143
BALRA:
^[[D 27 0x1b 0033
91 0x5b 0133
68 0x44 0104
SHIFT+BALRA:
^[[d 27 0x1b 0033
91 0x5b 0133
100 0x64 0144
-------------
Honlapom: http://parancssor.info
Könyvem a VIM-ről: http://mek.oszk.hu/09600/09648/#
=== Sabayon disztró, DWM ablakkezelő ===
- A hozzászóláshoz be kell jelentkezni
[code] és [/code] közé kellene tenni... Mindenesetre ezek jónak látszanak, hiszen a Shift hatására az A-B-C-D átalakult a-b-c-d-vé.
Megjegyzés: linux terminálon (Ctrl+Alt+F1..F5) ez nem külön szekvenciával működik, hanem a TIOCLINUX rendszerhívással. Ilyesmi:
#define SHIFT_PRESSED 0x01
#define ALTR_PRESSED 0x02
#define CONTROL_PRESSED 0x04
#define ALTL_PRESSED 0x08
unsigned char modifiers= 6; /* TIOCLINUX subcode=6: módosítók lekérdezése */
ioctl (0, TIOCLINUX, &modifiers);
lásd még: vt.c, keyboard.c
- A hozzászóláshoz be kell jelentkezni
Betettem code tagek közé. Bocs!
Ha azonban a szekvenciák jók, akkor kérdés, hogy miért nem működnek mégsem. Mármint a Shift+Jobbra/Balra nem működik. A Shift+Fel/Le igen. Nem csodálkoznék a dolgon ha egyáltalán semelyik se működne, mert akkor arra gondolnék, hogy biztos az mc vagy az urxvt van lefordítva rosszul (ez Sabayon alatt ami Gentoo-based igazán könnyen lehetséges, a rengeteg USE flag miatt...)
De nem mindegyik szekvencia nem működik. Így aztán egyszerűen elképzelésem sincs mi lehet a baj, egyszerűen nem tudom merrefelé induljak el a nyomozásban, és ezért is kértem tanácsot.
-------------
Honlapom: http://parancssor.info
Könyvem a VIM-ről: http://mek.oszk.hu/09600/09648/#
=== Sabayon disztró, DWM ablakkezelő ===
- A hozzászóláshoz be kell jelentkezni
Van olyan terminálemulátor (pl a konsole), ami maga használja a Shift+Bal és Shift+Jobb gombokat, de akkor a shkeys programmal sem láthattad volna őket, pl a Shift+PgUp/PgDn sok emulátornál a history-ban scrolloz, nem küld a szervernek semmilyen szekvenciát.
- A hozzászóláshoz be kell jelentkezni
Az egerrol szolo infok cime is scrolling region lett - szerintem nem arra gondolt a kolto.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Copy and Paste fejlesztés... Javítva, köszi!
- A hozzászóláshoz be kell jelentkezni
Kipróbáltam a konsole-t meg a gnome-terminal-t, az előbbiben a Shift+Nyil egyáltalán nem küldenek semmilyen szekvenciát, az utóbbiban jól mennek, mcedit-ben is.
fel-le-jobb-bal gnome-terminalban:
^[[A 27 0x1b 0033
91 0x5b 0133
65 0x41 0101
^[[B 27 0x1b 0033
91 0x5b 0133
66 0x42 0102
^[[C 27 0x1b 0033
91 0x5b 0133
67 0x43 0103
^[[D 27 0x1b 0033
91 0x5b 0133
68 0x44 0104
Shift+fel-le-jobb-bal gnome-terminalban:
^[[1;2A 27 0x1b 0033
91 0x5b 0133
49 0x31 0061
59 0x3b 0073
50 0x32 0062
65 0x41 0101
^[[1;2B 27 0x1b 0033
91 0x5b 0133
49 0x31 0061
59 0x3b 0073
50 0x32 0062
66 0x42 0102
^[[1;2C 27 0x1b 0033
91 0x5b 0133
49 0x31 0061
59 0x3b 0073
50 0x32 0062
67 0x43 0103
^[[1;2D 27 0x1b 0033
91 0x5b 0133
49 0x31 0061
59 0x3b 0073
50 0x32 0062
68 0x44 0104
Ctrl+fel-le-jobb-bal gnome-terminalban:
^[[1;5A 27 0x1b 0033
91 0x5b 0133
49 0x31 0061
59 0x3b 0073
53 0x35 0065
65 0x41 0101
^[[1;5B 27 0x1b 0033
91 0x5b 0133
49 0x31 0061
59 0x3b 0073
53 0x35 0065
66 0x42 0102
^[[1;5C 27 0x1b 0033
91 0x5b 0133
49 0x31 0061
59 0x3b 0073
53 0x35 0065
67 0x43 0103
^[[1;5D 27 0x1b 0033
91 0x5b 0133
49 0x31 0061
59 0x3b 0073
53 0x35 0065
68 0x44 0104
- A hozzászóláshoz be kell jelentkezni
Referenciaképpen kipróbáltam az 'Eterm'-et, ez pontosan ugyanolyan szekvenciákat generál, mint az rxvt, csak épp a mc nem tud erről (ezt persze csak a saját gépemen teszteltem). Viszont a TERM=rxvt mcedit filenev paranccsal tökéletesen működnek benne a Shift+Nyil és Ctrl+Nyíl kombinációk.
- A hozzászóláshoz be kell jelentkezni
Köszi az infókat, Mester, ÓÓÓÓÓÓÓRIÁSI vagy! (Most tényleg kiabálok, de örömömben!)
Igaz hogy a problémát nem oldottad meg, de nekem sikerült megoldanom, méghozzá a legkifejezettebben csakis amiatt, mert jó ötletet adtál, tippet amin végre elindulhattam! Ezer hála és köszönet érte!
A tipp a TERM változó volt. Ez nálam alapból rxvt-unicode értékre volt beállítva. Na most kipróbáltam hogy beállítom simán rxvt értékre, na úgy már a Shift+Le/Fel se működött. Ezután átállítottam egyszerűen arra hogy xterm, s lőn öröm és bódoccsááá': minden remekül működik!
Most már csak azt szeretném tudni, kizárólag kíváncsiságból s ismereteimet fejlesztendő, hogy tulajdonképpen mi a csudát kapcsolgatok én ezzel a változóval?! Azt értem hogy ez tulajdonképpen egy "flag", ami bizonyos viselkedésmódokat jelez vagy talán ír elő. De miben különböznek ezek a módok és mik veszik figyelembe ezen változó értékét? Hol van definiálva, hogy az egyes TERM értékek tulajdonképpen mit jelentenek, mire vannak hatással? Szóval mit csinál ez? Remélem ebből nem lesz az, hogy az urxvt-ben elindított progik hirtelen nem UTF-8 módon kezelik/kódolják majd nekem az ékezetes karaktereket...
Az is megfelelne, ha csak pár erről szóló linkkel ajándékozol meg.
Köszi előre is!
-------------
Honlapom: http://parancssor.info
Könyvem a VIM-ről: http://mek.oszk.hu/09600/09648/#
=== Sabayon disztró, DWM ablakkezelő ===
- A hozzászóláshoz be kell jelentkezni
A programok a TERM-változóból tudják, hogy mire képes a terminál(emulátor)... egyrészt úgy, hogy beléjük van gyógyítva egy csomó if-utasítás (kevésbé elegáns módszer), másrészt a termcap/terminfo adatbázisból... ez utóbbi az elegánsabb/flexibilisebb módszer, csak sajnos a terminfo hiányos, pl a FAQ-ban is írtam, hogy benne van a 'bold'-ot és a 'blink'-et bekapcsoló szekvencia, de nincs benne az ugyanazeket kikapcsoló szekvencia. (Note to self: Mindezekről kellene értekezni a FAQ-ban is.)
Ha a mc-d egy régebbi darab, megpróbálhatod forrásból telepíteni a legfrissebbet (--prefix=/usr/local opcióval persze), és összehasonlítani a működését a régivel.
Szerk: a 'terminfo hiányos'-t ne úgy értsük, hogy valaki lusta volt, és nem gépelte be mondjuk az xterm-hez a bold_off=\E[21m sort, hanem úgy, hogy globálisan nincs ilyen 'bold_off' definiálva benne (man 5 terminfo) [Ha mégis van, akkor ez rossz példa volt...]
- A hozzászóláshoz be kell jelentkezni
Próbából fordítottam egy mc-4.8.10-t, minden épp úgy megy benne, mint eddig; sőt, az Eterm-et is kezeli trükközés nélkül.
Fordítási beállítások:
./configure \
--enable-shared \
--enable-static \
--prefix=/usr/local \
--without-x \
--with-screen=slang \
--enable-nls \
--enable-extcharset \
2>&1 | tee log.configure
PS: van valami zavar az erőben az egerentyű kezelését illetően: a görgő nem megy rxvt-ben, de megy xterm-ben és Eterm-ben.
- A hozzászóláshoz be kell jelentkezni
Érdemes lenne nézelődni a [/usr/local]/etc/mc/*keymap* fájlokban, mit mondanak a 'shift-left'-re és társaira -- lehet, hogy a disztribútorok ezekben a fájlokban alkottak valamit (ez csak egy tipp, de a hogy én az ilyen disztribútorokat ismerem, olyanok, mint a kiscserkészek: ahol tudnak, segítenek; ahol nem tudnak... ott legalább megváltoztatnak valamit, hogy nyomot hagyjanak maguk után.)
- A hozzászóláshoz be kell jelentkezni