Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
#######
#
# 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.
# An introduction to eev can be found here:
#
#   (find-eev-quick-intro)
#   http://angg.twu.net/eev-intros/find-eev-quick-intro.html
#
# 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 <http://angg.twu.net/e/console.e>
#           or at <http://angg.twu.net/e/console.e.html>.
#        See also <http://angg.twu.net/emacs.html>,
#                 <http://angg.twu.net/.emacs[.html]>,
#                 <http://angg.twu.net/.zshrc[.html]>,
#                 <http://angg.twu.net/escripts.html>,
#             and <http://angg.twu.net/>.
#
#######




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")
# «.fbset»		(to "fbset")
# «.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")
# «.default-keymap»	(to "default-keymap")
# «.vtutil4»		(to "vtutil4")

# «.terminfo»		(to "terminfo")
# «.tput»		(to "tput")
# «.ansi.lua»		(to "ansi.lua")
# «.TERM»		(to "TERM")
# «.xon-xoff»		(to "xon-xoff")
# «.ansi-color-apply»	(to "ansi-color-apply")




#####
#
# 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/")



#####
#
# fbset
# 2023mar04
#
#####

# «fbset»  (to ".fbset")
# (find-status   "fbset")
# (find-vldifile "fbset.list")
# (find-udfile   "fbset/")
# (find-fline "~/LOGS/2023mar04.emacs" "fbset -i")
# (find-fline "~/eev-videos/")

cd ~/eev-videos/
mpv --vo=fb 2021projeto-de-ensino.mp4

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
sudo dpkg-reconfigure console-setup

[vo] Video output fb note found!




#####
#
# 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 <curses.h>
#include <stdio.h>
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 "")
# (find-man "5 terminfo" "These are the string capabilities:")
# (find-man "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 <curses.h>
#include <term.h>
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
#
####

# «default-keymap»  (to ".default-keymap")
# (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-




#####
#
# vtutil4
# 2008nov04
#
#####

# «vtutil4»  (to ".vtutil4")
# (find-vtutil4 "")
# (find-vtutil4     "Makefile")
# (find-vtutil4file "Makefile" "ega1.8.pctoiso.modify.8")
# (find-vtutil4file "Makefile" "%.8.pctoiso.modify.8:")
# (find-vtutil4     "vtutil51.lua")
# (find-vtutil4     "vtfontlib.lua")
# (find-vtutil4file "vtfontlib.lua" "Modifyfont =")
# (find-vtutil4     "mathchars.lua")

# (find-tkdiff "~/vtutil4/ega1.8.pctoiso.modify.8.grid" "~/vtutil4/ega1.8.pctoiso.8.grid")

* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
cd ~/vtutil4/ && lua51 -e 'dofile "vtutil51.lua"' -i
= MIMAGES
PP(keys(MIMAGES))
PP(MIMAGES)
PP(mathcharstuff# (find-vtutil4     "mathchars.lua")



+--------+--------+--------+--------+--------+--------+
|o     o | oooooo |        |        |        |        |
|o     o |      o |  ooo   | o   o  |  ooo   |        |
| o   o  |      o | o      | o   o  | o   o  |   oo   |
| ooooo  |   oooo | oooo   | o   o  | o   o  |  o  o  |
|  o o   |      o | o      | o   o  | o   o  |  o  o  |
|  o o   |      o |  ooo   |  ooo   | o   o  |   oo   |
|   o    | oooooo |        |        |        |        |
|        |        |        |        |        |        |
+--------+--------+--------+--------+--------+--------+


# (find-vtutil4file "vtutil51.lua")




#####
#
# terminfo
# 2012feb11
#
#####

# «terminfo»  (to ".terminfo")
# (find-esgrep "grep -niH -e  terminfo *.e")
# (find-man "5 terminfo" "These are the string capabilities:")
# (find-man "5 terminfo" "cursor_invisible")
# (find-man "5 terminfo" "key_")
# (find-man "1 tic")

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
# (find-sh "infocmp xterm" "civis=")

# (find-fline "/lib/terminfo/x/xterm")


# (find-man "stty")




#####
#
# Tput
# 2012oct27
#
#####

# «tput» (to ".tput")
# (find-es "x" "xterm-colors")
# (find-angg "eev/video1.sh")
# http://en.wikipedia.org/wiki/Tput
# (find-man "1 tput")
# (find-man "5 terminfo")
# (find-man "5 terminfo" "setaf")
# (find-man "5 terminfo" "setab")
# (find-man "5 terminfo" "COLOR_BLACK")
# (find-man "5 terminfo" "bold")
# (find-man "xterm")

* (eepitch-ansiterm)
* (eepitch-kill)
* (eepitch-ansiterm)

RED=$(tput setaf 1)
BLACK=$(tput setaf 0)
echo "a $RED bc $BLACK de"
echo "a${RED}bc${BLACK}de"

# Normal and standout colors
NC=$(tput setaf 0; tput setab 7)
SC=$(tput setaf 3; tput setab 1)
echo "Hello ${SC}world${NC}!"
"

echo $(tput setaf 3; tput setab 1)Hello$(tput reset)
echo $(tput setaf 1)Hello$(tput setaf 0)


#####
#
# ansi.lua
# 2014mar06
#
#####

# «ansi.lua» (to ".ansi.lua")
# (find-man "1 less")
# (find-man "1 less" "-R or --RAW-CONTROL-CHARS" "ANSI")
# (find-man "4 console_codes" "ESC % @")
# (find-man "4 console_codes" "ECMA-48 Set Graphics Rendition")
# (find-man "4 console_codes" "ECMA-48 Set Graphics Rendition" "31")

#*
# (eev-bounded)
cat > /tmp/a.lua <<'%%%'
inp = io.read()
e = function (s) return "\27["..s.."m" end
A = {[""]=e"0", r=e"31"}
f = function (a)
    local b = a:sub(2,-2)
    local c = assert(A[b], "not found: "..a)
    return c
    -- return "\27["..c.."m"
  end
out = inp:gsub("({[!-~]-})", f)
print(out)
%%%

cat > /tmp/a.txt <<'%%%'
foo{r}bar{}poo
%%%

lua51 /tmp/a.lua < /tmp/a.txt |& l -R

#*
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
# (find-man "xterm")
xterm -bg black -fg white





#####
#
# TERM
# 2020may09
#
#####

# «TERM» (to ".TERM")
# https://github.com/mintty/mintty/issues/881
# https://www.facebook.com/notes/daniel-colascione/term-is-terminally-broken/10154219967001102/
# https://iterm2.com/misc/TerminalFeaturesCandidates1.pdf
# https://lists.gnu.org/archive/html/emacs-devel/2020-05/msg00958.html



#####
#
# XON/XOFF, i.e., C-s and C-q, and other C-keys
# 2024mar29
#
#####

# «xon-xoff»  (to ".xon-xoff")
# (find-man "1 xterm")
# (find-man "1 xterm" "\nSEE ALSO")
# (find-man "1 xterm" "control/D (used as an end of file in many shells)")
# (find-man "1 xterm" "XON / XOFF keys (control/S and" "control/Q)")
# (find-enode "Shell Mode" "C-c C-c"  "comint-interrupt-subjob")
# (find-enode "Shell Mode" "C-c C-\\" "comint-quit-subjob")

# (find-man "sh")
# (find-man "dash")
# (find-man "expect")



#####
#
# ansi-color-apply
# 2024apr13
#
#####

# «ansi-color-apply»  (to ".ansi-color-apply")
# (find-man "4 console_codes" "ECMA-48 Set Graphics Rendition")
# (find-efunctiondescr 'ansi-color-apply)
# (find-efunction      'ansi-color-apply)
# (find-estring (ansi-color-apply "a \e[31m b \e[0m c"))








# https://unix.stackexchange.com/questions/49779/can-i-change-the-font-of-the-text-mode-console
# (find-fline "/etc/default/console-setup")
# (find-man "5 console-setup")
# (find-man "1 setupcon")
# (find-fline "/etc/default/console-setup")
/etc/default/console-setup

# (find-fline "/usr/share/consolefonts/" "Lat15-Fixed16")
setfont -C /dev/tty5 /usr/share/consolefonts/Lat15-Fixed16

setfont -C /dev/tty5 /usr/share/consolefonts/Lat15-Terminus12x6.psf.gz

setupcon -h
setupcon -f
setupcon -f --print-commands-only
# (find-fline "/usr/share/consolefonts/")
# (find-fline "/usr/share/consolefonts/Lat15-Fixed16.psf.gz")

file /usr/share/consolefonts/Lat15-Fixed16.psf.gz
zcat /usr/share/consolefonts/Lat15-Fixed16.psf.gz > /tmp/foo.psf
# (find-fline "/tmp/foo.psf")

# (find-status   "console-setup-linux")
# (find-vldifile "console-setup-linux.list")
# (find-udfile   "console-setup-linux/")
# (find-apt-get-source-links "console-setup-linux")
# (find-fline "/tmp/d/")
# (code-c-d "consolesetup" "/tmp/d/console-setup-1.205/")
# (find-consolesetupfile "")
# (find-consolesetupsh "find * | sort")
# (find-consolesetupsh "find * | sort | grep raw")
# (find-consolesetupfile "Fonts/")
# (find-consolesetupfile "Fonts/" "Lat15-VGA8.raw")
# (find-consolesetupfile "Fonts/Lat15-VGA8.raw")
# (find-fline "/tmp/d/osourceb")

# (find-man "1 bdf2psf")
# (find-status   "bdf2psf")
# (find-vldifile "bdf2psf.list")
# (find-udfile   "bdf2psf/")







http://www.xs4all.nl/~hanb/configs/dot-screenrc

https://github.com/8l/fbui

https://www.ethanheilman.com/x/28/index.html The Terminal Escape Sequences Ocean is Deep and Dark: Debugging a Virtual Terminal

https://github.com/susam/pcface PC Face is a collection of programmer-friendly resources that allow drawing CP437 characters on a graphical canvas
https://bert.org/2023/02/27/recreating-ansi-art-from-a-screenshot/
https://owengage.com/writing/2023-04-08-getting-the-ctrl-d/
https://news.ycombinator.com/item?id=35502925 Getting the ^D (owengage.com)

https://news.ycombinator.com/item?id=42179541 Sequin: A powerful little tool for inspecting ANSI escape sequences (github.com/charmbracelet)





#  Local Variables:
#  coding:               utf-8-unix
#  End: