কী বাইন্ডিং টেবিল?


19

আমাদের কী কী বাইন্ডিংস টেবিল রয়েছে যা কোনও কী প্রেসকে উল্লেখ করার বিভিন্ন উপায়ের অনুবাদ করে? আমি ব্যবহার করছি zsh, তবে আমি অনুমান করি যে যদি এই জাতীয় কোনও টেবিল থাকে তবে এটি কোনও শেলের জন্য কাজ করবে।

আমি জিজ্ঞাসার কারণটি হ'ল আমি কিছু কী-বাইন্ডিং নির্ধারণ করতে চাই এবং সেগুলি কীভাবে উল্লেখ করা যায় তা জানার আমার কোনও উপায় নেই (যদি না আমি ইতিমধ্যে সংজ্ঞায়িত একটিটি চুরি করতে যাচ্ছি)।

উদাহরণস্বরূপ, 'zbindkey' এ আমাদের এই ধরণের জিনিস রয়েছে:

[[ "$terminfo[kend]"  == " O"* ]] && \
    bindkey -M emacs "${terminfo[kend]/O/[}"  end-of-line

... এবং আমি অনুমান করতে পারি যে "কেন্দ্রে" এর অর্থ এটি চাবিটিকে বোঝায় End

ক্রস চেকিংয়ের সাথে bindkeyআমি এই লাইনগুলি দেখতে পাচ্ছি:

"^E" end-of-line
"^[OF" end-of-line
"^[[F" end-of-line

... সুতরাং আমি বিশ্বাস করি যে এই লাইনের একটিতে Endকীটি বোঝায় । কোনটি?

আমাদের কাছে এটি "বাইন্ডকি" ফাইলে রয়েছে:

bindkey "\e[A" history-beginning-search-backward

এখন, আমি জানলাম যে এটিই Up Arrowমূল কী, তবে আমি না জানলে কীভাবে জানতে পারি?

$ bindkey (at CLI)

... একই কীটির জন্য আমাদের আলাদা ভাষা দেয়:

"^[[A" history-beginning-search-backward

