कैसे प्राप्त करने के लिए Ctrl, शिफ्ट या getch()
ncurses साथ Alt?
मैं नहीं मिल यह Ctrl, शिफ्ट या getch()
ncurses उपयोग करने के साथ Alt प्राप्त करने के लिए काम कर सकते हैं? क्या मुझे आदमी में कुछ याद आती है?getch() ncurses के साथ Ctrl, Shift या Alt कैसे प्राप्त करें?
उत्तर
कमाल कैसे कभी कभी सही जवाब पदावनत हो जाता है, और जवाब है कि "आधिकारिक" दे ऊपर पदोन्नत हो ... के साथ ,
सबसे पहले "सामान्य कुंजी" के लिए: कि बदलाव/एएलटी/CTRL एक ही समय में अन्य कुंजियों के साथ दबाया जाता है - रचनात्मकता का एक सा, KEY_NAME वास्तव में सही कुंजी इस पता लगाना करने के लिए, एक चेतावनी के साथ रखती है जैसे प्रिंट करने योग्य वाले, आप आसानी से शिफ्ट का पता लगा सकते हैं क्योंकि यह अपरकेस करता है।
विशेष कुंजी के लिए, उदा। KEY_LEFT, आप देखेंगे कि SHIFT चयनित होने पर उत्पन्न कोड वास्तव में KEY_SLEFT है। KEY_RIGHT के लिए ditto। दुर्भाग्य से, KEY_UP/KEY_DOWN के लिए ऐसी कोई किस्मत नहीं है, जो SHIFT द्वारा अजीब लगती है। तो आप वापसी वाले चार से getch() - KEY_S से अंतर कर सकते हैं .. तात्पर्य है कि शिफ्ट दबाया गया था।
एएलटी के लिए (कम से कम एक्स या एक्वा विंडोमैनर द्वारा फंस नहीं गया है), कुंजीनाम कुंजी को एम में परिवर्तित कर देगा ... कुछ।
CTRL के लिए आपको वास्तविक कुंजी नाम से पहले "^" मिल जाएगा। कुंजी 18
के लिए उदा^आर तो अब बाहर कुंजी कोड अपने स्विच (getch) बयान, आदि के लिए, लगा सकते हैं एक सरल टुकड़ा द्वारा:
ch = getch(); endwin(); printf("KEY NAME : %s - %d\n", keyname(ch),ch);
और कहा कि कि है। निश्चित रूप से "नहीं कर सकते" कहने से पहले सोचें। शायद एक रास्ता है जो कम स्पष्ट है।
वास्तव में यह दृष्टिकोण काम नहीं करता है। –
यह कोड लिखने में मदद नहीं करता है जो एकाधिक कीबोर्ड लेआउट में काम करता है। उदाहरण के लिए 'Shift + 2' लेआउट के आधार पर अलग-अलग वर्ण उत्पन्न कर सकता है। –
आप नहीं कर सकते हैं, इसे प्राप्त करने के लिए किसी भी प्रमुख टर्मिनल अनुकरणकर्ताओं में कोई विस्तार नहीं है।
यदि आप X11 वातावरण मान रहे हैं तो आप इसे पुनर्प्राप्त करने के लिए X11 फ़ंक्शंस का उपयोग कर सकते हैं, लेकिन यह एक अलग प्रश्न है।
(मोटे तौर पर How to get Shift+X/Alt+X keys in Curses ? से मेरा उत्तर कॉपी करने के लिए)
लंबी कहानी छोटी - आप नहीं कर सकते। संशोधक कुंजी बस यही हैं - संशोधक। वे अपने अधिकार में मौजूद नहीं हैं, वे कुछ अन्य (प्रिंटिंग) कुंजी को संशोधित करते हैं जिन्हें आप दबा सकते हैं।
कहा, यदि आप विशेष रूप से बहादुर महसूस कर रहे हैं, तुम मेरे libtermkey कोशिश कर सकते हैं जो कम से कम सही ढंग से जैसी चीजों को पार्स जाएगा Ctrl - तीर।
अंत में अगर आप, बहादुर आप टर्मिनल मैंने लिखा, pangoterm, जो किसी भी मनमाने ढंग से संशोधित यूनिकोड कुंजी एन्कोड करने के लिए सामान्य तरीके हैं चला सकते हैं भी महसूस कर रहे हैं तो यह भेद कर सकते हैं Ctrl - मीटरसे दर्ज करें, Ctrl - शिफ्ट - एकCtrl से - एक, आदि ...
हालांकि, इनमें से, जवाब "आप नहीं कर सकते" रहता है।
getch()
से उत्पन्न कुंजी को बदलने के लिए आप key_name(c)
पर कॉल कर सकते हैं जो आपको ctrl-modifier की स्थिति दिखाता है।
उदाहरण के लिए इस कोड से पता चलता "^ आर" यदि आप Ctrl-R दबाएँ:
while(true)
{
char c = getch();
if (ERR == c)
break;
const char *name = key_name(c);
move(2, 2);
clear();
printw("You entered: %s ", name);
refresh();
}
'गेटच' एक 'चार्ट टाइप' देता है, न कि 'char'। – YoYoYonnY
कम से कम नियंत्रण संशोधक के लिए एक सरल समाधान है। शाप vi स्रोत कोड है, जिसमें आप निम्नलिखित को खोजने से प्राप्त किया गया था (देखें https://github.com/n-t-roff/ex-1.1/blob/master/ex.h लाइन 77 और https://github.com/n-t-roff/ex-1.1/blob/master/ex_vops.c लाइन 445): इस्तेमाल किया
#ifndef CTRL
#define CTRL(c) ((c) & 037)
#endif
switch(getch()) {
case CTRL('r'):
/* key ctrl-r (i.e. ^R) pressed */
dependend पर शामिल CTRL
या पहले से ही अपने कोड में परिभाषित किया गया नहीं हो सकता है।
मैंने इसे आजमाया नहीं है, लेकिन यह जानना अच्छा होगा कि यह क्यों कम हो गया था। –
@leonerd साथ (आंशिक रूप से) सहमत, ncurses केवल आप उन कुंजियां दूंगा रूप में वे संशोधक के रूप में उपयोग किया जाता है अन्य कुंजियों (ASCII अनदेखी भागने चरित्र जो कुछ लोगों को Alt के साथ भ्रमित करने के लिए कुंजी)। कुछ विशिष्ट उपकरणों को यह जानकारी देने के लिए कहा जा सकता है (उदाहरण के लिए, लिनक्स कंसोल console_ioctl(4) में प्रलेखित के रूप में), लेकिन यह कोई समस्या नहीं है कि ncurses आपके लिए हल हो जाएंगे।
लंबे उत्तर के लिए ncurses FAQ How can I use shift- or control-modifiers? देखें।
लेकिन कम: ncurses आपको बता नहीं करता है तो एक दिया संशोधक (विशेष मामलों में जहां पारी के जाने-माने का उपयोग करता है वहाँ थे को छोड़ कर) इस्तेमाल किया गया था, बल्कि अपने टर्मिनल विवरण
द्वारा जानकारी या तो प्रदान करते हैं- Shift- और नियंत्रण-संशोधक के संयोजन द्वारा वास्तविक समारोह चाबियाँ गुणा, या
- नामों का उपयोग करके टर्म के पीसी शैली समारोह चाबियाँ (पाली, 2 है alt 3 है, नियंत्रण 5, आदि), के आधार पर जानकारी प्रदान करें।
वहाँ है, जबकि अन्य अभी उपयोगकर्ता परिभाषित नाम का उपयोग करता है), क्योंकि पहले कोई 60 से अधिक समारोह चाबियों का एक सरणी (Shift- और नियंत्रण-संयोजन के लिए काफी अच्छा) का उपयोग करता है दो दृष्टिकोण हैं।
इन सभी संशोधित कुंजी कई बाइट्स देते हैं; ncurses में keypad()
(बेशक) का उपयोग कर एक आवेदन एक एकल नंबर प्राप्त होगा। बाद के मामले में, कीकोड रनटाइम पर निर्धारित होते हैं।
जो मुख्य रूप से विशेष कुंजी (फ़ंक्शन-, संपादन- और कर्सर-कुंजी) पर लागू होता है।नियमित रूप से कुंजी के लिए, एक मान सकते हैं कि keyname
कुछ विशेष व्यवहार देता है, लेकिन उसके विवरण को पढ़ने यह नहीं है:
- यह ASCII नियंत्रण वर्ण रिपोर्ट (जो आप
iscntrl
मैक्रो का उपयोग कर सकते हैं), और - बनाता है मेटा के बारे में धारणाएं (जो केवल
xterm
के लिए उपयोगी हैं, जिन टर्मिनलों का उपयोग करने की संभावना है), और - शिफ्ट संशोधक के लिए कोई सहायता प्रदान नहीं करता है।
टर्मिनलों में ... सभी में आंतरिक रूप से संशोधक जानकारी उपलब्ध है, लेकिन टर्मिनलों के पास आमतौर पर इस जानकारी को एप्लिकेशन में पास करने का कोई तरीका नहीं है। xterm
modifyOtherKeys
संसाधन का उपयोग कर ऐसा कर सकते हैं,
modifyOtherKeys (class ModifyOtherKeys)
Like modifyCursorKeys, tells xterm to construct an escape
sequence for other keys (such as "2") when modified by
Control-, Alt- or Meta-modifiers. This feature does not apply
to function keys and well-defined keys such as ESC or the
control keys. The default is "0":
0 disables this feature.
1 enables this feature for keys except for those with well-
known behavior, e.g., Tab, Backarrow and some special
control character cases, e.g., Control-Space to make a
NUL.
2 enables this feature for keys including the exceptions
listed.
जो एक नियंत्रण अनुक्रम से मेल खाती है, XTerm Control Sequences में देखी गई:
CSI > Ps; Ps m
Set or reset resource-values used by xterm to decide whether
to construct escape sequences holding information about the
modifiers pressed with a given key. The first parameter iden-
tifies the resource to set/reset. The second parameter is the
value to assign to the resource. If the second parameter is
omitted, the resource is reset to its initial value.
Ps = 0 -> modifyKeyboard.
Ps = 1 -> modifyCursorKeys.
Ps = 2 -> modifyFunctionKeys.
Ps = 4 -> modifyOtherKeys.
लेकिन (एक xterm-विशिष्ट सुविधा जा रहा है), वहाँ इसका इस्तेमाल करने की कोई कारण नहीं है ncurses में: यह getch
जटिलता से जटिल होगा।
- 1. नक्शा Alt + Shift +] vim
- 2. ग्रहण: बदले ctrl + shift +/
- 3. ncurses
- 4. ncurses
- 5. WPF में Ctrl + Tab और Ctrl + Shift + Tab कैप्चर कैसे करें?
- 6. माउस ईवेंट से शिफ्ट/ctrl/alt राज्य प्राप्त करना?
- 7. Ctrl + A और Ctrl + Shift + A को अलग-अलग कैसे करें?
- 8. विशेष (alt/ctrl) कुंजी दबाए जाने के लिए कैसे दबाएं?
- 9. सेलेनियम 2 के साथ कीबोर्ड शॉर्टकट ALT SHIFT z (हॉटकी) कैसे भेजें?
- 10. ncurses में एक चमकदार रंग कैसे प्राप्त करें?
- 11. ग्रहण के दृश्य स्टूडियो Ctrl + Tab और Ctrl + Shift + Tab समतुल्य
- 12. ग्रहण निरीक्षण (Ctrl + shift + I) काम नहीं कर रहा है
- 13. क्या Emacs ctrl-r और ctrl-shift-r के बीच अंतर कर सकते हैं?
- 14. Ctrl या प्रत्येक ब्राउज़र
- 15. jQuery ट्रिगर कुंजीकोड Ctrl + Shift + z और Ctrl + z wysiwyg textarea
- 16. JQuery - alt या शीर्षक
- 17. ruby-ncurses से 256 रंग प्राप्त करना
- 18. jQuery के साथ Ctrl + C कुंजी ईवेंट कैसे ट्रिगर करें?
- 19. लिनक्स में प्रयुक्त Ctrl-Alt-F6, और मेरी स्क्रीन वापस
- 20. कैसे ncurses et। अल। काम?
- 21. सभी पाठ घटकों के साथ Ctrl + Z और Ctrl + Y का उपयोग कैसे करें?
- 22. मैं सी में Ctrl + S क्यों नहीं पढ़ सकता?
- 23. ncurses टर्मिनल आकार
- 24. खाली alt = "" जोड़ने का क्या फायदा है? और कौन सा alt इस alt = "" या alt = "" का प्रयोग किया जाना चाहिए?
- 25. हास्केल ncurses
- 26. मैं कक्षा-समापन (Ctrl-Shift-ग) द्वारा बनाया गया कोड कैसे संशोधित कर सकते हैं
- 27. साइटकोर 6 में छवि स्रोत और alt विशेषता प्राप्त करें?
- 28. jQuery UI में Shift-Multiselect सक्षम करें
- 29. कैसे बताएं कि कौन सी SHIFT कुंजी दबाई गई थी?
- 30. जावा के साथ कुकीज़ कैसे प्राप्त करें?
नियंत्रण, शिफ्ट, और alt इनपुट उत्पन्न नहीं करते हैं, वे अन्य इनपुट संशोधित करते हैं। –
@ सेठ कार्नेगी: मुझे कई गेम याद हैं जहां आप व्यक्तिगत कार्यों के लिए इनमें से किसी भी कुंजी का उपयोग कर सकते हैं। मुझे लगता है कि प्रत्येक कुंजी में अद्वितीय स्कैन कोड का कुछ प्रकार होता है। –
@KerrekSB हालांकि वे stdin में इनपुट उत्पन्न नहीं करते हैं। आप जांच सकते हैं कि वे _down_ हैं या नहीं (यानी विंडोज़ में 'GetAsyncKeyState' है), लेकिन यह कुंजीपटल के साथ काम कर रहा है, न कि' getch' करता है जैसे इनपुट के साथ। –