dwm-custom/docs.awk

54 lines
1.1 KiB
Awk
Executable file

#!/bin/awk -f
BEGINFILE {
printf "# DWM Keybinds\n"
printf "|Keybind|Function|\n"
printf "|-|-|\n"
}
/^#define MODKEY/ {
modkey = $3
}
/START KEYBINDS/ {
in_keybinds = 1
next
}
/END KEYBINDS/ {
in_keybinds = 0
next
}
in_keybinds {
if (/^[[:space:]]*$/ || /^[[:space:]]*\/(\/|\*)/ || /^[[:space:]]*TAGKEYS\(/) {
next
}
if (match($0, /\{[[:space:]]*([^,]+)/, modifier_matches)) {
modifier = modifier_matches[1]
} else {
modifier = "0"
}
gsub(/MODKEY/, modkey, modifier)
gsub(/\|/, "+", modifier)
gsub(/Mod1Mask/, "Alt", modifier)
gsub(/Mod4Mask/, "Super", modifier)
gsub(/ControlMask/, "Control", modifier)
gsub(/ShiftMask/, "Shift", modifier)
match($0, /[[:space:]]*XK_([^,]+)/, key_matches)
key = key_matches[1]
key = toupper(substr(key,1,1)) substr(key,2)
match($0, /,[[:space:]]*\/\/[[:space:]]*(.+)$/, comment_matches)
comment = comment_matches[1]
comment = toupper(substr(comment,1,1)) substr(comment,2)
printf "|"
if (modifier != "0") {
printf "%s + ", modifier
}
printf "%s|%s|\n", key, comment
}