如何判断读入字符是回车键还是方向键
时间:2005-03-25 来源:li2002
现在,我们很容易用dd从终端读入一个字符,但如何判断一些特殊情形呢?在键盘上按下你需要判断的键,如上箭头,回车后,系统提示:^[[A: not found
^[[A便是我们判断的依据,脚本示例如下:
#!/bin/ksh
get_char()
{
SAVEDSTTY=`stty -g`
stty -echo
stty raw
dd if=/dev/tty bs=1 count=1 2> /dev/null
stty -raw
stty echo
stty $SAVEDSTTY
}
c=`get_char`
case "$c" in
'^M' ) echo "enter" ;;
'^[' ) echo "possible arrow keys"
secondchar=`get_char`
thirdchar=`get_char`
case "$thirdchar" in
'A' ) echo UP ;;
'B' ) echo DOWN ;;
'D' ) echo LEFT ;;
'C' ) echo RIGHT ;;
esac
esac
大家也可以直接改造get_char,使之能够直接返回ESC序列.
^[[A便是我们判断的依据,脚本示例如下:
#!/bin/ksh
get_char()
{
SAVEDSTTY=`stty -g`
stty -echo
stty raw
dd if=/dev/tty bs=1 count=1 2> /dev/null
stty -raw
stty echo
stty $SAVEDSTTY
}
c=`get_char`
case "$c" in
'^M' ) echo "enter" ;;
'^[' ) echo "possible arrow keys"
secondchar=`get_char`
thirdchar=`get_char`
case "$thirdchar" in
'A' ) echo UP ;;
'B' ) echo DOWN ;;
'D' ) echo LEFT ;;
'C' ) echo RIGHT ;;
esac
esac
大家也可以直接改造get_char,使之能够直接返回ESC序列.
相关阅读 更多 +