####### # # E-scripts on vcs, terminal emulation, etc. # # Note 1: use the eev command (defined in eev.el) and the # ee alias (in my .zshrc) to execute parts of this file. # Executing this file as a whole makes no sense. # # Note 2: be VERY careful and make sure you understand what # you're doing. # # Note 3: If you use a shell other than zsh things like |& # and the for loops may not work. # # Note 4: I always run as root. # # Note 5: some parts are too old and don't work anymore. Some # never worked. # # Note 6: the definitions for the find-xxxfile commands are on my # .emacs. # # Note 7: if you see a strange command check my .zshrc -- it may # be defined there as a function or an alias. # # Note 8: the sections without dates are always older than the # sections with dates. # # This file is at # or at . # See also , # , # , # , # and . # ####### Etc: # «.setbell» (to "setbell") # «.less» (to "less") # «.screen» (to "screen") # «.screen_demo_eeg2» (to "screen_demo_eeg2") # «.screen-src» (to "screen-src") # «.screen-src-gdbk» (to "screen-src-gdbk") # «.console-tools-src» (to "console-tools-src") # «.svgatextmode» (to "svgatextmode") # «.svgatextmode0» (to "svgatextmode0") # «.avoiding_tty_reset» (to "avoiding_tty_reset") # «.framebuffer» (to "framebuffer") # «.toggle_meta» (to "toggle_meta") # «.ncurses-src» (to "ncurses-src") # «.ncurses_demos» (to "ncurses_demos") # «.ncurses_1» (to "ncurses_1") # «.key_charseq» (to "key_charseq") Keyboard: # «.kbrequest_who» (to "kbrequest_who") # «.kbrequest-innards» (to "kbrequest-innards") # «.kbdrate_measuring» (to "kbdrate_measuring") # «.kbdrate_setting» (to "kbdrate_setting") # «.reduce_my_keymap» (to "reduce_my_keymap") # «.abnt2-keymap» (to "abnt2-keymap") Console fonts: # «.console512» (to "console512") # «.chars256to511» (to "chars256to511") # «.vgafont_via_outbs» (to "vgafont_via_outbs") # «.glyphs512» (to "glyphs512") # «.RH_consolechar_bug» (to "RH_consolechar_bug") # «.hardware-fonts» (to "hardware-fonts") # «.vt-palette» (to "vt-palette") # «.ttyname» (to "ttyname") # «.non-utf-8» (to "non-utf-8") ##### # # Setting the bell duration and frequency # 2000nov22 # ##### # «setbell» (to ".setbell") # Note to greppers: beep -> setbell. # (find-man "4 console_codes" "frequency") # (find-zshnode "Shell Builtin Commands" "\necho") # (find-node "(bash)Bash Builtins" "`echo'") # (find-kfile "drivers/char/console.c" "default bell parameters: 750HZ, 1/8th of a second") # (find-k26file "drivers/char/vt.c" "default bell parameters: 750HZ, 1/8th of a second") # # (find-angg ".zshrc.local.mcgill" "setbell") function setbell () { echo -ne "\033[10;$1]\033[11;$2]" } sleep 1; echo -e '\a' setbell 600 200 sleep 1; echo -e '\a' setbell 22 40 sleep 1; echo -e '\a' # Default: setbell 750 125 sleep 1; echo -e '\a' # ##### # # less # 2000jun22 # ##### # «less» (to ".less") # (find-angg ".zshrc" "less") # (find-man "less" "--RAW-CONTROL-CHARS") # (find-man "less" "LESSCHARDEF") # ascii 8bcccbcc18b95.b # dos 8bcccbcc12bc5b95.b. # ebcdic 5bc6bcc7bcc41b.9b7.9b5.b..8b6.10b6.b9.7b # 9.8b8.17b3.3b9.7b9.8b8.6b10.b.b.b. # iso8859 8bcccbcc18b95.33b. # koi8-r 8bcccbcc18b95.b128. # latin1 8bcccbcc18b95.33b. # next 8bcccbcc18b95.bb125.bb perl -e ' for ($i = 0; $i <= 255; $i++) { printf "%d: %c\n", $i, $i } ' > /tmp/chars # Display all chars except CSI and the obvious control chars: LESSCHARDEF=8bcccbcc18b95.b27.b99.b \ less -f /tmp/chars # (find-angg ".zshrc" "less") # Linux VTs are slow at backward scrolling; use -C. # (eeman "less" "-C") # (eeman "less" "-c") # Give nice prompts at the last line: # (eeman "less" "-M") ##### # # The scripts about Screen were moved to screen.e. # ##### # «screen» (to ".screen") # «screen_demo_eeg2» (to ".screen_demo_eeg2") # «screen-src» (to ".screen-src") # «screen-src-gdbk» (to ".screen-src-gdbk") # (find-es "screen" "screen") # (find-es "screen" "screen_demo_eeg2") # (find-es "screen" "screen-src") # (find-es "screen" "screen-src-gdbk") ##### # # console-tools source (for 512-chars fonts) # ##### # «console-tools-src» (to ".console-tools-src") pdsc /big/slinks2/dists/slink/main/source/utils/console-tools_1998.08.11-3.dsc cd /usr/src/console-tools-1998.08.11/ # (code-c-d "ct" "/usr/src/console-tools-1998.08.11/") # (find-ctfile "") # (find-ctfile "screenfonttools/showcfont.c") # (find-ctfile "screenfonttools/consolechars.c") # (find-ctfile "NEWS") # (find-fline "/usr/include/linux/kd.h" "PIO_FONTX") # (find-k2file "drivers/char/vt.c" "PIO_FONTX") kglimpse kd.h ##### # # svgatextmode # 2000jul24 # ##### # «svgatextmode» (to ".svgatextmode") # (find-status "svgatextmode") # (find-vldifile "svgatextmode.list") # (find-vldifile "" "svgatextmode.list") # (find-vldifile "svgatextmode.preinst") # (find-vldifile "svgatextmode.postinst") # (find-vldifile "svgatextmode.prerm") # (find-vldifile "svgatextmode.postrm") # (find-fline "/usr/doc/svgatextmode/") # (find-fline "/usr/doc/svgatextmode/PROBLEMS_QuickStart") # (eeman "SVGATextMode") # (find-fline "/etc/init.d/svgatextmode") # (find-fline "/etc/TextConfig") # Use one of the two commands/pipelines below to create a new TextConfig... # (find-fline "~/replace/TextConfig.sis6326-angg") # cp -v /etc/TextConfig ~/replace/TextConfig.sis6326-angg cat /etc/TextConfig \ | egrep -v '^[ ]*(#|$)' \ | tee ~/replace/TextConfig.sis6326-angg SVGATextMode SVGATextMode -t ~/replace/TextConfig.sis6326-angg # (find-fline "~/replace/TextConfig.sis6326-angg" "SiS") # Modes grabbed with grabmode at angg with a SiS6326, 2000jul24: # #"132x44" 39.985 1056 1104 1280 1312 396 404 406 436 -Hsync +Vsync font 8x9 # 30.476kHz/69.90Hz #"132x49" 39.985 1056 1104 1280 1312 392 404 406 436 -Hsync +Vsync font 8x8 # 30.476kHz/69.90Hz SVGATextMode -t ~/replace/TextConfig.sis6326-angg -f sis132x44 ###### # # svgatextmode (and kbrequest) # 99aug31 # ###### # «svgatextmode0» (to ".svgatextmode0") # (find-man "5 inittab" "kbrequest") # (find-es "k22" "sysrq") # (find-fline "~/bin/mystm") apti svgatextmode cd /etc/rc2.d/ mv -v S40svgatextmode _S40svgatextmode cd /etc/rc3.d/ mv -v S40svgatextmode _S40svgatextmode cd /etc/rcS.d/ mv -v S60svgatextmode _S60svgatextmode # (find-vldifile "svgatextmode.list") # (find-fline "/usr/doc/svgatextmode/") # (find-fline "/usr/doc/svgatextmode/FAQ.gz" 850) # (find-fline "/etc/TextConfig") # (eeman "SVGATextMode") egrep -v '^[ ]*(#|$)' /etc/TextConfig SVGATextMode -s | egrep '^[0-9]' | sort | l # This is to make a local TextConfig file: # (find-fline "~/replace/TextConfig.angg") (cat <<'---' # (find-es "console" "svgatextmode") ChipSet "S3" ClockChip "S3Virge" DefaultMode "80x50x9" --- grep '^"' /etc/TextConfig) \ > ~/replace/TextConfig.angg # Testing it: SVGATextMode -t ~/replace/TextConfig.angg # To call it on "kbrequest"s: # (find-fline "/home/root/bin/kbrequest") # (find-fline "/etc/inittab" "kbrequest") # svgatextmode is a big package, but we need very little from it; only # /sbin/SVGATextMode, if we don't care about grabmode, /etc/TextConfig # or docs. # strace -f -o ~/s \ SVGATextMode -t ~/replace/TextConfig.angg getstrings < ~/s # (find-fline "~/replace/TextConfig.angg") SVGATextMode -t ~/replace/TextConfig.angg 132x50x8 SVGATextMode -t ~/replace/TextConfig.angg 160x60 SVGATextMode -t ~/replace/TextConfig.angg 160x60x9 # 160 cols: dangerous? ##### # # What process gets the kbrequest? # ##### # «kbrequest_who» (to ".kbrequest_who") # (find-fline "/etc/inittab" "kbrequest") # (find-fline "/home/root/bin/kbrequest") # (find-man "5 inittab" "kbrequest") # (find-vldifile "sysvinit.list") # (find-fline "/usr/doc/sysvinit/") pdsc /big/slinks1/dists/slink/main/source/base/sysvinit_2.76-3.dsc cd /usr/src/sysvinit-2.76/ # (find-fline "/usr/src/sysvinit-2.76/src/init.c" "kbrequest") # (find-fline "/usr/src/sysvinit-2.76/src/init.c" "Tell kbrequest") # (find-fline "/usr/src/sysvinit-2.76/src/init.c" "!= KBREQUEST") SVGATextMode 80x50x8 pdsc /big/slinks1/dists/slink/main/source/base/kbd_0.96a-14.dsc cd /usr/src/kbd-0.96a/ agrep -i spawn $(find *) ##### # # kbrequest - how it works # 2005oct17 # ##### # «kbrequest-innards» (to ".kbrequest-innards") # (find-fline "/etc/inittab" ":ctrlaltdel:") # (find-fline "/etc/inittab" "kbrequest") # (find-man "5 inittab" "ctrlaltdel") # (find-man "5 inittab" "kbrequest") # (eek "M-h M-d sysvinit") # http://www.piterpunk.hpg.ig.com.br/dicas.html#23 # http://lists.debian.org/debian-user/1998/09/msg02246.html # http://ftp.debian.org/debian/pool/main/s/sysvinit/sysvinit_2.86.ds1-4.dsc # http://ftp.debian.org/debian/pool/main/s/sysvinit/sysvinit_2.86.ds1-4.diff.gz # http://ftp.debian.org/debian/pool/main/s/sysvinit/sysvinit_2.86.ds1.orig.tar.gz # rm -Rv ~/usrc/sysvinit-2.86.ds1/ mkdir ~/usrc/sysvinit-2.86.ds1/ cd ~/usrc/ dpkg-source -x \ $S/http/ftp.debian.org/debian/pool/main/s/sysvinit/sysvinit_2.86.ds1-4.dsc rm -v sysvinit_2.86.ds1.orig.tar.gz cd ~/usrc/sysvinit-2.86.ds1/ # # (code-c-d "sysvinit" "~/usrc/sysvinit-2.86.ds1/") # (find-sysvinitfile "") # (find-sysvinitsh "grep -i kbrequest $(find *)") # (find-sysvinitfile "src/init.c" "kbrequest") # (find-sysvinitfile "src/init.h" "#define KBREQUEST") # (find-sh "dumpkeys" "Boot") # (find-sh "dumpkeys" "KP_Period" "Boot") # (find-sh "dumpkeys" "Remove" "Boot") # (find-sh "dumpkeys" "KeyboardSignal") # (find-sysvinitfile "src/init.c" "We got signaled.") # (find-sysvinitfile "src/init.c" "got SIGINT" "ctrlaltdel entry") # (find-sysvinitfile "src/init.c" "got SIGWINCH" "kbrequest entry") # (find-fline "/usr/include/linux/keyboard.h") # (find-fline "/usr/include/linux/keyboard.h" "#define K_BOOT") # (find-k26file "drivers/char/keyboard.c") # (find-k26file "drivers/char/keyboard.c" "ctrl_alt_del()") # (find-k26file "drivers/char/keyboard.c" "fn_boot_it,") # (find-k26file "drivers/char/console_macros.h") ##### # # kbd repeat rate and delay: measuring # 2000apr10 # ##### # «kbdrate_measuring» (to ".kbdrate_measuring") # (find-es "expect" "expect_bugs_potato") expect -c ' while 1 { set usecs [lindex [time {expect -re .}] 0] set msecs [expr $usecs/1000.0] send_user "$msecs " } ' ##### # # kbd repeat rate and delay: setting (low level) # 2000apr09 # ##### # «kbdrate_setting» (to ".kbdrate_setting") pdsc $SDEBIAN/dists/potato/main/source/base/util-linux_2.10f-3.dsc cd /usr/src/util-linux-2.10f/ debian/rules binary |& tee odrb # (code-c-d "ul" "/usr/src/util-linux-2.10f/") # (find-ulfile "") # (find-ulfile "debian/rules") # (find-ulfile "odrb") # (find-ulfile "odrb" "kbdrate") # (find-ulfile "Makefile") # (find-ulfile "kbd/") # (find-ulfile "kbd/kbdrate.c") pdsc $SDEBIAN/dists/potato/main/source/base/util-linux_2.10f-3.dsc cd /usr/src/util-linux-2.10f/ ./configure |& tee oc cd /usr/src/util-linux-2.10f/kbd/ cc -c -pipe -m486 -fomit-frame-pointer -I. -I../lib -Wall \ -DNCH=1 -DSBINDIR=\"/sbin\" -DUSRSBINDIR=\"/usr/sbin\" \ -DLOGDIR=\"/var/log\" -DVARPATH=\"/var\" \ -DLOCALEDIR=\"/usr/share/locale\" \ -g kbdrate.c -o kbdrate.o cc kbdrate.o -o kbdrate # gdb jumps source lines with -O2, let's try without optimization # Urgh, the "print"s are showing wrong values. Bug # (gdb "gdb /usr/src/util-linux-2.10f/kbd/kbdrate") # br main set args -r 30.0 -d 250 run # # (find-fline "~/MTA/vtutilsh.c" "_setkbdrepeat") # Why the "sleep(1)"? # Maybe because it's harder to program sub-second delays. # I changed it to 100ms, that seems more than enough. # (find-fline "~/MTA/vtutilsh.c" "Tcl_Sleep") # (find-fline "~/.zshrc" "setkbdrepeat") cd ~/MTA/ make ./vtutil setkbdrepeat 0 100 cd ~/MTA/ ./vtutil setkbdrepeat 128 1000 cd ~/MTA/ ./vtutil setkbdrepeat 127 1000 kbdrate -r 30.0 -d 250 # (find-es "forth" "pforth-custom0") # (find-k22file "arch/i386/boot/setup.S" "keyboard repeat rate") # (find-fline "/usr/src/util-linux-2.10f/kbd/kbdrate.c" "valid_rates[]") # (find-k22file "drivers/char/keyboard.c") # (find-k22file "drivers/char/pc_keyb.c") ##### # # Reducing my keymaps by using includes # 2001feb01 # ##### # «reduce_my_keymap» (to ".reduce_my_keymap") # (find-fline "/usr/share/keymaps/i386/qwerty/") # rm -Rv /tmp/keymaps/ mkdir /tmp/keymaps/ cp -v /usr/share/keymaps/i386/qwerty/defkeymap* /tmp/keymaps/ cd /tmp/keymaps/ gzip -dv * # cd /tmp/keymaps/ # tkdiff -b defkeymap.kmap ~/MTA/defkeymap850b.map diff -b defkeymap.kmap ~/MTA/defkeymap850b.map \ | grep -v 'compose' | grep '^>' \ | tee ~/o # shift alt keycode 12 = Meta_underscore # shift alt keycode 13 = Meta_plus # shift alt keycode 39 = Meta_colon # control keycode 51 = Control_q # shift control alt keycode 59 = Console_13 # shift alt keycode 59 = Console_13 # shift control alt keycode 60 = Console_14 # shift alt keycode 60 = Console_14 # alt keycode 103 = Spawn_Console # cd /tmp/keymaps/ cat defkeymap.kmap | grep ^keycode | grep -v '= *$' # ##### # # libggi # 2000jul24 # ##### # (find-fline "/usr/doc/svgatextmode/No_more_display_corruption") grep-status -P ggi | tee ~/o # (find-fline "~/o") xserver-ggi libggi-samples libggi-target-aa libggi-target-fbdev libggi-target-svgalib libggi-target-vcsa libggi-target-x libggi2 libggidemos libgii0 ##### # # Avoiding a terminal reset on vtutil's "open /dev/tty" # 00jan28 # ##### # «avoiding_tty_reset» (to ".avoiding_tty_reset") # (find-fline "~/MTA/vtutil" "file0") # loadkeys and setfont issue ioctls to the terminal: dmissing loadkeys dmissing setfont # (find-vldifile "kbd.list") # (find-fline "/usr/doc/kbd/") # (find-vldifile "console-tools.list") # (find-fline "/usr/doc/console-tools/") # (find-vldifile "kbd-compat.list") # (find-fline "/usr/doc/kbd-compat/") slinksgrep kbd slinksgrep console-tools slinksgrep kbd-compat pdsc /big/slinks1/dists/slink/main/source/base/kbd_0.96a-14.dsc # (code-c-d "kbd" "/usr/src/kbd-0.96a/") # (find-kbdfile "") # (find-kbdfile "src/") # (find-kbdfile "consolefonts/" "cp850") # (find-fline "/big/slinks1/dists/slink/main/source/base/kbd_0.96a-14.diff.gz") ##### # # framebuffer # 2000may07 # ##### # «framebuffer» (to ".framebuffer") # Note: I gave up using framebuffers very soon and I haven't even # learned how to choose vts of fbs at boot time (much less after # booting). cd /big/potato/ find * | grep fb Pgrepp m/libggi/ |& l apti xserver-fbdev fbset # (find-vldifile "xserver-fbdev.list") # (find-fline "/usr/share/doc/xserver-fbdev/") # (find-fline "/usr/share/doc/xserver-fbdev/README.Debian") # (eeman "1 openvt") # (eeman "8 fbset") # (find-vldifile "fbset.list") # (find-fline "/usr/doc/fbset/") # (eeman "5 fb.modes") # (eeman "8 modeline2fb") # (eeman "8 fbset") # (eeman "8 con2fbmap") # (find-vldifile "lg-issue36.list") # (find-fline "/usr/doc/lg-issue36/") # (find-fline "/usr/share/doc/lg/issue36/ayers.html") lynx /usr/share/doc/lg/issue36/ayers.html # (find-k22file "drivers/video/") # (find-k22file "Documentation/fb/") # (find-k22file "Documentation/fb/vesafb.txt") # (find-k22file "Documentation/fb/vesafb.txt" "hex values") # (find-k22file "Documentation/Configure.help" "CONFIG_FB\n") # It seems that that CONFIG_FB is only offered at the kernel config # when we ask for the alpha drivers... # (find-k22file ".config" "CONFIG_FB") # (find-vldifile "lilo.list") # (find-fline "/usr/doc/lilo/") # But the prompts given by "vga=ask" aren't giving me any choices of # graphic modes. What am I doing wrong? # (find-k22file "arch/i386/boot/video.S" "Scan for video modes") # (find-htetfile "Framebuffer-HOWTO.txt.gz") # (find-htetfile "Framebuffer-HOWTO.txt.gz" " 4.1.") # (find-htetfile "Framebuffer-HOWTO.txt.gz" "s.\n\n 17.") # (find-htetfile "Framebuffer-HOWTO.txt.gz" "S3 Virge") # (find-fline "$S/ftp/ccssu.crimea.ua/pub/linux/kernel/v2.2/unofficial/s3new.diff.gz") lynx http://www.tahallah.demon.co.uk/programming/prog.html # (find-vldifile "libggi-target-fbdev.list") # (find-fline "/usr/doc/libggi-target-fbdev/") ##### # # Toggling the effect of "meta" # 2000oct22 # ##### # «toggle_meta» (to ".toggle_meta") # cd /usr/src/linux-2.2/drivers/char/ agrep -i meta *.[ch] # # (find-k22file "drivers/char/console.c") # (find-k22file "drivers/char/console_macros.h") # (find-k22file "drivers/char/keyboard.c") # (find-k22file "drivers/char/keyboard.c" "if (vc_kbd_mode(kbd, VC_META))") # (find-k22file "drivers/char/vt.c" "case KDSKBMETA:") # (eeman "4 console_ioctl" "KDGKBMETA") # (eeman "xterm" "eightBitInput") # (eeman "xvt" "-8") # (eeman "rxvt" "meta") ##### # # understanding the ABNT2 keymap # 2000nov08 # ##### # «abnt2-keymap» (to ".abnt2-keymap") # (eeman "1 loadkeys") # (eeman "5 keymaps") # (eeman "5 keymaps" "strings as usual") # (eeman "5 keymaps" "compose as usual for") # dumpkeys --long-info | tee ~/o # # (find-fline "~/o") # (find-fline "~/o" "dead_tilde") # (find-fline "/usr/share/keymaps/i386/") # (find-fline "/usr/share/keymaps/i386/qwerty/br-abnt2.kmap.gz") # (find-fline "/usr/share/keymaps/i386/include/") # (find-fline "/usr/share/keymaps/i386/include/qwerty-layout.inc.gz") # (find-fline "/usr/share/keymaps/i386/include/linux-with-alt-and-altgr.inc.gz") ##### # # console (512 chars fonts) # ##### # «console512» (to ".console512") apti console-tools console-tools-libs # (find-status "console-tools") # (find-vldifile "console-tools.list") # (find-udfile "console-tools/") # (find-status "console-tools-libs") # (find-vldifile "console-tools-libs.list") # (find-fline "/usr/doc/console-tools-libs/") # (find-fline "/usr/doc/console-tools-libs/file-formats/") # (find-fline "/usr/doc/console-tools-libs/examples/unicode/") cd /usr/doc/console-tools-libs/examples/unicode/ unicode_start zcat utflist.cp437.gz | l -r unicode_stop # (find-vldifile "kbd-data.list") # (find-fline "/usr/doc/kbd-data/") # (find-fline "/usr/share/consolefonts/") cd /tmp/ cp -v /usr/share/consolefonts/{cp,def}* . gzip -dv *.gz consolechars -f cp850-8x8 # can't /usr/share/consolefonts/ apti kbd kbd-data # (find-fline "/usr/doc/kbd/") # (find-fline "/usr/doc/kbd-data/") # (find-fline "/usr/doc/kbd-data/console.docs.gz") # (find-vldifile "kbd.list") # (find-vldifile "kbd-data.list") cd /usr/doc/console-tools-libs/examples/unicode/ setfont setfont -u def.uni echo -e '\033%8' ls -N echo -e '\033%@' strace-to ~/s consolechars -H 8 -f ~/replace/ega1.8 strace-to ~/s consolechars -H 8 -f cp850-8x8 strace-to ~/s consolechars -H 8 -f ~/replace/ega1.8 strace-to ~/s consolechars -H 8 -f cp850-8x8 apti console-tools console-tools-libs cd /tmp/ cp -v /usr/share/consolefonts/Goha* . gzip -dv *.gz consolechars -f Goha-16 showcfont consolechars -f Goha-12 showcfont i=50; while [[ $i -ge 1 ]]; do echo $i; i=$[$i-1]; done apti kbd ##### # # How do I generate chars on the range 256..511? # ##### # «chars256to511» (to ".chars256to511") # showcfont only works right if the output is a terminal, so we use # expect to capture the output from it. expect -c ' spawn showcfont match_max 6000 expect -n eof set channel [open "~/o512" w] puts -nonewline $channel $expect_out(buffer) close $channel ' l -fr ~/o512 # (find-fline "~/o512") # (hexl-find-file "~/o512") # Trick: ef 80..87 80..bf proc vtchar {n} { format "%c%c%c" 239 [expr "(($n & (511 & -63)) / 64) + 128"] \ [expr "($n & 63) + 128"] } puts "\033%G[vtchar 64]\033%@" /usr/share/consolefonts/Goha-14.psf.gz /usr/share/consolefonts/Goha-16.psf.gz /usr/share/consolefonts/GohaClassic-12.psf.gz /usr/share/consolefonts/GohaClassic-14.psf.gz /usr/share/consolefonts/GohaClassic-16.psf.gz # (find-slink "console-tools") # (find-slink "console-tools-data") # (find-slink "kbd") man chvt man deallocvt man fgconsole man kbd_mode man psfaddtable man psfgettable man setleds man setmetamode man showkey man unicode_start man unicode_stop man vt-is-UTF8 man showcfont man charset man codepage man fix_bs_and_del man mk_modmap man screendump man dumpkeys man loadkeys man psfstriptable cd /tmp/ psfgettable Goha-12* ##### # # Changing the VGA font via "outb"s # 2000oct22 # ##### # «vgafont_via_outbs» (to ".vgafont_via_outbs") # cd /usr/src/linux-2.2/drivers/char/ agrep -i font *.[ch] |& l -S # cd /usr/src/linux-2.2/drivers/video/ agrep -i font *.[ch] |& l -S # # (find-k22file "drivers/video/vgacon.c") # (find-k22file "drivers/video/vgacon.c" " * PIO_FONT support.") # (find-k22file "drivers/video/Makefile" "vgacon") # (find-k22file "Documentation/Configure.help" "CONFIG_VGA_CONSOLE") # (find-fline "~/k22conf" "CONFIG_VGA_CONSOLE") # (find-k22file "drivers/char/console.c" "con_font_op") ##### # # 512 char fonts in emacs # ##### # «glyphs512» (to ".glyphs512") ; (find-man "4 console_codes" "ESC % @") ; (find-man "4 console_codes" "ESC % G") ; (find-man "7 charsets" "1110xxxx") ; Nome errado; é utf8, não unichar (acho). ; Aliás, eu roubei essa encodificação do showcfont. (defun unicharhi (n) (format "\e%%G\xef%c%c\e%%@" (+ 128 (logand (lsh n -6) 7)) (+ 128 (logand n 63)))) (defun setglyph (charn color fontpos) (let ((s (cond ((>= fontpos 255) (unicharhi fontpos)) ((< fontpos 32) (unicharhi fontpos)) (t (format "%c" fontpos))))) (if color (setq s (format "\e[%sm%s\e[m" color s))) (aset standard-display-table charn (vector (create-glyph s))))) (defun setglyphs (a b c &rest r) (setglyph a b c) (if r (apply 'setglyph r))) % partial, "I; nabla, ??. % (setglyphs ?Ï nil 277 ?¿ nil 278) (setglyph 5 "1;44" 13) (setglyph ?Ï nil 277) ; partial; "I (setglyph ?¿ nil 278) ; nabla; ?? (ascstr 128 255) # (find-fline "~/MTA/newtest.tcl" "set hchars") # (find-es "console" "chars256to511") # (find-node "(elisp)Bitwise Operations") # (find-node "(elisp)Conditionals") # (logand 511 -63) # (logand (lsh n -4) # Truque: ef 80..87 80..bf proc vtchar {n} { format "%c%c%c" 239 [expr "(($n & (511 & -63)) / 64) + 128"] \ [expr "($n & 63) + 128"] } puts "\033%G[vtchar 64]\033%@" # (find-man "4 console") # (find-man "4 console_ioctl") # (find-man "4 console_ioctls") # (find-man "4 console_codes") # (find-man "4 console_codes" "ECMA-48 Set Graphics Rendition") ; Um problema: quando a gente vai pro X e volta a gente sempre perde a ; informação de que os vcs estavam em modo de 512 chars. (ascstr 0 32) ##### # # ncurses source # 2001may23 # ##### # «ncurses-src» (to ".ncurses-src") dmissingp libncurses5-dbg # pdsc $SDEBIAN/dists/potato/main/source/libs/ncurses_5.0-6.dsc cd /usr/src/ncurses-5.0/ debian/rules binary |& tee odrb # (code-c-d "ncurs" "/usr/src/ncurses-5.0/") # (code-c-d "ncursdoc" "/usr/doc/libncurses5-dev/") # (find-ncursfile "") # (find-ncursfile "odrb") # (find-ncursfile "debian/libncurses5-dbg/usr/lib/") # (find-ncursfile "README" "_g.a") # (find-ncursfile "lib/") # ##### # # ncurses: running the demos # 2000dec06 # ##### # «ncurses_demos» (to ".ncurses_demos") grep-status -P curses | awk '/Package/ { print $2 }' | sort # (find-status "libncurses5-dev") # (find-vldifile "libncurses5-dev.list") # (find-fline "/usr/doc/libncurses5-dev/") # rm -Rv /tmp/curs5/ mkdir /tmp/curs5/ cd /usr/share/doc/libncurses5-dev/ cp -diPpvR * /tmp/curs5/ cd /tmp/curs5/ mv examples/* . rmdir examples gzip -dv *.gz #  cd /tmp/curs5/ sh configure |& tee oc sed 's/@ \?echo [^;]\+; //' < Makefile > Makefile-v make -f Makefile-v |& tee om for i in *.c; do gcc -I. -DHAVE_CONFIG_H -E $i > $(basename $i .c).E; done find * -perm +111 # (find-fline "/tmp/curs5/") # (find-fline "/tmp/curs5/Makefile") # (find-fline "/tmp/curs5/Makefile-v") # (find-fline "/tmp/curs5/om") # (find-fline "/tmp/curs5/rain.c") # (find-fline "/tmp/curs5/rain.E" "(wmove(") # cd /tmp/curs5/ ./blue ./bs ./cardfile ./ditto ./dots ./filter ./firework ./firstlast ./gdc ./hanoi ./hashtest ./keynames ./knight ./lrtest ./ncurses ./newdemo ./rain ./tclock ./testaddch ./testcurs ./testscanw ./view view.c ./worm ./xmas # # (gdbk-gdb t "/tmp/curs5/" "dots" t) show env TERM set env TERM linux # tbr main tbr dots.c:107 run # # (find-status "libncurses5") # (find-vldifile "libncurses5.list") # (find-fline "/usr/doc/libncurses5/") # (find-status "ncurses-base") # (find-status "ncurses-bin") # (find-status "ncurses-term") # (find-vldifile "ncurses-base.list") # (find-vldifile "ncurses-bin.list") # (find-vldifile "ncurses-term.list") ##### # # ncurses: first programs # 2000dec07 # ##### # «ncurses_1» (to ".ncurses_1") # (find-htetfile "NCURSES-Programming-HOWTO.gz") # (eeman "3ncurses waddch") # (eeman "3ncurses waddnstr") # (eeman "3ncurses wmove") # (eeman "3ncurses refresh") # (find-fline "/tmp/curs5/blue.c") # (find-fline "/tmp/curs5/blue.c" " PC_COLORS") # (find-fline "/usr/include/ncurses.h" "#define A_ALTCHARSET") # (find-ncursdocfile "ncurses-intro.doc.gz") # (find-ncursdocfile "ncurses-intro.doc.gz" " initscr()") # (find-ncursdocfile "ncurses-intro.doc.gz" " Tuning for Speed") # (find-ncursdocfile "ncurses-intro.doc.gz" "ACS_") # (find-fline "/usr/include/curses.h") # (find-fline "/usr/include/ncurses.h") # cd /tmp/curs5/ l +/refresh $(agrep -l refresh *.c) # # (eev-bounded) cd /tmp/ cat > test.c <<'---' #include #include main(int argc, char **argv) { int i, j, c, color; initscr(); for(i=0; i<16; ++i) { for(j=0; j<16; ++j) { c=i*16+j; mvaddch(i+2, j+8, c | A_ALTCHARSET ); } } if (argv[1][0]&1) refresh(); if (argv[1][0]&2) fflush(stdout); endwin(); } --- gcc -lcurses -g -o test test.c # strace -o ~/s ./test 0 read; ./test 0 read; ./test 1 read; ./test 2 read; ./test 3 # # (find-status "libncurses5-dev") # (find-vldifile "libncurses5-dev.list") # (find-udfile "libncurses5-dev/") # links /usr/share/doc/libncurses5-dev/html/index.html # ##### # # keys as char sequences # 2001may26 # ##### # «key_charseq» (to ".key_charseq") # (find-fline "/etc/") # (code-c-d "termcap" "" "/usr/src/bash-2.04/lib/termcap/grot/termcap") # (find-termcapnode "") # (eeman "5 terminfo" "These are the string capabilities:") # (eeman "5 terminfo" "key_") # (find-termcapnode "Interrogate" "`tgetstr'") # (find-termcapnode "Capabilities" "keypad") # (find-termcapnode "Keypad") # (find-ncursdocfile "") # (find-ncursdocfile "ncurses-intro.doc.gz") How do I get the sequence of characters corresponding to a key in a given terminal? For example, in "man 5 terminfo" there's a line in a table saying "key_down kcud1 kd down-arrow key", but # (eeman "5 terminfo" "key_") # (eeman "1 tput") tput kcud1 | hexdump -c ltrace tput kcud1 # (to "ncurses_demos") # (find-fline "/tmp/curs5/") # (find-fline "/tmp/curs5/om" "keynames") # rm -Rv /tmp/keynames/ mkdir /tmp/keynames/ cd /usr/doc/libncurses5-dev/examples/ cp -v test.priv.h keynames.c /tmp/keynames/ cd /tmp/keynames/ gcc -o keynames -I. -lcurses -g keynames.c # (find-fline "/tmp/keynames/") # cd /tmp/keynames/ # (eeman "tgetstr") cat > tgetstr.c <<'---' #include #include int main(int argc, char **argv) { char buffer[100], *p=buffer; printf("%s -> %s\n", argv[1], tgetstr(argv[1], &p)); return 0; } --- gcc -o tgetstr -lncurses tgetstr.c # gcc -o tgetstr -L/usr/src/ncurses-5.0/lib -lncurses_g -g tgetstr.c ./tgetstr kcud1 ./tgetstr kd ./tgetstr key_down # cd /tmp/keynames/ # Oops, impossible to link this against ncurses_g... it uses curses! # (find-node "(gcc)Link Options" "`-L'") # vfwstrace-to ~/s \ gcc -o keynames_g -I. -L/usr/src/ncurses-5.0/lib -lncurses_g -g keynames.c # # (find-ncursfile "lib/") # (find-fline "/usr/doc/libncurses5-dev/examples/") # (find-fline "/tmp/curs5/") # (find-fline "/tmp/curs5/om") ##### # # living with consolechar's bug in RedHat 6.1 # 2001feb06 # ##### # «RH_consolechar_bug» (to ".RH_consolechar_bug") # The problem is that on the RH6.1's of my university "consolechars" # (version 1999.03.02, kernel 2.2.12-20) does not adjust the number of # lines of characters in the screen to compensate for fonts with # smaller of taller chars; by stracing it I discovered that its main # ioctl calls were: # # 2250 ioctl(4, KDGKBTYPE, 0xbfffdc17) = 0 # 2250 ioctl(4, 0x4b72, 0xbfffdae0) = 0 # # Where 0x4B72 is KDFONTOP, which according to the changelog in # console-tools is the "new way" of doing things; it is not mentioned # in the console_ioctl{,s} manpages, though. Ugh. # # (find-fline "/usr/include/linux/") # (find-fline "/usr/include/linux/kd.h" "KDFONTOP 0x4B72") # (find-fline "/usr/doc/console-tools/changelog.gz") # (eeman "console_ioctl") # (eeman "console_ioctls") # # (find-k22file "drivers/char/vt.c" "case KDFONTOP:") # (find-k22file "drivers/char/console.c" "\nint con_font_op") # (find-k22file "include/linux/kd.h" "struct console_font_op {") # # What is even stranger is that on my Potato box consolechars works by # using the same ioctls (maybe with different parameters), and it # changes the number of screen lines correctly. # # I know that things used to work when I used PIO_FONTX, so I'll write # a quick C program to use as a workaround... # The program became an independent C file: # (find-angg "MTA/pio_fontx.c") # (find-angg "MTA/vtutilsh.c" "setfont") # (find-node "(gcc)Macro Varargs") # (find-node "(libc)Error Messages") # (find-fline "/usr/doc/console-tools/file-formats/psf" "psf_header =") # (find-fline "/usr/include/") # cd ~/MTA/ rm -v pio_fontx pio_fontx.o make pio_fontx psfs # # (find-angg "TH/Files.tcl" "do_not_translate") # (find-angg "MTA/Makefile" "psfs") cd ~/MTA/ ./pio_fontx ega1.16.psf read ./pio_fontx math1.8.psf # ##### # # default hardware fonts # 2004sep30 # ##### # «hardware-fonts» (to ".hardware-fonts") # (find-angg "vtutil4/") # (find-angg "vtutil4/piofontx.c") # (find-man "4 console_ioctl" " PIO_FONTRESET") # (find-man "8 consolechars") # Where's the code that deals with the "vga=1" in the kernel command line? # Where's the vesa call? # Are there hardware fonts in several sizes? #### # # vt palette # 2004apr18 # #### # «vt-palette» (to ".vt-palette") # (find-man "4 console_codes" "ESC ] P nrrggbb: set palette") # (find-k24file "drivers/char/console.c" "palette escape sequence") # (find-k24file "drivers/char/console.c" "reset palette") # (find-k24file "drivers/char/console.c" "default_red") # (find-vtutil4file "vtfontlib.lua" "vcsa_colors =") # (find-man "4 console_codes" "set red foreground") # function vtsetred () { echo -ne '\033]P1'$1 } function vtsetblue () { echo -ne '\033]P4'$1 } function vtresetpalette () { echo -ne '\033]R' } function vtshowcolors () { echo -ne ' \033[0;30m black \033[1;30m Black \033[0;31m red \033[1;31m Red \033[0;32m green \033[1;32m Green \033[0;33m brown \033[1;33m Brown \033[0;34m blue \033[1;34m Blue \033[0;35m magenta \033[1;35m Magenta \033[0;36m cyan \033[1;36m Cyan \033[0;37m white \033[1;37m White \033[0m' } # clear vtshowcolors # (find-k24file "drivers/char/console.c" "default_red") # Try new intensities for red (VT color 1 - default aa0000) read; echo -ne '\033]P1ff0000' read; echo -ne '\033]P1ee0000' read; echo -ne '\033]P1dd0000' read; echo -ne '\033]P1cc0000' read; echo -ne '\033]P1bb0000' read; echo -ne '\033]R' # clear # (find-k24file "drivers/char/console.c" "default_blue") # Try new intensities for blue (VT color 4 - default 0000aa) vtshowcolors read; echo -ne '\033]P40000ff' read; echo -ne '\033]P41111ff' read; echo -ne '\033]P42222ff' read; echo -ne '\033]P40000ee' read; echo -ne '\033]P40000dd' read; echo -ne '\033]P40000cc' read; echo -ne '\033]P40000bb' read; echo -ne '\033]R' # clear vtshowcolors read; echo -ne '\033]R'; # reset the palette read; echo -ne '\033]P1ff0000'; # fix the red read; echo -ne '\033]P42222ff'; # fix the blue read; echo -ne '\033]Pc7777ff'; # fix the bright blue # ##### # # ttyname # 2004oct02 # ##### # «ttyname» (to ".ttyname") # (find-angg "bin/ttyname.c") # (find-man "3 ttyname") # (find-node "(libc)Is It a Terminal" "char * ttyname") # eegcc <<<'int main() { printf("%s\n", ttyname(0)); return 0; }' eec echo | eec # ##### # # Recent Debian VTs start in UTF-8 mode by default # 2008apr06 # ##### # «non-utf-8» (to ".non-utf-8") # (find-man "4 console_codes" "UTF-8 mode") # (find-man "4 console_codes" "ESC % @" "Select default") # (find-man "4 console_codes" "ESC % G" "Select UTF-8") # (find-luamanualw3m "#2.1" "\\ddd") # # Compare the two modes: lua51 -e ' pc = function (...) for i=1,#arg do if type(arg[i]) == "string" then printf("%s", arg[i]) end if type(arg[i]) == "number" then printf("%c", arg[i]) end if type(arg[i]) == "table" then for j=arg[i][1],arg[i][2] do pc(j) end end end end pc("Hello! ", 64, " foo", 10) pc("Default: ", 27, "%@", {160,254}, "\n") pc("UTF-8: ", 27, "%G", {160,254}, "\n") -- for i=160,254 do pc(i) end pc("\nFoo!\n") ' # #### # # the default keymap in debian systems # 2004apr15 # #### # (find-progoutput "dpkg -l") # (find-status "console-common") # (find-vldifile "console-common.list") # (find-vldifile "console-common.config") # (find-fline "/usr/doc/console-common/") dpkg-reconfigure console-common # (find-vldifile "" "console-common.list") # (find-fline "/usr/sbin/install-keymap") # (find-man "8 install-keymap") # (find-fline "/usr/share/console/getkmapchoice.pl") # (find-fline "/usr/share/console/ps2-to-riscpc") # (find-fline "/usr/share/console/lists/keymaps") # (find-fline "/usr/share/doc/console-common/TODO") # (find-fline "/usr/share/doc/console-common/copyright") # (find-fline "/usr/share/doc/console-common/changelog.gz") # (find-fline "/etc/console/") # (find-fline "/etc/init.d/keymap.sh") # (find-status "console-data") # (find-vldifile "console-data.list") # (find-fline "/usr/doc/console-data/") # (find-status "console-tools") # (find-vldifile "console-tools.list") # (find-fline "/usr/doc/console-tools/") console-tools- http://www.xs4all.nl/~hanb/configs/dot-screenrc # Local Variables: # coding: raw-text-unix # ee-delimiter-hash: "\n#\n" # ee-delimiter-percent: "\n%\n" # ee-anchor-format: "«%s»" # End: