From 5af0ce9e61c10cadc2b59729fdbd7b26d3810826 Mon Sep 17 00:00:00 2001 From: Pierre Hyvernat Date: Mon, 7 Jun 2021 11:02:38 +0200 Subject: [PATCH] disable echoing of keystroke during animations --- bin/progress_bar | 8 +++++--- bin/progress_bar.sh | 2 +- start.sh | 24 ++++++++++++++++-------- 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/bin/progress_bar b/bin/progress_bar index ed8e6bdf..423f9424 100755 --- a/bin/progress_bar +++ b/bin/progress_bar @@ -181,9 +181,10 @@ init_data() { animation() { # Hide cursor. - tput civis 2> /dev/null + tput civis 2>/dev/null + stty -echo 2>/dev/null # the additional \b\b\b \b\b\b is used to erase the possible ^C - trap 'tput cnorm 2> /dev/null;printf "\b\b\b \b\b\b$POST";exit 1' INT TERM QUIT HUP + trap 'tput cnorm 2>/dev/null; stty echo 2>/dev/null; printf "\b\b\b \b\b\b$POST";exit 1' INT TERM QUIT HUP # Print initial message. printf "$MSG" @@ -236,7 +237,8 @@ EOS then animation printf "$POST" - tput cnorm 2> /dev/null + tput cnorm 2>/dev/null + stty echo 2>/dev/null fi } diff --git a/bin/progress_bar.sh b/bin/progress_bar.sh index ebd8f902..9a522988 100755 --- a/bin/progress_bar.sh +++ b/bin/progress_bar.sh @@ -38,6 +38,6 @@ else rm -f "$stderr_log" unset stderr_log design wait $_PID - unset $_PID + unset _PID set -m fi diff --git a/start.sh b/start.sh index fc8ccf61..34943cc7 100755 --- a/start.sh +++ b/start.sh @@ -135,9 +135,6 @@ _confirm_passport() { } progress() { - # hide cursor - tput civis 2> /dev/null - trap "tput cnorm 2> /dev/null;echo;exit 1" INT TERM QUIT if [ -z "$progress_I" ] then progress_filename=$GSH_ROOT/lib/ascii-art/titlescreen @@ -145,26 +142,31 @@ progress() { local size=$(wc -c "$progress_filename" | awk '{print $1}') progress_delta=$((size/N + 1)) # head -c$((progress_delta - 1)) $progress_filename => not POSIX compliant - dd if="$progress_filename" bs="$progress_delta" count=1 2> /dev/null + dd if="$progress_filename" bs="$progress_delta" count=1 2>/dev/null progress_I=1 else # tail -c+$((progress_I * progress_delta)) $progress_filename | head -c$progress_delta => not POSIX compliant - dd if="$progress_filename" bs="$progress_delta" skip="$progress_I" count=1 2> /dev/null + dd if="$progress_filename" bs="$progress_delta" skip="$progress_I" count=1 2>/dev/null progress_I=$((progress_I+1)) fi } progress_finish() { # tail -c+$((progress_I*progress_delta)) $progress_filename => not POSIX compliant - dd if="$progress_filename" bs="$progress_delta" skip="$progress_I" 2> /dev/null + dd if="$progress_filename" bs="$progress_delta" skip="$progress_I" 2>/dev/null unset progress_filename progress_delta progress_I - # show cursor - tput cnorm 2> /dev/null + # show cursor and enable echo of keystrokes } init_gsh() { + # hide cursor and disable echoing of keystrokes + tput civis 2>/dev/null + trap "tput cnorm 2>/dev/null; stty echo 2>/dev/null; echo; exit 1" INT TERM QUIT + + stty -echo + ADMIN_HASH='b88968dc60b003b9c188cc503a457101b4087109' # default for 'gsh' # message when data from a previous play is found. We can either @@ -385,6 +387,8 @@ Aborting.")" [ "$GSH_VERBOSE_DEBUG" != true ] && echo "[DONE]" >&2 else progress_finish + # show cursor back + tput cnorm 2>/dev/null echo printf "$(gettext "Press Enter to continue.")" stty -echo 2>/dev/null # ignore errors, in case input comes from a redirection @@ -393,6 +397,10 @@ Aborting.")" clear fi unset MISSION_DIR MISSION_NB + + # show cursor and re-enable echoing of keystrokes + tput cnorm 2>/dev/null + stty echo 2>/dev/null } #######################################################################