मैं एक बहुत ही सरल बैश स्क्रिप्ट करने की कोशिश कर रहा हूं जो उपस्थिति में चेकबॉक्स के व्यवहार को अनुकरण करता है! मैं इसे कुछ विकल्प दिखाना चाहता हूं और बाएं या दाएं तीर कुंजियों की कुंजी प्रेस के अनुसार कर्सर को अगले चेकबॉक्स में ले जाना चाहता हूं। मैं पहले से ही तीर कुंजियों का पता लगाने के लिए रीड और Ansii एस्केप अनुक्रमों का उपयोग करके ऐसा करने में कामयाब रहा हूं और मैं कर्सर को स्थानांतरित करने के लिए ट्यूट का उपयोग करता हूं।बैश स्क्रिप्ट के साथ चेकबॉक्स
इसके साथ मेरी समस्या यह है कि मुझे दबाए जाने के लिए एक निश्चित अक्षर (उदाहरण के लिए एक्स) पढ़ने की आवश्यकता है और फिर एक और कार्रवाई करें। लेकिन मैं इस कुंजी प्रेस का पता कैसे लगा सकता हूं और साथ ही यह पता लगा सकता हूं कि एक तीर कुंजी दबाया जा रहा है या नहीं ??
ansii कोडों का पता लगाने के लिए मुझे 3 अक्षरों और एक्स वर्ण ("चयन" की कुंजी) के साथ पढ़ने की आवश्यकता है, मुझे केवल एक को पढ़ने की जरूरत है, मैं 3 अक्षरों को कैसे पढ़ सकता हूं और साथ ही एक ही पढ़ सकता हूं?
इसके अलावा मैं कुछ बनाने की कोशिश कर रहा हूं ताकि उपयोगकर्ता बाएं या दायां तीर कुंजी या एक्स कुंजी दबा सकें लेकिन यदि वह किसी अन्य कुंजी को दबाता है, तो कुछ भी नहीं होना चाहिए! है सबसे उत्तम कोड कभी
#!/bin/bash
## Here I just print in the screen the "form" with the "checkboxes"
function screen_info(){
clear
cat <<EOF
/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_
||
|| 1[ ] 2[ ] 3[ ]
||
#############################
EOF
}
## This function detects the arrow keys and moves the cursor
function arrows(){
## I use ANSII escape sequences to detect the arrow keys
left_arrow=$'\x1b\x5b\x44' #leftuierda
right_arrow=$'\x1b\x5b\x43' #rightecha
just_x_key=""
## With tput I move the cursor accordingly
cursor_x=14
cursor_y=3
tput cup $cursor_y $cursor_x
while [ -z "$just_x_key" -o "$just_x_key" != "$just_x_key" ]; do
read -s -n3 key
while [ `expr length "$key"` -ne 3 ]; do
key=""
read -s -n3 key
break
done
case "$key" in
$left_arrow)
if [ $cursor_x -gt 14 ]; then
cursor_x=`expr $cursor_x - 8`
fi
tput cup $cursor_y $cursor_x
#This is supposed to be a simple condition detecting the x key pressed wich I want to trigger something... But how to read a single character to this condition and 3 characters at the same time if the user presses the arrow key ???? =/
#read -s just_x_key
#if [ $just_x_key == x ]; then
# echo X
# tput cup 7 15
# echo "YOU PRESSED THE RIGHT KEY!!! =D"
#fi
;;
$right_arrow)
if [ $cursor_x -lt 28 ]; then
cursor_x=`expr $cursor_x + 8`
fi
tput cup $cursor_y $cursor_x
#read -s just_x_key
#if [ $just_x_key == x ]; then
# echo X
# tput cup 7 15
# echo "YOU PRESSED THE RIGHT KEY!!! =D"
#fi
;;
esac
done
exit $?
}
#EXECUTION
#=========
## I just call the functions!
screen_info
arrows
हाँ मैं जानता हूँ कि, ऐसा नहीं है, लेकिन मैं सीखने के लिए कोशिश कर रहा हूँ:
मैं इस इतनी दूर किया है। सुझावों की बहुत सराहना की जाएगी।
क्या आपने अभी तक 'चयन' कथन को देखा है? यह बिल्कुल चेकबॉक्स नहीं है, लेकिन यह एक क्रमांकित मेनू है। – SiegeX
@ घेराबंदी हां मैं इस आदेश के बारे में जानता हूं और इसे आजमाया, हालांकि मुझे कीबोर्ड पर कुछ कुंजी स्वीकार करने के लिए मजबूर करने का कोई तरीका नहीं मिला। मैं चाहता हूं कि मेरी छोटी लिपि उपयोगकर्ता-सुरक्षित-सबूत हो = पी मेरा मतलब है कि उपयोगकर्ता कुछ भी टाइप नहीं कर सकता! चुनिंदा होने के बावजूद यदि यह उपयोगी है, तो विकल्प 1, 2, 3 हैं, तो उपयोगकर्ता idfsbhisdolasokjcmnh टाइप कर सकता है और मैं चाहता हूं कि उन्हें केवल वांछित टाइप करने के लिए मजबूर किया जाए और शेष कीबोर्ड "लॉक" हो। आपके उत्तर के लिए धन्यवाद;) – Metafaniel