উত্তর:
কিভাবে টার্মিনাল কনফিগার করা উপর নির্ভর করে, টাইপিং Alt+Keyটাইপ মত হল Escএবং Keyতাই এটি চট্টগ্রাম সিটি কর্পোরেশন চরিত্র (ওরফে পাঠায়, ক্রমানুসারে কী \e
বা ^[
বা \033
) অক্ষর বা যে টিপে উপর পাঠিয়ে অক্ষরের ক্রম দ্বারা অনুসরণ Key।
চাপ দেওয়ার পরে Up, বেশিরভাগ টার্মিনাল এমুলেটরগুলি তিনটি অক্ষর প্রেরণ করে \033[A
বা \033OA
তারা অ্যাপ্লিকেশন কীপ্যাড মোডে রয়েছে কিনা তা নির্ভর করে send
প্রথমটি পলায়ন ক্রমের সাথে সামঞ্জস্য করে যা টার্মিনালে আউটপুট এলে কার্সারটিকে উপরে সরিয়ে দেয়। যদি তুমি করো:
printf '\nfoo\033[Abar\n\n'
আপনি এক সারি আপ bar
পরে লিখিত দেখতে পাবেন foo
। যদি তুমি করো:
stty -echoctl; tput rmkx; read foo
আপনি দেখতে পাবেন যে তীর কীগুলি কার্সারটিকে প্রায় ঘুরিয়ে দেয়।
যখন কোনও অ্যাপ্লিকেশন টার্মিনাল থেকে অক্ষরের ক্রমিক পছন্দ করে zsh
বা vi
পড়ে, এটি এটিকে "আপ" ক্রিয়া হিসাবে ব্যাখ্যা করে, কারণ এটি টার্মিনো ডাটাবেস ( kcuu1
দক্ষতা) থেকে জানে যে এটি চাপানোর পরে প্রেরণ করা ক্রম Up।
এখন, জন্য Alt-Up, মত কিছু টার্মিনাল rxvt
মত তার ডেরাইভেটিভস eterm
পাঠান \033
পলায়নের ক্রম দ্বারা অনুসরণ Up(যে \033\033[A
বা \033\033OA
), এবং মত কিছু অন্যদের xterm
বা gnome-terminal
কী যারা ধরনের জন্য পৃথক পালাবার ক্রম যখন মত সমন্বয় কী এর মাধ্যমে ব্যবহার করা আছে Alt, Shift, Ctrl।
ঐ সাধারণত পাঠাব \033[1;3A
উপর Alt-Up।
টার্মিনালে প্রেরণ করা হলে, এই ক্রমটি কার্সারটিকে উপরে সরিয়ে দেয় (দ্বিতীয় প্যারামিটার (3) উপেক্ষা করা হবে)। কোনও সম্পর্কিত কিপ্যাড কী নেই, সুতরাং এটি অ্যাপ্লিকেশন কীপ্যাড মোডেAlt-Up বা বাইরে পাঠানো একই ক্রম ।
এখন তা হোক \033\033[A
বা না \033[1;3A
, অনেকগুলি অ্যাপ্লিকেশন জানে না যে এই সিকোয়েন্সগুলি কী। টার্মিনো ডাটাবেস তাদের সাহায্য করবে না, কারণ এমন কোনও সামর্থ্য নেই যা এই কী সংমিশ্রণগুলি কী কী অক্ষর প্রেরণ করে তা নির্ধারণ করে।
তারা এই ক্রমটি ব্যাখ্যা করার জন্য যথাসাধ্য চেষ্টা করবে। bash
উদাহরণস্বরূপ \033[1;3
একটি পালানোর ক্রম হিসাবে ব্যাখ্যা করবে , এটি সম্পর্কে কিছুই জানে না, তাই কিছুই অনুসরণ করে না A
। zsh
, কোনও পরিচিত ম্যাচিং চরিত্রের ক্রম নেই তা খুঁজে পাওয়া মাত্রই পড়া বন্ধ করবে। কোনও পালানোর ক্রম নেই যে এটি জানে যে এটি দিয়ে শুরু হয় \033[1
তাই এটি এড়িয়ে যাবে এবং বাকীটি পড়বে: ;3A
এবং লাইন সম্পাদকটিতে এটি সন্নিবেশ করান।
মত অনেক অ্যাপ্লিকেশন vi
, zsh
বা readline
মত ভিত্তিক বেশী gdb
বা bash
(যদিও হুঁশিয়ার bash
ব্যবহার সম্পর্কে একটি পরিবর্তিত সংস্করণ readline
) আপনি অক্ষরের কোনো ক্রম জন্য বাইন্ডিং যোগ করার জন্য অনুমতি দেয়।
উদাহরণস্বরূপ, মধ্যে zsh
, আপনি বেঁধে যাওয়ার কথা ভাবতে পারেন Alt-Up, Alt-Downমত:
bindkey '\e[1;3A' history-beginning-search-backward
bindkey '\e[1;3B' history-beginning-search-forward
এগুলি হ'ল পিছনে এবং কমান্ড লাইনের জন্য ইতিহাস অনুসন্ধান করে যা কার্সারের বর্তমান অবস্থানের মতো বর্তমানের মতো শুরু হয় যা পূর্ববর্তী কমান্ডগুলি পুনরায় স্মরণ করতে বেশ কার্যকর।
আপনি আপনার কীবোর্ডের ইনপুট কোডগুলি ফেরত দিতে Crtl+ ব্যবহার করতে পারেন v। আপনি নির্দেশক তীরচিহ্নগুলি জন্য এটা করতে পারেন, আপনি পাবেন [[D^
, [[C^
, [[A^
, এবং [[B
মান। Alt+ তীর কীগুলির জন্য কোনও ডিফল্ট বাইন্ডিং নেই , সুতরাং দেখে মনে হচ্ছে যে সম্পাদিত ক্রিয়াটি কেবলমাত্র চিঠি কোড মুদ্রণ করা। হুওওয়ার, আপনি যদি পঠন পাঠাগারটির লাইব্রেরি কনফিগারেশন ফাইলের স্থানীয় সংস্করণ তৈরি করেন:
$ cp /etc/inputrc ~/.inputrc
এবং একটি লাইন যুক্ত করুন:
"\e[1;3C": "sometexthere"
+ এর [1;3C
ইনপুট কোডটি কোথায় (আপনি এটি + শর্টকাট ব্যবহারের আগের মতোই পেতে পারেন ) এবং আপনার টার্মিনালটি পুনরায় আরম্ভ করুন তারপরে + শর্টকাট আপনাকে "কিছুটা পাঠ্য" পাঠ্য ফিরিয়ে দেবে এবং অন্যান্য + তীর শর্টকাটগুলি অক্ষরগুলি ফিরে আসা বন্ধ করবে।Alt→CrtlvCrtl→Alt
পরিবর্তে পাঠ্য আপনি http://www.gnu.org/software/bash/manual/html_node/Bindable-Readline-Commands.html# বাইন্ডেবল- রিডলাইন- কম্যান্ডস এর মতো একটি বাইন্ডেবল কমান্ডটি পাস করতে পারেন
"\e[1;3C": unix-line-discard
Crtl+ u(লাইন মুছে ফেলুন) এর মতো একই প্রভাব রাখতে ।
এখানে আরও তথ্য: http://cnswww.cns.cwru.edu/php/chet/readline/readline.html
Altকী প্রায়ই একটি হিসাবে ব্যবহার করা হয় মেটা পরিবর্তক। কার্সার- এবং ফাংশন-কীগুলি বিশেষ কী হিসাবে উল্লেখ করা হয় যেহেতু তারা একাধিক অক্ষর প্রেরণ করতে পারে - এবং যে অক্ষরগুলি প্রেরণ করা হয় তাদের পরিবর্তন করা যেতে পারে।
কিছু ব্যবহারকারীর, উদাহরণস্বরূপ, bash
আশা করা যায় যে Altটিপলে পালানো অক্ষর দ্বারা উপস্থাপিত একটি কী প্রেরণ করা হবে। নথিভুক্ত "মেটা" বৈশিষ্ট্যটি (দেখুন terminfo(5)
) অষ্টম বিটের সাথে সম্পর্কিত:
যদি টার্মিনালে কোনও "মেটা কী" থাকে যা কোনও শিফট কী হিসাবে কাজ করে, যে কোনও চরিত্রের 8 ম বিটকে সংক্রমণ করে সেট করে, এই সত্যটি দিয়ে ইঙ্গিত দেওয়া যেতে পারে
km
। অন্যথায়, সফ্টওয়্যার ধরে নিবে যে 8 তম বিট সমতা এবং এটি সাধারণত সাফ হয়ে যায়। যদি এই "মেটা মোড" চালু এবং বন্ধ করার জন্য স্ট্রিংগুলি উপস্থিত থাকে , সেগুলিsmm
এবং হিসাবে দেওয়া যেতে পারেrmm
।
bash
এ সম্পর্কেও জানে ( এনক্রোএস এফএকিউ দেখুন ) তবে এর ব্যবহারকারীদের মধ্যে কয়েকজনই বৈশিষ্ট্যে আগ্রহী। তবুও, তারা Altমেটা মোড বন্ধ থাকলেও "মেটা" হিসাবে উল্লেখ করতে অভ্যস্ত । 1990 এর দশকের গোড়ার দিকে (কমপক্ষে) আরএক্সভিটি এবং এক্সটার্ম উভয়েরই এই বৈশিষ্ট্য রয়েছে।
অন্যান্য ব্যবহারকারীরা (যেহেতু প্যাচ # 94, 1999-xterm
এ এই বৈশিষ্ট্যটি প্রবর্তন করেছেন ) তারা বিশেষ কী প্রেরণ করবে এমন অক্ষরের ক্রম অনুসারে সংশোধনকারী তথ্যটি প্যারামিটার হিসাবে এনকোড করার আশা করতে পারে। এক্সটির্মের ডকুমেন্টেশনগুলিতে "পিসি-স্টাইল" ফাংশন কী হিসাবে "VT220- স্টাইল" (যার কোনও সংশোধনকারী নেই) থেকে আলাদা করতে এই পরিবর্তিত কীগুলিকে উল্লেখ করেছে T একটি অপরিবর্তিত কার্সার কী পাঠাতে পারেন , কিন্তু এটি একটি আছে বৈধ পরামিতির , যেমন, যা একটি অ্যাপ্লিকেশন উচিত পুনরাবৃত্তি যে পাঁচবার যেমন বুঝতে। প্রথম সংস্করণ 'র পিসি-শৈলী কী ব্যবহৃত "5" বোঝাতেESC[AESC[5Axterm
control, এবং পরবর্তী সংস্করণ পুনরাবৃত্তি গণনার সাথে বিভ্রান্তি এড়াতে এটি পরিবর্তন করেছে। তাই ...
ESC[5A
প্রস্তাবিত হয় যে অ্যাপ্লিকেশনটি কার্সরটিকে 5 টি সারি উপরে সরিয়ে রাখবে, যখন
ESC[1;5A
প্রস্তাবিত হয় যে এটি একটি সারি উপরে চলে যায়, অ্যাপ্লিকেশনটিকে বলে যে একটি controlকী চাপানো হয়েছিল।
দরকারী সংমিশ্রণগুলি 2004 সাল থেকে ncurses টার্মিনো ডাটাবেসে রয়েছে :
# 2004-07-17
# * add xterm-pc-fkeys -TD
টার্মিনোফো ডাটাবেসটি xterm + pcfkeys এর বর্তমান সংস্করণটি একটি মন্তব্যে দেখায় যে কীভাবে সংশোধনকারীদের এনকোড করা হয়েছে:
# This fragment describes as much of XFree86 xterm's "pc-style" function
# keys as will fit into terminfo's 60 function keys.
# From ctlseqs.ms:
# Code Modifiers
# ---------------------------------
# 2 Shift
# 3 Alt
# 4 Shift + Alt
# 5 Control
# 6 Shift + Control
# 7 Alt + Control
# 8 Shift + Alt + Control
# ---------------------------------
# The meta key may also be used as a modifier in this scheme, adding another
# bit to the parameter.
(অল্ট এবং মেটা অগত্যা একই কী নয়)। এটি একটি বিল্ডিং ব্লক (পরিবর্তে অন্যান্য বিল্ডিং ব্লকের সমন্বয়ে গঠিত) যা থেকে xterm
টার্মিনাল বিবরণটি গঠিত হয়। এটি ১৯৯৯ সাল থেকে এনসিউর্সে প্রদত্ত একটি এক্সটেনশন ব্যবহার করে যা ব্যবহারকারী-সংজ্ঞায়িত নামগুলিকে অনুমতি দেয়। যেহেতু টার্মক্যাপ কেবল 2-অক্ষরের নাম এবং 1023-বাইট বিবরণ সমর্থন করে, তাই টার্মক্যাপ ইন্টারফেসের মাধ্যমে এই বর্ধিত নামগুলি উপলব্ধ করার কোনও কারণ ছিল না । তারা টার্মিনো ইন্টারফেস ব্যবহার করে অ্যাপ্লিকেশনগুলিতে সহজেই উপলব্ধ ।
এখন একটি অসুবিধা আসে: অ্যাপ্লিকেশনটির জন্য কয়েকটি উপায় রয়েছে যা নির্ধারণ করতে পারে যে এর মতো কী কী অনুক্রমটি প্রতিনিধিত্ব করে:
কয়েকটি প্রোগ্রাম প্রথম করবে; কিছু টেক্সট সম্পাদক দ্বিতীয় (আসলে, আমি মতই কাজ করতেন এই জন্য ded
যে 1980 )। অ্যাপ্লিকেশনগুলির জন্য বিকাশকারীগণ যেমন bash
বেশিরভাগ তথ্য টার্মক্যাপে রয়েছে তা ধরে নিয়ে তৃতীয় রুটটি বেছে নিয়েছে । বিকল্পভাবে, তারা টার্মক্যাপ / টার্মিনো তথ্য সহ একটি টেবিল তৈরি করতে এবং ইন্টারফেসটি যে সর্বোত্তম তথ্য দেয় তা ব্যবহার করতে পারে। আসল ফাংশন কী অ্যাসাইনমেন্টগুলি সরবরাহ xterm
করে tcap- কোয়েরি বৈশিষ্ট্যটির জন্য এটি করে vim
।
যে কোনও স্ট্রিং তার bash
সাথে যে স্ট্রিংগুলি মেলে তার সাথে তুলনা করে না, এটি বিভ্রান্ত হতে পারে, আংশিক ম্যাচের জন্য নিষ্পত্তি করতে পারে (যেমন নিজে থেকে পালানোর চরিত্র)।
আরও পড়া: