देखें कि क्या टर्मिनल में कैप्स लॉक हैं


8

क्या यह बताने के लिए सिस्टम को क्वेरी करने का एक तरीका है कि क्या कैप्स लॉक लॉक है या टर्मिनल लाइन में कमांड लाइन से दूर है?


3
क्या एक अक्षर टाइप करने से आपको तुरंत कैप्स लॉक की स्थिति नहीं दिखेगी? इस जानकारी का वास्तविक उपयोग क्या है। शायद आप XY समस्या के बारे में पूछ रहे हैं ?
bmike

वास्तव में आप क्या हासिल करने की कोशिश कर रहे हैं? थर्ड-पार्टी यूटिलिटीज हैं जो आपको संशोधक कुंजियों की स्थिति बता सकती हैं लेकिन मूल रूप से कुछ भी नहीं है (डिफ़ॉल्ट रूप से स्थापित) जो मुझे पता है, लेकिन इसका मतलब यह नहीं है कि वहाँ नहीं है।
user3439894

2
मैं एलईडी का उपयोग यह इंगित करने के लिए कर रहा हूं कि इनपुट स्रोत ग्रीक है। मैं चाहता हूं कि यह तभी बंद हो जब इनपुट स्रोत अंग्रेजी हो और कैप्स लॉक बंद हो।
टूथरोट

1
@ लॉरेंस अब यह एक अच्छा सेटअप है। यदि आप उस प्रश्न को जोड़ना चाहते हैं - भयानक। मुझे यकीन है कि बहुत से लोग यह जानना पसंद करेंगे कि आपने उस संशोधन को कैसे पूरा किया।
bmike

1
मैंने गितुब से काराबिनियर और बिजीलूप / मैकलाइट का उपयोग किया।
टूथरोट

जवाबों:


9

Macscripter पर Stefenk द्वारा लिखित एक महान कमांड लाइन कोड है

स्टीफन का कोड आपको cmd, विकल्प, नियंत्रण, शिफ्ट और कैप्स लॉक का पता लगाने की अनुमति देता है।

अपने पोस्ट में वह कोड और एक डाउनलोड ज़िप प्रदान करता है।

आप या तो इसे डाउनलोड कर सकते हैं या नींव परियोजना का उपयोग करके Xcode में अपना खुद का निर्माण कर सकते हैं।

मैंने अभी एल कैपिटन में दोनों तरीकों का परीक्षण किया और वे दोनों काम करते हैं।

यदि आप Xcode.app में अपना स्वयं का निर्माण करना चाहते हैं तो वह कोड है:

#import <Carbon/Carbon.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        unsigned int modifiers = GetCurrentKeyModifiers();
        if (argc == 1)
            printf("%d\n", modifiers);
        else {
            int i, result = 1;
            for (i = 1; i < argc; ++i) {
                if (0 == strcmp(argv[i], "shift"))
                    result = result && (modifiers & shiftKey);
                else if (0 == strcmp(argv[i], "option"))
                    result = result && (modifiers & optionKey);
                else if (0 == strcmp(argv[i], "cmd"))
                    result = result && (modifiers & cmdKey);
                else if (0 == strcmp(argv[i], "control"))
                    result = result && (modifiers & controlKey);
                else if (0 == strcmp(argv[i], "capslock"))
                    result = result && (modifiers & alphaLock);
            }
            printf("%d\n", result);
        }
    }
    return 0;
}

---------- (अपडेट ->

यदि आप इसे Terminal.app से संकलित करना चाहते हैं

कोड को एक सादे पाठ फ़ाइल में डालें। मैंने अभी TextEdit.app और एक सादा पाठ दस्तावेज़ का उपयोग किया है।

अपनी फ़ाइल के समान निर्देशिका में सीडी। सुनिश्चित करें कि एक्सटेंशन है .m (.c भी ठीक होगा)

फिर भागो।

gcc  -framework Carbon CheckModKeys.m -o CheckModKeys

CheckModKeys.m आपकी फ़ाइल है।

CheckModKeys आउटपुट होने वाले ऐप का नाम है।

<-)


कैप्स लॉक का पता लगाने के लिए आपका कमांड कुछ इस तरह दिखाई देगा:

/Users/UserName/MyFolder/CheckModKeys  capslock

1 या 0 वापस किया जाएगा।

पर 1 के लिए

0 के लिए बंद


सारा श्रेय स्टेफेन को जाता है। मुझे बस याद है कि उसने इस तरह से `2009 'में पोस्ट किया था। और यह आज भी काम करता है ।।


धन्यवाद! मैं इसे कैसे संकलित करूं? मैंने कोशिश की gcc -o getmod getmod.cलेकिन वह लौट आया getmod.c:4:5: error: expected expression @autoreleasepool { ^ 1 error generated.
टूथ्रोट

@ लॉरेंस अपडेटेड उत्तर देखें
मार्कशीट

मुझे अभी भी मिलता है: `` आर्किटेक्चर के लिए अपरिभाषित प्रतीक x86_64: "_objc_autoreleasePoolPop", से संदर्भित: _main मुख्य-93f6a5.o में "_objc_autoreleasePoolPush", से संदर्भित: _main मुख्य-93f6a5.o ld प्रतीकों में: x86_64 क्लैंग: त्रुटि: लिंकर कमांड एक्ज़िट कोड 1 के साथ विफल रहा (उपयोग -v को देखने के लिए आह्वान) ``
टूथरोट

OS आप इस पर क्या कर रहे हैं
markhunte पर

1
चैट हो गई है, और मैं इसे संकलित भी नहीं कर सकता। जहाँ आप इसे संकलित कर सकते हैं, @Toothrot?
लार्स Nyström

2

यदि आपके पास XQuartz स्थापित है और या तो इसे चलाना या लॉन्च करने में कोई आपत्ति नहीं है, तो आप चला सकते हैं:xset -q

Keyboard Control:
  auto repeat:  on    key click percent:  0    LED mask:  00000000
  XKB indicators:
    00: Caps Lock:   off    01: Num Lock:    off    02: Shift Lock:  off
    03: Group 2:     off    04: Mouse Keys:  off    05: Scroll Lock: off

मैं xsetबैश में डिफ़ॉल्ट उपयोगकर्ता खाते का उपयोग करते हुए एल कैपिटन पर नहीं हूं । क्या यह एक विशिष्ट शेल या कुछ ऐसा है जिसे आपको कमांड काम करने के लिए स्थापित करना है?
bmike

@bmike, का xsetएक हिस्सा है X11जो डिफ़ॉल्ट रूप से स्थापित नहीं है। आप इसे यहां प्राप्त कर सकते हैं: XQuartz
user3439894

3
@ माईकी टीके, उपयोग के साथ समस्या IMO xsetयह XQuartz.app का कारण बनता है इसे खोलने के लिए (`xset) एक टर्मिनल में चलाने के लिए। मेरे लिए यह अवांछित व्यवहार है क्योंकि मैं बस एक सीएलआई उपयोगिता चाहता हूं जो किसी अन्य बीएसडी कमांड की तरह चलती है।
user3439894
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.