... তবে কমপক্ষে এখন আমি জানি যে ^[[Aবাইন্ডকি-এ-সিবিএতে কথা বলা একইভাবে \e[Aবিন্দু-ইন-জিনব্ডকিতে কথা বলে। এটা সহজ. ডস-এর পুরানো দিনগুলিতে, Up Arrow ছিল 0;72- আপনি প্রতিটি আইনী কীস্ট্রোকের স্ক্যান কোডটি খুঁজে পেতে পারেন এবং কেবল একটি ভাষা ছিল।

একটি টেবিল আছে? বা কী-স্ট্রোক বাছাই করতে সক্ষম হওয়ার অন্য কোনও উপায় এবং এটি কীভাবে উল্লেখ করতে হবে তা terminfo[]জানুন ... "বাইন্ডকি-ইন-জিনব্যান্ডি" ... "বাইন্ডকি-এ-সিএমআই" এবং / অথবা অন্য যে কোনও ভাষাতে হতে হবে?

আবার ডস-এ scancodeপ্রোগ্রাম ছিল - একটি কীস্ট্রোক টাইপ করুন এবং আপনি স্ক্যানকোড পেয়েছেন। এটা পাপপূর্ণভাবে সহজ ছিল।


উত্তরগুলি থেকে আমি তখন অনুমান করি যে সমস্ত সম্ভাব্য বাইন্ডিংয়ের একটি টেবিল প্রিন্ট করার কোনও উপায় নেই? যাইহোক 'বাইন্ডকি' আমার যা ইচ্ছা প্রায় তা করে:

pts/2 HP-y5-10-Debian1 root /aWorking/Docs $ bindkey -L
bindkey "^@" set-mark-command
bindkey "^A" beginning-of-line
bindkey "^B" backward-char
bindkey "^D" delete-char-or-list
bindkey "^E" end-of-line
...

কমপক্ষে আমি সমস্ত বিদ্যমান বাইন্ডিংগুলি দেখতে পাচ্ছি, এমনকি সমস্ত সম্ভাব্য বাঁধাই না হলেও । এখন, যদি কী গ্লিফগুলি 'নিয়মিত' পদগুলিতে অনুবাদ করার কিছু উপায় ছিল:

bindkey "Home" beginning-of-line

... তাহলে আমি খুশি হব।


3
Ctrl + V টিপুন (বা যা কিছু stty -aবলুক না কেন lnext) তারপরে কীটি চাপুন।
মাইকেল

উত্তর:


16

টার্মিনাল অ্যাপ্লিকেশন এবং টার্মিনাল এমুলেটর (বা হার্ডওয়্যার টার্মিনাল) এর মধ্যে ইন্টারফেস কীগুলি নয়, বাইট প্রেরণ করে। কার্সার মুভমেন্ট কীগুলির মতো ফাংশন কীগুলি এস্কেপ সিকোয়েন্সগুলিতে অনুবাদ করা হয় (এস্কেপ অক্ষর ESC \eওরফে \033ওরফে 0x1b ওরফে ^ [) দিয়ে শুরু করে)। সমস্ত টার্মিনাল সমস্ত বিভিন্ন পরিবর্তক সংমিশ্রণের জন্য বিভিন্ন সিকোয়েন্স প্রেরণ না করে, একই সাথে ফাংশন কী বা সংশোধকগুলির সাথে একটি অক্ষর কী সংমিশ্রনের ক্ষেত্রেও যায়। কয়েকটি কীগুলি নিয়ন্ত্রণের অক্ষর হিসাবে এনকোডযুক্ত প্রেরণ করা হয় (উদাঃ Tabtr Ctrl-I = \t= \011)।

আপনি দেখতে পাচ্ছেন, নিয়ন্ত্রণের অক্ষরগুলি বর্ণনা করার অনেকগুলি উপায় রয়েছে। কারও কারও একটি নাম রয়েছে, যা তাদের traditionalতিহ্যবাহী কার্যের সাথে সম্পর্কিত (যেমন ট্যাব, লাইন ফিড); এগুলির মধ্যে একটি ব্যাকস্ল্যাশ + বর্ণের সংমিশ্রণ রয়েছে যা আপনি ভিতরে $'…'বা তর্ক করতে echoবা ব্যবহার করতে পারেন print(পাশাপাশি পাশাপাশি নিয়মিত প্রকাশে এবং স্ট্রিং ল্যাটারেলগুলিতে জাজ, সি এবং অন্যান্য ভাষায় (নোট করুন যে বিভিন্ন সরঞ্জামের কিছুটা আলাদা সেট থাকতে পারে অব্যাহতি ক্রম))। আপনি \033এই প্রসঙ্গেও ব্যাকস্ল্যাশ + অষ্টাল (উদাঃ ) ব্যবহার করতে পারেন ।

প্রতিটি কী জন্য এস্কেপ সিকোয়েন্স টার্মিনাল প্রেরণ করে তার কিছুটা পার্থক্য রয়েছে। ভাগ্যক্রমে, প্রায় কোনও ওভারল্যাপ নেই: খুব কম চরিত্রের ক্রম রয়েছে যার অর্থ বিভিন্ন টার্মিনালের বিভিন্ন কী রয়েছে। প্রধান সমস্যাটি হল চরিত্রটি 127 = \177= 0x7f যা Backspaceবর্তমানে প্রায়শই মাঝে মধ্যে হয় তবে কখনও কখনও Delete

^[OFএবং ^[[F(যেমন \eOFএবং \e[F) দুটি সাধারণ পালানোর ক্রম প্রেরণ করা হয় End^E(অর্থাত্ \005) এর জন্য ইমাক্স কী বাঁধাই ( Ctrl+ E) end-of-line

আপনার টার্মিনাল এমুলেটর কোনও নির্দিষ্ট কী বা কী সংমিশ্রণের জন্য কী প্রেরণ করে তা দেখতে Ctrl+ Vএবং তারপরে প্রশ্নে থাকা কীটি টিপুন। এটি আক্ষরিকভাবে পালানোর ক্রমের প্রথম চরিত্রটি সন্নিবেশ করায়। এস্কেপ সিকোয়েন্সগুলি সাধারণত মুদ্রণযোগ্য অক্ষর দ্বারা অনুসরণ করে একটি পালানোর চরিত্র ধারণ করে, সুতরাং অব্যাহতি ক্রমের বাকি অংশটি আক্ষরিকভাবে সন্নিবেশ করা হয়।

টার্মিনফো ডাটাবেসে কিছু কীগুলির জন্য পালানোর ক্রম রয়েছে। আপনি আপনার সিস্টেমে টার্মিনফো (5) ম্যান পৃষ্ঠাতে টার্মিনফো সক্ষমতার তালিকা পাবেন । Zsh এ, আপনি terminfoএসোসিয়েটিভ অ্যারের মাধ্যমে ডাটাবেসে মানগুলি তালিকাভুক্ত করতে পারেন । মানগুলি মুদ্রণের সময় সাবধান থাকুন যেগুলিতে পালানোর ক্রম রয়েছে যা প্রদর্শিত হওয়ার সাথে সাথে টার্মিনাল দ্বারা ব্যাখ্যা করা হয়, সুতরাং এগুলি একটি উদ্ধৃত আকারে মুদ্রণ করুন।

% print -lr ${(q)terminfo[kend]}
$'\033'OF

দেখুন কিভাবে কীবোর্ড ইনপুট এবং টেক্সট আউটপুট কাজ করে? আপনি কী কী চাপলে কী হয় তার আরও সম্পূর্ণ ওভারভিউয়ের জন্য। Zsh এ কী বাইন্ডিংগুলি বোঝার দরকার নেই।


11
    BEGINNER'S GUIDE TO ZSH KEYBOARD ASSIGNMENTS, AKA 'KEYBOARD BINDINGS'.

(মন্তব্য, উন্নতি, তিক্ত নিন্দা স্বাগত: রেইনড্রেজ ইস্টলিঙ্ক ডট সিএ)

ডিবিয়ান লিনাক্সের অধীনে xfce4 এর অধীনে 'zsh' চালিত পিসির সাথে সংযুক্ত '101' পিসি কীবোর্ডে 'উপলব্ধ' কী সংমিশ্রণগুলি (আমি জানি না কে 'দায়িত্বে আছেন')। 'ধূসর' কীগুলির মধ্যে ডুপ্লিকেট কোড তৈরি করা সমস্ত সংমিশ্রণগুলি প্রদর্শিত সহজ সরল অবতার বাদে সরিয়ে ফেলা হয়েছে। দ্রষ্টব্য, কিছু ধূসর কী / সংমিশ্রণের '^ বর্ণ' নকল রয়েছে, যেমন 'প্রবেশ' == '^ এম' এর মতো এগুলি সরানো হয়নি। অন্যান্য সক্রিয় সংমিশ্রণগুলি সিস্টেম দ্বারা ব্যবহৃত হওয়ার পরে, যেমন কনসোল থেকেও পাওয়া যায় নি, যেমন। 'Alt + ফাংশন' কীগুলি টার্মিনালগুলিতে স্যুইচ করে। সম্ভবত 'মেটা' কী আরও বেশি কিছু করতে পারে তবে এটি 101 কিলোবাইটের সাথে রয়েছে। মজার বিষয় হল যে ডসটিতে আরও অনেকগুলি সংমিশ্রণ রয়েছে যেমন সিটিআরএল + ফাংশন - সমস্ত ডসগুলিতে পাওয়া যায়, সেগুলির কোনওটি লিনাক্সে উপলভ্য নয়, তাই মনে হয়। কোনও ট্রিপল কী সংমিশ্রণগুলির (উদাহরণস্বরূপ 'Ctrl + Alt + Up') ধূসর কীগুলির মধ্যে কোনও অনন্য কোড তৈরি করে নি তবে তারা সাদা কীগুলিতে কোড তৈরি করে। আকর্ষণীয় অসঙ্গতিগুলি: '^ [[22' '^ [[27' '^ [[30' 'নিখোঁজ' রয়েছেন, আপনি কেন ভাবছেন যে এই সংখ্যাগুলি এড়ানো হয়নি)। (যা বলতে চাইলে আপনি সম্ভবত 'F11' '^ [[22' না '' ^ [[23 '' হিসাবে প্রত্যাশা করতে পারেন))

দেখানো মূল কোডগুলি হ'ল সিএলআই-এর 'শোকেজ -a' বা 'বাইন্ডকি' দ্বারা আউটপুট হবে। তবে কোনও কারণে যদি আপনি কোনও স্ক্রিপ্টের মধ্যে 'বাইন্ডকি' ব্যবহার করেন (যেমন '.zshrc' তে) '' ^ ['অবশ্যই' \ ই 'দিয়ে প্রতিস্থাপন করতে হবে, সুতরাং সিএলআইতে:

bindkey -s '^ [[[A' 'আমার-আদেশ \ সেমি'

... 'এফ 1' কে 'মাই-কমান্ড' এ আবদ্ধ করুন এবং এটি সম্পাদন করুন ('\ সেমি' 'এন্টার' কীটি অনুকরণ করে)।

'.zshrc' তে:

বাইন্ডকি-এস '\ ই [25' 'মাই-কমান্ড 1; আমার কমান্ড 2 \ সেমি

... 'শিফট-এফ 1' কে 'মাই-কমান্ড 1' এর পরে 'মাই-কমান্ড 2' আবদ্ধ করুন এবং তাদের উভয়কেই কার্যকর করুন।

সম্মতিতে 'গ্রে' কী ব্যবহার করছে সম্মিলনগুলি :

কী [ F1 ] = '^ [[[A' কী [ F2 ] = '^ [[[বি' কী [ এফ 3 ] = '^ [[[সি' কী [ এফ 4 ] = '^ [[[ডি' কী [ F5 ] = '^ [[[ই' কী [ এফ 6 ] = '^ [[17 17' কী [ এফ 7 ] = '^ [[18 ~' কী [ এফ 8 ] = '^ [[19 ~' কী [ এফ 9 ] = '^ [[20 ~' কী [ F10 ] = '^ [[21 ~' কী [ F11 ] = '^ [[23 ~' কী [ F12 ] = '^ [[24 ~'

কী [ শিফট - এফ 1 ] = '^ [[25 ~' কী [ শিফট - এফ 2 ] = '^ [[26 ~' কী [ শিফট - এফ 3 ] = '^ [[28 ~' কী [ শিফট - এফ 4 ] = ' ^ [[29 ~ ' কী [ শিফট - এফ 5 ] = ' ^ [[31 ~ ' কী [ শিফট - এফ 6 ] = ' ^ [[32 ~ ' কী [ শিফট - এফ 7 ] = '^ [[33 ~' কী [ শিফট - এফ 8 ] = '^ [[34 ~'

কী [ sertোকান ] = '^ [[2 ~' কী [ মুছে ফেলুন ] = '^ [[3 ~' কী [ হোম ] = '^ [[1 ~' কী [ শেষ ] = '^ [[4 ~' কী [ PageUp ] = '^ [[5 ~' কী [ PageDown ] = '^ [[6 ~' কী [ আপ ] = '^ [[একটি' কী [ নিচে ] = '^ [[বি' কী [ রাইট ] = '^[[C' key[Left] = '^[[D'

key[Bksp] = '^?' key[Bksp-Alt] = '^[^?' key[Bksp-Ctrl] = '^H' console only.

key[Esc] = '^[' key[Esc-Alt] = '^[^['

key[Enter] = '^M' key[Enter-Alt] = '^[^M'

key[Tab] = '^I' or '\t' unique form! can be bound, but does not 'showkey -a'. key[Tab-Alt] = '^[\t'

COMBINATIONS USING THE WHITE KEYS:

Anomalies: 'Ctrl+`' == 'Ctrl+2', and 'Ctrl+1' == '1' in xterm. Several 'Ctrl+number' combinations are void at console, but return codes in xterm. OTOH Ctrl+Bksp returns '^H' at console, but is identical to plain 'Bksp' in xterm. There are no doubt more of these little glitches however, in the main:

White key codes are easy to undertand, each of these 'normal' printing keys has six forms:

= 'এ' ( দুহহ ) - Shift = 'A' (who would have guessed?) A-Alt = '^[a'
A-Ctrl = '^A' A-Alt-Ctrl = '^[^A' A-Alt-Shift = '^[A' A-Ctrl-Shift = '^A' (Shift has no effect)

Don't forget that:

/-Shift-Ctrl = Bksp = '^?' [-Ctrl = Esc = '^[' M-Ctrl = Enter = '^M'

And, we can 'stack' keybindings:

bindkey -s '^Xm' "My mistress\' eyes are nothing like the sun."

... Bind 'Ctrl-X' followed by 'm' to a nice line of poetry.

And we can flirt with madness:

bindkey -s '^Pletmenot' 'Let me not, to the marriage of true minds'

... but you hafta start something like that with a 'modifier' character. Try it, if you like keyboard shortcuts, you can really go to town.

QUESTIONS:

Where is it written that 'Ctrl-Bksp' means one thing at console, another thing in xterm?

Are these assignments changable?

Who designed all this, and what were they thinking at the time?

Why is it 'Alt-Function' to change terminals at a terminal, but 'Alt-Ctrl-Function' to change to a terminal from GUI?

কীভাবে / কোথায় ' Alt - Ctrl - মুছুন ' সংজ্ঞায়িত করা হয়?

enter code here

আমি প্রায় একটি ইমেল প্রেরণ করতে চাই ...
মাইকজার্ভ

সব উপায়ে মাইক করুন: rayandrews@eastlink.ca
রায় অ্যান্ড্রুজ

এটি কেবল একটি রসিকতা ছিল, রে - আপনি প্রায়শই একটি বিচ, গ্রিপস, অভিযোগগুলি দেখেন না ? আমাকে ইমেল করুন ... এখানে বাইরের লাইন। আমি এটি প্রশংসা, সব। যাইহোক, zshকী zkbdবিষয়গুলিতে সরাইয়া হিসাবে , আপনি হয়ত সেই ফাংশনটি চেষ্টা করতে চান যা আপনাকে কোনও ফাইলের মধ্যে পুরো কী-ম্যাপিংয়ের জন্য সংরক্ষণ করতে পারে। আমি বিশ্বাস করি এটি autoloadসক্ষম, তবে যদি তা না হয় তবে এটি সন্ধান করুন /usr/share/zsh/functions/Misc। কিছু অন্যান্য অদ্ভুত জিনিস সেখানে, খুব, উপায় দ্বারা, মত tetris
মাইকসার্ভ

এটি আমার টেবিলটি তৈরি করতে ব্যবহৃত একটি সরঞ্জাম, তবে আপনি কীভাবে একবারে 'সবকিছু' বার্ফ আপ করতে পারেন?
রে অ্যান্ড্রুজ

আকর্ষণীয় - আমার ধারণা আমি করিনি didn't আমি আসলে এর আগে কখনও চালাইনি - কেবল এটির উত্স ফাইলটি পড়ুন - এবং এটি কয়েক মাস আগে। আমার ধারণা এটির সেভ ফাইলটি উত্পন্ন করতে একাধিক ইনপুট পরীক্ষা করে। তবে এটি কোনও ফাইলের মধ্যে সবকিছু সংরক্ষণ করে?
মাইক্রজারভ

6

ইউনিক্স / লিনাক্সে আপনার নিষ্পত্তি করার জন্য অনেকগুলি সরঞ্জাম রয়েছে যাতে এটি কিছুটা বিভ্রান্তিকর এবং অপ্রতিরোধ্য হতে পারে। যে ব্যবহার শুরু করব তাদের জন্য showkey:

$ showkey -a

Press any keys - Ctrl-D will terminate this program

a    97 0141 0x61
b    98 0142 0x62
c    99 0143 0x63
d   100 0144 0x64
e   101 0145 0x65
f   102 0146 0x66
g   103 0147 0x67

সম্পর্কিত ম্যান পৃষ্ঠা থেকে -a:

   When  in  `ascii' dump mode, showkey prints to the standard output the 
   decimal, octal, and hexadecimal value(s) of the key pressed,
   according to he present keymap.

আপনি xmodmapকিছু ম্যাপিং পেতে ব্যবহার করতে পারেন :

$ xmodmap
xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Alt_R (0x6c),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3      
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

উপরেরটি ধাঁধার সমস্ত টুকরো নয় তবে কিছু অতিরিক্ত তথ্য যা কী-বাইন্ডিং এবং স্ক্যানকোডগুলির মধ্যে চূড়ান্ত মানচিত্রটি খুঁজে পেতে আপনার পক্ষে সহায়ক হতে পারে। এই U&L প্রশ্নোত্তর শিরোনামে আরও তথ্য রয়েছে: লিনাক্সে কী ম্যাপিং

তথ্যসূত্র


1
যদিও এটি সমস্ত সত্য, এটি টার্মিনালের কী বাইন্ডিংগুলি বোঝার জন্য অপ্রাসঙ্গিক।
গিলস 'অশুভ হওয়া বন্ধ করুন'

@ গিলস - হ্যাঁ আমি এক ধরণের অনুধাবন করেছিলাম যে, আমি কেবল সীসা সরবরাহ করার চেষ্টা করছিলাম, এখন আমি আপনার এআই পড়লাম বুঝতে পারছি যে ইন্টারফেসটি কীভাবে কাজ করে, ধন্যবাদ!
SLM

যদিও "শোকে -a" অপ্রাসঙ্গিক নয়।
স্কেজেডাল

2

যদি কী গ্লিফগুলি 'নিয়মিত' পদগুলিতে অনুবাদ করার কিছু উপায় ছিল:

bindkey "Home" beginning-of-line

... তাহলে আমি খুশি হব।

এন্ট্রি infocmpবর্ণনা করার terminfoজন্য ইউটিলিটি আছে । এটি বিশেষত -Lবিকল্প দীর্ঘ দীর্ঘ সি ভেরিয়েবল নামগুলির সাথে দরকারী :

$ infocmp -cL
...
key_home= '\EOH'.
key_up= '\EOA'.
key_down= '\EOB'.
key_right= '\EOC'.
key_left= '\EOD'.
key_backspace= '^H'.
key_end= '\EOF'.
...

এই bindkeyআউটপুট তুলনা

"^[OH" beginning-of-line
"^[OA" up-line-or-history
"^[OB" down-line-or-history
"^[OC" forward-char
"^[OD" backward-char
"^H" backward-delete-char
"^[OE" end-of-line

কেউ দেখতে পান যে তারা পালানোর জন্য বিভিন্ন স্বরলিপি ব্যবহার করে তবে মূলত স্ক্রিপ্ট লিখতে তুলনামূলকভাবে সহজ যেটি infocmpপ্রথমটির সাথে দ্বিতীয় কলামকে সংযুক্ত করেbindkey

যদি নির্দিষ্ট স্ট্রিংটির অর্থ ( infocmpআউটপুট প্রিন্ট করা থাকে) এর কোনও সন্দেহ থাকে তবে যে কোনও ক্ষেত্রে সর্বদা terminfoসম্পূর্ণ বিবরণ দেওয়া আছে যেখানে ম্যানুয়ালটি দেখা যায় , উদাহরণস্বরূপ

key_send  ->  shifted end key
key_sic   ->  shifted insert-character key
key_dc    ->  delete-character key

0

আমি ইউআরএক্সভিটি টার্মিনাল এমুলেটর ব্যবহার করি। এ জাতীয় কোডের দেখানোর জন্য বাঁধাই একটি দরকারী কী: Ctrl+V। এটি চাপ দেওয়ার পরে আপনি যে কী অনুক্রমটি চান তা প্রবেশ করুন এবং এটি এর কোডটি মুদ্রণ করবে। উদাহরণস্বরূপ, আমার Ctrl+ এর কোড রয়েছে ^[Oa

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.