#!/bin/sh # # Generate the keymap-actions.txt and keymap-defaults.txt for elinkskeys(5) # manpage. # # Copyright (c) Jonas Fonseca , 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 -E "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