ao-mud is a spellbook of well-commented atomic bash scripts that each do one thing. we are building semantic building blocks for an autonomously-evolving digital spellcasting language.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
1.4 KiB

#!/usr/bin/env sh
# This magical spell captures and processes key presses.
# Use it to capture key presses from the terminal and determine which key was pressed.
# todo: Tab key not distinguished from Enter (\t case does not work)
# Define the function to handle key presses
handle_key() {
# Read a single character from the terminal
read -s -n1 key
#echo $key > ./invisible_character # debug
# Check the value of the key
case "$key" in
# Enter key
$'\t')
echo "tab"
;;
$'\n')
echo "enter"
;;
'') # also fires for Tab key
echo "enter"
;;
'')
echo "backspace"
;;
$'\b')
echo "backspace"
;;
# Escape sequence, could be any number of keys depending on next character
$'\e')
read -rsn2 -t 0.1 key
case "$key" in
'')
echo 'escape'
;;
# Up arrow key
$'[A')
echo "up"
;;
# Down arrow key
$'[B')
echo "down"
;;
# Right arrow key
$'[C')
echo "right"
;;
# Left arrow key
$'[D')
echo "left"
;;
$'[3')
echo "delete"
;;
*)
echo "escaped key: $key"
;;
esac
;;
# Any other key
*)
echo "$key"
# od -c <<< $key # debug
;;
esac
}
# Check if the script is being executed or sourced, if executed then call the function
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
handle_key
fi