On Tue, Sep 01, 2015 at 10:22:52PM +0800, Pickfire wrote: > Hi, it seems that st does some terminal codes abnormally[1]. > > What is the reason for st's key codes to be different from the other > terminals? Is st following some standards? > > [1]: > https://github.com/fish-shell/fish-shell/issues/2309#issuecomment-136678774
Yes, st follows terminfo(5). Every terminal has different keys, so, I don't know what you mean with st using different keys. You can see the differences between xterm an linux vt: $ infocmp xterm linux comparing xterm to linux. comparing booleans. ccc: F:T. eo: F:T. km: T:F. mc5i: T:F. npc: T:F. xon: F:T. comparing numbers. cols: 80, NULL. lines: 24, NULL. ncv: NULL, 18. comparing strings. acsc: '``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~', '+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260i\316j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376'. cbt: '\E[Z', NULL. civis: '\E[?25l', '\E[?25l\E[?1c'. clear: '\E[H\E[2J', '\E[H\E[J'. cnorm: '\E[?12l\E[?25h', '\E[?25h\E[?0c'. cvvis: '\E[?12;25h', '\E[?25h\E[?8c'. dim: NULL, '\E[2m'. flash: '\E[?5h$<100/>\E[?5l', '\E[?5h\E[?5l$<200/>'. ich1: NULL, '\E[@'. indn: '\E[%p1%dS', NULL. initc: NULL, '\E]P%p1%x%p2%{255}%*%{1000}%/%02x%p3%{255}%*%{1000}%/%02x%p4%{255}%*%{1000}%/%02x'. invis: '\E[8m', NULL. is2: '\E[!p\E[?3;4l\E[4l\E>', NULL. kDC: '\E[3;2~', NULL. kEND: '\E[1;2F', NULL. kHOM: '\E[1;2H', NULL. kIC: '\E[2;2~', NULL. kLFT: '\E[1;2D', NULL. kNXT: '\E[6;2~', NULL. kPRV: '\E[5;2~', NULL. kRIT: '\E[1;2C', NULL. kb2: '\EOE', '\E[G'. kbs: '^H', '^?'. kcub1: '\EOD', '\E[D'. kcud1: '\EOB', '\E[B'. kcuf1: '\EOC', '\E[C'. kcuu1: '\EOA', '\E[A'. kend: '\EOF', '\E[4~'. kent: '\EOM', NULL. kf1: '\EOP', '\E[[A'. kf13: '\E[1;2P', '\E[25~'. kf14: '\E[1;2Q', '\E[26~'. kf15: '\E[1;2R', '\E[28~'. kf16: '\E[1;2S', '\E[29~'. kf17: '\E[15;2~', '\E[31~'. kf18: '\E[17;2~', '\E[32~'. kf19: '\E[18;2~', '\E[33~'. kf2: '\EOQ', '\E[[B'. kf20: '\E[19;2~', '\E[34~'. kf21: '\E[20;2~', NULL. kf22: '\E[21;2~', NULL. kf23: '\E[23;2~', NULL. kf24: '\E[24;2~', NULL. kf25: '\E[1;5P', NULL. kf26: '\E[1;5Q', NULL. kf27: '\E[1;5R', NULL. kf28: '\E[1;5S', NULL. kf29: '\E[15;5~', NULL. kf3: '\EOR', '\E[[C'. kf30: '\E[17;5~', NULL. kf31: '\E[18;5~', NULL. kf32: '\E[19;5~', NULL. kf33: '\E[20;5~', NULL. kf34: '\E[21;5~', NULL. kf35: '\E[23;5~', NULL. kf36: '\E[24;5~', NULL. kf37: '\E[1;6P', NULL. kf38: '\E[1;6Q', NULL. kf39: '\E[1;6R', NULL. kf4: '\EOS', '\E[[D'. kf40: '\E[1;6S', NULL. kf41: '\E[15;6~', NULL. kf42: '\E[17;6~', NULL. kf43: '\E[18;6~', NULL. kf44: '\E[19;6~', NULL. kf45: '\E[20;6~', NULL. kf46: '\E[21;6~', NULL. kf47: '\E[23;6~', NULL. kf48: '\E[24;6~', NULL. kf49: '\E[1;3P', NULL. kf5: '\E[15~', '\E[[E'. kf50: '\E[1;3Q', NULL. kf51: '\E[1;3R', NULL. kf52: '\E[1;3S', NULL. kf53: '\E[15;3~', NULL. kf54: '\E[17;3~', NULL. kf55: '\E[18;3~', NULL. kf56: '\E[19;3~', NULL. kf57: '\E[20;3~', NULL. kf58: '\E[21;3~', NULL. kf59: '\E[23;3~', NULL. kf60: '\E[24;3~', NULL. kf61: '\E[1;4P', NULL. kf62: '\E[1;4Q', NULL. kf63: '\E[1;4R', NULL. khome: '\EOH', '\E[1~'. kind: '\E[1;2B', NULL. kri: '\E[1;2A', NULL. kspd: NULL, '^Z'. mc0: '\E[i', NULL. mc4: '\E[4i', NULL. mc5: '\E[5i', NULL. nel: NULL, '^M^J'. oc: NULL, '\E]R'. rin: '\E[%p1%dT', NULL. rmacs: '\E(B', '\E[10m'. rmcup: '\E[?1049l', NULL. rmkx: '\E[?1l\E>', NULL. rmm: '\E[?1034l', NULL. rmpch: NULL, '\E[10m'. rs1: '\Ec', '\Ec\E]R'. rs2: '\E[!p\E[?3;4l\E[4l\E>', NULL. setb: '\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m', NULL. setf: '\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m', NULL. sgr: '%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m', '\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m'. sgr0: '\E(B\E[m', '\E[0;10m'. smacs: '\E(0', '\E[11m'. smcup: '\E[?1049h', NULL. smkx: '\E[?1h\E=', NULL. smm: '\E[?1034h', NULL. smpch: NULL, '\E[11m'. u8: '\E[?1;2c', '\E[?6c'. If your program does not use terminfo(3) (http://linux.die.net/man/3/setupterm), then is broken. About the problems with DELETE, please take a look to the FAQ (section Why doesn't the Del key work in some programs?) Regards,