mirror of
https://github.com/rkd77/elinks.git
synced 2025-02-02 15:09:23 -05:00
Quote character keybindings to workaround unescaped (resulting to invisible) dots in elinkskeys(5). (cherry picked from commit 3de420d72f480f01172d052d9bf9812157cf23f3)
136 lines
3.6 KiB
Bash
Executable File
136 lines
3.6 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# Generate the keymap-actions.txt and keymap-defaults.txt for elinkskeys(5)
|
|
# manpage.
|
|
#
|
|
# Copyright (c) Jonas Fonseca <fonseca@diku.dk>, 2005-2006
|
|
#
|
|
|
|
KBDBIND=$1
|
|
CONFIGDIR=$(dirname "$KBDBIND")
|
|
OUTPUT=$2
|
|
|
|
test -d "$CONFIGDIR" || exit
|
|
|
|
print_title()
|
|
{
|
|
echo
|
|
echo "$1" | tr 'a-z' 'A-Z'
|
|
echo "$1" | sed 's/[^~]/~/g'
|
|
echo
|
|
}
|
|
|
|
print_keymap_actions()
|
|
{
|
|
keymap="$1"
|
|
|
|
print_title "$keymap ACTIONS"
|
|
|
|
echo 'ifdef::backend-xhtml11[]'
|
|
echo '`----------------------------------`----------------------------------------------------------------------------'
|
|
echo 'Action Description'
|
|
echo '----------------------------------------------------------------------------------------------------------------'
|
|
# open-link-in-new-tab-in-background
|
|
echo 'endif::backend-xhtml11[]'
|
|
|
|
grep ACTION_ "$CONFIGDIR/actions-$keymap.inc" \
|
|
| while read entry;
|
|
do
|
|
action=$(echo "$entry" | sed 's/ACTION_([^,]*, "\([^"]*\)".*/\1/')
|
|
caption=$(echo "$entry" | sed 's/.*N__("\(.*\)").*/\1/')
|
|
|
|
[ "$action" = "none" ] && continue
|
|
[ "$action" = " *scripting-function*" ] && continue
|
|
|
|
echo 'ifdef::backend-docbook[]'
|
|
echo "$action::"
|
|
echo " $caption."
|
|
echo
|
|
echo 'endif::backend-docbook[]'
|
|
echo 'ifdef::backend-xhtml11[]'
|
|
printf "%-34s %s\n" "$action" "$caption"
|
|
echo 'endif::backend-xhtml11[]'
|
|
done
|
|
|
|
echo 'ifdef::backend-xhtml11[]'
|
|
echo '---------------------------------------------------------------------------------------------------------------'
|
|
echo 'endif::backend-xhtml11[]'
|
|
}
|
|
|
|
print_keymap_defaults()
|
|
{
|
|
keymap="$1"
|
|
KEYMAP=$(echo $1 | tr '[a-z]' '[A-Z]')
|
|
|
|
print_title "$keymap KEYS"
|
|
|
|
echo 'ifdef::backend-xhtml11[]'
|
|
echo '`-----------`-------------------------------------------------------------------------------'
|
|
echo 'Key Description (Action)'
|
|
echo '--------------------------------------------------------------------------------------------'
|
|
# Ctrl-Insert
|
|
echo 'endif::backend-xhtml11[]'
|
|
|
|
grep ACT_$KEYMAP $KBDBIND | grep '^[[:space:]]{' | grep -v '{ "' \
|
|
| while read entry
|
|
do
|
|
entry=$(echo "$entry" | sed 's/.*{ { //')
|
|
key=$(echo "$entry" | sed "s/\(KBD_[^,]*\|'.*'\),.*/\1/")
|
|
action=$(echo "$entry" | sed "s/.*,.*\(ACT_$KEYMAP\)_\([A-Z_]*\).*/\2/")
|
|
# If there are backslashed quotes, remove the backslashes.
|
|
# (This is not needed in print_keymap_actions because
|
|
# there the "read" command consumes the backslashes.)
|
|
action=$(grep " $action," "$CONFIGDIR/actions-$keymap.inc" \
|
|
| sed "s/.*\"\([^\"]*\)\".*N__(\"\(.*\)\").*/\2 ('\1')/;s/\\\\\"/\"/g")
|
|
q=
|
|
|
|
case "$key" in
|
|
KBD_*)
|
|
key=$(grep $key $KBDBIND \
|
|
| grep '^[[:space:]]{ "' \
|
|
| sed 's/.*"\([^"]*\)".*/\1/')
|
|
;;
|
|
"' '")
|
|
key="Space"
|
|
;;
|
|
*)
|
|
key=$(echo "$key" | sed "s/^'\(.*\)'$/\1/" \
|
|
| sed "s/'/{squote}/")
|
|
q='"'
|
|
;;
|
|
esac
|
|
|
|
case "$entry" in
|
|
*KBD_MOD_ALT*) modifier="Alt-" ;;
|
|
*KBD_MOD_CTRL*) modifier="Ctrl-" ;;
|
|
*KBD_MOD_SHIFT*) modifier="Shift-" ;;
|
|
*) modifier="" ;;
|
|
esac
|
|
|
|
echo 'ifdef::backend-docbook[]'
|
|
echo "'$modifier$q$key$q'::"
|
|
echo " $action"
|
|
echo
|
|
echo 'endif::backend-docbook[]'
|
|
echo 'ifdef::backend-xhtml11[]'
|
|
printf "%-11s %s\n" "$modifier$key" "$action"
|
|
echo 'endif::backend-xhtml11[]'
|
|
done
|
|
|
|
echo 'ifdef::backend-xhtml11[]'
|
|
echo '--------------------------------------------------------------------------------------------'
|
|
echo 'endif::backend-xhtml11[]'
|
|
|
|
}
|
|
|
|
print_keymap_doc=
|
|
|
|
case "$OUTPUT" in
|
|
*default*) print_keymap_doc="print_keymap_defaults" ;;
|
|
*action*) print_keymap_doc="print_keymap_actions" ;;
|
|
esac
|
|
|
|
$print_keymap_doc main
|
|
$print_keymap_doc edit
|
|
$print_keymap_doc menu
|