Skip to content

Instantly share code, notes, and snippets.

@blacknon
Last active January 30, 2023 02:08
Show Gist options
  • Save blacknon/fbc83a01b92e2970a68cf1644b2fcb51 to your computer and use it in GitHub Desktop.
Save blacknon/fbc83a01b92e2970a68cf1644b2fcb51 to your computer and use it in GitHub Desktop.
bash scriptでキー入力を受け付けて処理する検証スクリプト
#!/bin/bash
# IFSを改行のみにする
IFS=$'\n'
while read -rsn1 KEY; do
case "${KEY}" in
# バックスペース・デリートの場合
$'\ch'|$'\b'|$'\x7F')
echo "Backspace";;
# スペースの場合
' ')
echo "Space";;
# エスケープシーケンスをハンドリング
$'\x1b')
# フラッシュで読み取りを行い、ABCD(上下右左)におうじて出力をする
read -rsn1 -t 0.1 TMP_KEY
if [[ "${TMP_KEY}" == "[" ]]; then
read -rsn1 -t 0.1 TMP_KEY
case "${TMP_KEY}" in
"A") echo "Up";;
"B") echo "Down";;
"C") echo "Right";;
"D") echo "Left";;
esac
fi
# Flush "stdin" with 0.1 sec timeout.
read -rsn5 -t 0.1
;;
# 空行(Enterキー)の場合はbreak
'' )
break;;
# デフォルトの場合、単にechoで出力
*)
echo "${KEY}"|cat -A
;;
esac
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment