लिनक्स पर बूट होने पर Apple मैकबुक प्रो एल्युमिनियम कीबोर्ड पर कैप्स लॉक की देरी को कैसे दूर करें


32

Apple के मैकबुक प्रो में कैप्स लॉक की पर थोड़ी देरी हुई है । यही है, कैप्स लॉक को संलग्न करने के लिए आवश्यक कुंजी प्रेस को पंजीकृत करने के लिए कैप्स लॉक कुंजी को सामान्य से थोड़ा अधिक समय तक आयोजित करना पड़ता है।

यह सुपर कष्टप्रद है। क्या किसी को पता है कि इसे होने से कैसे रोकें?

(ऊपर से कॉपी stackoverflow के रूप में यह वहाँ "विषय बंद 'के रूप में बंद हो गया।)

आगे विस्तृत करने के लिए: Apple इसे एक विशेषता बताता है, और उनके ज्ञान का आधार लेख यह खुलासा नहीं करता है कि इस देरी को कैसे अक्षम किया जाए।

हालाँकि, मुझे विश्वास है कि ऐसा करना संभव है।

विशेष रूप से, मैंने पाया है कि, कम से कम मेरे अनुभव में, यदि आप मैक ओएस एक्स (सिस्टम वरीयताएँ .. कीबोर्ड .. संशोधक कुंजी) पर कैप्स-लॉक कुंजी को रीमैप करते हैं, और उदाहरण के लिए इसे नियंत्रित करने के लिए मैप करते हैं, तो देरी दूर हो जाती है जब मैं मैक ओएस एक्स में लॉग इन हूं।

मेरी समस्या यह है कि जब मैं उबंटू लिनक्स में बूट करता हूं, तो विलंब बना रहता है, और उस संदर्भ में, जब मैं नियंत्रण के लिए कैप्स लॉक कुंजी को हटा देता हूं, तब भी विलंब मौजूद रहता है।

तो, सवाल यह है: एप्पल देरी को कैसे अक्षम कर रहा है, और इससे भी महत्वपूर्ण बात यह है कि लैपटॉप के ऊपर लिनक्स इंस्टॉलेशन के संदर्भ में कोई उस एक्ट को कैसे दोहरा सकता है?

अपडेट: सुपरयुसर पर एक थ्रेड होता है जो वर्कअराउंड प्रदान कर सकता है। मैंने अभी तक वहाँ के सुझावों की कोशिश नहीं की है (अर्थात्: (1) कैप्सलॉक-नोएशन ऑफ / ऑन, और (2) एक फर्मवेयर अपग्रेड)। मैं उस सूत्र के संदर्भ से नहीं बता सकता कि क्या उबंटू की स्थापना पर वर्कअराउंड का परीक्षण किया गया है।


मैंने अब से पहले कभी इस पर ध्यान नहीं दिया, लेकिन मेरा मेरे साथ एक नाटक हुआ है और मैं देख सकता हूं कि आपका क्या मतलब है। यदि आप कैप लॉक की को टैप करते हैं तो यह जल्दी से कुछ नहीं करता है। मैंने इसे पहले कभी भी समस्या नहीं पाया, लेकिन सिर्फ कैप्स लॉक कुंजी ट्रिक को अक्षम / पुनः सक्षम करने की कोशिश की और इसे तुरंत बना दिया! अब कोई बात नहीं मैं जल्दी से यह हमेशा टॉगल कैप्स ताला बंद कुंजी मारा। बहुत अजीब!
tom1990

हमेशा सोचा था कि मैं बस पागल हो रहा था: पी मैं इसका लाभ देख सकता हूं, लेकिन कुछ स्थितियों में यह वास्तव में मुझे परेशान करता है। यह जानना अच्छा होगा कि क्या यह संभव है!
ऑरेंजबॉक्स

वास्तव में, अक्षम / फिर से सक्षम कैप लॉक लॉक (मैक ओएस एक्स साइड पर), एक बार लिनक्स से रिबूट करने के बाद समस्या को दूर करने के लिए लगता है। लेकिन यह मेरे लिए स्पष्ट नहीं है कि क्या प्रभाव स्थायी है - मैंने अपनी मशीन को कुछ समय (सप्ताह या शायद एक महीने से अधिक) के लिए संचालित कर दिया, और जब मैंने इसे सीधे सुबह लिनक्स पर बूट किया, तो ऐसा लग रहा था देरी से लौटे थे। अभी भी मेरे लिए काफी रहस्यमय है।
pnkfelix

तो बस जाँच करने के लिए, वहाँ इस मुद्दे के लिए Linux के लिए एक तय प्रतीत नहीं होता है?
माइक एचआर

1
यहाँ एक फिक्स है जो macOS के लिए काम करता है और इसे macOS के तहत चलाया जा सकता है।
fel1x

जवाबों:


22

मुझे पता चला है कि यह कैसे करना है। संक्षेप में, आपको एक "फ़ीचर रिपोर्ट" भेजनी होगी, जिसमें बाइट्स 0x9, 0x0, 0x0, 0x0को रूट के रूप में उपयुक्त हिड्रा डिवाइस में भेजा जाना चाहिए ।

आप इस आदेश के साथ सही hidraw डिवाइस पा सकते हैं:

dmesg | grep Apple | grep Keyboard | grep input0 | tail -1 | sed -e 's/.*hidraw\([[:digit:]]\+\).*/\/dev\/hidraw\1/'

मैजिक कंट्रोल पैकेट भेजने का कोड नीचे है। Gcc के साथ संकलित, hidraw डिवाइस को पैरामीटर के रूप में लेता है। तो पूरा प्रवाह है:

  1. नीचे दिए गए कोड को सहेजें disable-capslock-delay.c
  2. gcc -o disable-capslock-delay disable-capslock-delay.c
  3. HIDDEVICE=$(dmesg | grep Apple | grep Keyboard | grep input0 | tail -1 | sed -e 's/.*hidraw\([[:digit:]]\+\).*/\/dev\/hidraw\1/')
  4. sudo ./disable-capslock-delay $HIDDEVICE

चरण 3 और 4 को हर बार आपको रिबूट (या कीबोर्ड को अनप्लग और री-प्लग) करना होगा; आप उन्हें /etc/rc.local(या आपके डिस्ट्रो के समकक्ष) बूट पर निष्पादित करने के लिए डाल सकते हैं (आपको sudoउस मामले में ज़रूरत नहीं है , और आप संकलित बाइनरी को /usr/local/sbin/या कुछ में स्थानांतरित करना चाह सकते हैं )।

मैंने वेंडर आईडी, डिवाइस आईडी और रिपोर्ट डिस्क्रिप्टर लंबाई के लिए कुछ सुरक्षा जांचों में लगा दिया है। यदि आपका मॉडल खान से अलग है तो आपको बाद के दो को बदलना पड़ सकता है।


#include <linux/hidraw.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <stdio.h>
#include <string.h>

int main(int argc, char **argv) { if (argc != 2 || strcmp(argv[1], "-h") == 0) { printf("Pass a hidraw device as the first and only parameter!\n"); printf("You may find the right device with:\n"); printf(" dmesg | grep Apple | grep Keyboard | grep input0 | tail -1 | " "sed -e 's/.hidraw\([[:digit:]]\+\)./\/dev\/hidraw\1/'\n"); return 1; } int fd, i, res, desc_size = 0; char buf[256]; struct hidraw_devinfo info; char *device = argv[1]; fd = open(device, O_RDWR | O_NONBLOCK); if (fd < 0) { perror("Unable to open device"); return 1; } memset(&info, 0, sizeof(info)); memset(buf, 0, sizeof(buf)); // Get Report Descriptor Size res = ioctl(fd, HIDIOCGRDESCSIZE, &desc_size); if (res < 0) { perror("HIDIOCGRDESCSIZE"); } if (desc_size != 75) { printf("Error: unexpected descriptor size %d; you've probably got " "the wrong hidraw device!\n", desc_size); return 1; } // Get Raw Info res = ioctl(fd, HIDIOCGRAWINFO, &info); if (res < 0) { perror("HIDIOCGRAWINFO"); } else { if (info.vendor != 0x05ac) { printf("Error: Wrong vendor ID, make sure you got the right " "hidraw device!\n"); return 1; } if (info.product != 0x0250) { printf("Warning: Unknown product ID 0x%x!\n", info.product); } } // Get Feature buf[0] = 0x09; // Report Number res = ioctl(fd, HIDIOCGFEATURE(256), buf); if (res < 0) { perror("HIDIOCGFEATURE"); } else { printf("HID Feature Report (before change):\n\t"); for (i = 0; i < res; i++) printf("%hhx ", buf[i]); puts("\n"); } // Set Feature buf[0] = 0x09; // Report Number buf[1] = 0x00; // Report data buf[2] = 0x00; // padding buf[3] = 0x00; // padding res = ioctl(fd, HIDIOCSFEATURE(4), buf); if (res < 0) { perror("HIDIOCSFEATURE"); } else { printf("Caps lock delay disabled.\n"); } // Get Feature buf[0] = 0x09; // Report Number res = ioctl(fd, HIDIOCGFEATURE(256), buf); if (res < 0) { perror("HIDIOCGFEATURE"); } else { printf("HID Feature Report (after change):\n\t"); for (i = 0; i < res; i++) printf("%hhx ", buf[i]); puts("\n"); } close(fd); return 0; }


2
यह बहुत अच्छा लग रहा है, धन्यवाद! रुचि से बाहर, आपको यह कैसे पता चला (जादू बाइट्स को भेजने की आवश्यकता है)?
माइक एचआर

6
@ माइक-आर: मैंने एक दिन यह सीखने में बिताया है कि एचआईडी प्रोटोकॉल कैसे काम करता है: अनिवार्य रूप से, डिवाइस बताते हैं कि डेटा पैकेट ("रिपोर्ट") जो वे समझते हैं। दुर्भाग्य से Apple कीबोर्ड ने अपने HID डिस्क्रिप्टर में प्रश्न में रिपोर्ट का उल्लेख नहीं किया है। हालाँकि मुझे मैकबुक के आंतरिक कीबोर्ड के HID डिस्क्रिप्टर का एक डंप मिला जो किसी ने पोस्ट किया था जिसमें सही रिपोर्ट विवरण था, और मैंने बस कोशिश की और पाया कि यह बाहरी वायर्ड कीबोर्ड के लिए भी काम करता है।
19

ओह वाह मुझे यह कोशिश करनी है!
pnkfelix

(मुझे अलग-अलग डिस्क्रिप्टर के आकार मिलते हैं, बहुत कम से कम। फिर भी मैं उन्हें समायोजित करूँगा और देखूँगा कि यह कैसे काम करता है।)
pnkfelix

मैं इस जवाब को स्वीकार करने जा रहा हूं क्योंकि यह वास्तव में समस्या को स्वीकार करने के सबसे करीब आता है और इसे एक विश्वसनीय समाधान प्रदान करता है (भले ही मेरे स्वयं के मामले में विवरणकर्ता के आकार अलग हैं)।
pnkfelix

13

यहाँ macOS Sierra के लिए फिक्स है।

पर जाएं सिस्टम प्राथमिकताएं > सरल उपयोग

जब एक्सेसिबिलिटी विंडो खुली हो - विंडो के बाएं हिस्से पर - कीबोर्ड पर क्लिक करें

फिर 2 विकल्प होंगे - स्टिकी कुंजियों के लिए, और धीमी कुंजियों के लिए - इसे सक्षम करने के लिए धीमी कुंजियों के बगल में स्थित बॉक्स पर क्लिक करें - फिर Options...बटन पर क्लिक करें - स्वीकृति देरी को बदलने के लिए स्लाइडर के साथ एक नई विंडो आएगी - डिफ़ॉल्ट रूप से यह बीच में है। बटन को बाईं ओर सभी तरफ स्लाइड करें, ताकि यह कम से कम समय संभव हो।

अब इसे ठीक किया जाना चाहिए। यह देखने के लिए प्रयोग नहीं किया है कि क्या फिक्स फिर से शुरू होता है, लेकिन मुझे उम्मीद है कि यह होगा।


मैं एक सेकंड के लिए उत्साहित हो गया, लेकिन जब मैं यहाँ देखने गया, तो धीमी कुंजियाँ सक्षम नहीं थीं, इसलिए केवल धीमी कुंजी का उपयोग करने वाले लोगों के लिए काम करता है :( एक दिन मेरे पास मेरे कीमती कैप्स लॉक की चाबी होगी!
ब्रैडली

4
यह इसे थोड़ा कम करता है, लेकिन कैप्स-लॉक को चालू करने की तुलना में चालू करना अभी भी धीमा है। इसके अलावा, मुख्य दोहराने की दर एक क्रॉल तक धीमी हो जाती है, भले ही सेटिंग सबसे तेज हो। (सिएरा 10.12.6)
स्काइपीलॉट

1
यह समस्या का उचित समाधान नहीं है क्योंकि यह कीरपेट को धीमा कर देता है और बैकस्पेस को दबाते समय आप सामान को ठीक से नहीं हटा सकते हैं।
डेनियलोस

7

EDIT: यह उन उपयोगकर्ताओं के लिए एक लोकप्रिय लैंडिंग प्रश्न लगता है जो OS X में कैप्स लॉक कुंजी पर देरी को हटाने के लिए देख रहे हैं। OS X Mojave के रूप में,

सिस्टम प्राथमिकताएं पर जाएं; पहुँच क्षमता; कीबोर्ड; स्लो कीज़ को सक्षम करें और विकल्पों में जाएं; देरी को न्यूनतम तक सीमित करें। केवल अवांछित साइड-इफेक्ट मैंने अब तक देखा है जब इसे नीचे रखने पर बैकस्पेस एक्शन धीमा होता है। आम तौर पर मैं CMD + A / CMD + SHIFT + L / R / CMD + SHIFT + CTRL + L / R का उपयोग करता हूँ, इसलिए यह कोई बड़ा मुद्दा नहीं है।

एल Capitan और पहले के रूप में,

समाधान काफी मायावी है, और आप वास्तव में इसे तब तक नहीं जान पाएंगे जब तक कि आप विशेष रूप से पहली बार में इससे छुटकारा पाने की कोशिश नहीं कर रहे। जिस तरह से मैं आपको दिखाने जा रहा हूं वह विशुद्ध रूप से ओएसएक्स, योसेमाइट के नवीनतम (वर्तमान) संस्करण के लिए है। हालाँकि आप इस विधि को पिछले और भविष्य के संस्करणों में लागू कर सकते हैं।

समाधान सरल है। यदि आप शीर्ष बाएं हाथ के कोने में ऐप्पल लोगो के माध्यम से सिस्टम वरीयताओं में कीबोर्ड पर नेविगेट करते हैं, तो आप इस स्क्रीन पर पहुंचेंगे! [यहां छवि विवरण दर्ज करें] [1]

[१]: http://i.stack.imgur.com/DIbZD.png

यदि आप संशोधक कुंजियों के बटन पर क्लिक करते हैं, तो आप प्रत्येक कुंजी के कार्य को बदल सकते हैं जो प्रोग्राम करने योग्य हैं। आपको बस इतना करना है कि बिना किसी कार्रवाई के कैप्स लॉक कुंजी सेट करें और आपको कीबोर्ड मेनू पर वापस लाने के लिए ठीक दबाएं। एक बार हो जाने के बाद, संशोधक कुंजियों में वापस जाएं और कैप्स लॉक की को वापस कैप्स लॉक में बदलें और इससे देरी दूर हो जाएगी! ध्यान दें कि यह फिक्स तब तक बना रहता है जब तक आप डिवाइस को सोते, पुनरारंभ या पावर नहीं करते। किस बिंदु पर देरी को बहाल किया जाता है।

वे अजीब सुधार कर रहे हैं, और यह सवाल भी पैदा करता है कि जब यह शुद्ध विशुद्ध रूप से सॉफ्टवेयर आधारित होता है तो देरी को दूर करने का विकल्प क्यों नहीं देते हैं। लेकिन हे, कम से कम एक रास्ता है!

हैप्पी कैपिंग।


यह लिनक्स में मेरी समस्या को कैसे हल करता है?
pnkfelix

स्पष्ट होने के लिए: मूल प्रश्न ने कहा: "... जब मैं मैक ओएस एक्स में लॉग इन करता हूं, तो देरी दूर हो जाती है। मेरी समस्या यह है कि जब मैं उबंटू लिनक्स में बूट करता हूं, और उस संदर्भ में, तब भी विलंब रहता है, जब मैं रीमैप करता हूं कैप्स लॉक टू कंट्रोल, देरी अभी भी मौजूद है। ”
pnkfelix

आह! मैं देखता हूं, मुझे लगता है कि मुझे ओपी प्रश्नों को अधिक ध्यान से पढ़ना चाहिए। मैंने OSX पर पाया कि कैप्स कुंजी को पूरी तरह से अनबाइंड करना और रिबंड करना समस्या को हल करता है। हो सकता है कि देरी इसलिए हुई क्योंकि आप इसके बजाय नियंत्रण के लिए बाध्य हैं? यदि आप अभी भी एक काम के आसपास नहीं है तो सब कुछ करने की कोशिश करें :)
ब्रैडले

1
इस दृष्टिकोण का मेरे लिए कोई प्रभाव नहीं पड़ा। (सिएरा 10.12.6)
स्काइपिलॉट

3

सिस्टम प्राथमिकताओं पर जाएं> एक्सेसिबिलिटी> कीबोर्ड> स्लो कीज़ को सक्षम करें> स्वीकृति की देरी को सभी तरह से बाईं ओर करें (शॉर्ट)! इसने मेरे लिए काम किया।


क्या आप मैक ओएस एक्स में एक कदम का वर्णन कर रहे हैं? यह उबंटू लिनक्स में समस्या को कैसे हल करता है, जैसा कि प्रश्न में वर्णित है?
pnkfelix

हाँ सही। मुझे उबंटू लिनक्स पता नहीं है, क्षमा करें। मुझे लगता है कि मैं मुख्य शीर्षक "ऐप्पल मैकबुक प्रो एल्यूमीनियम कीबोर्ड * पर कैप्स लॉक देरी को कैसे हटाऊं" को हल कर रहा हूं और शायद सवाल "ऐप्पल कैसे देरी को अक्षम कर रहा है"। पी: :-) बेस्ट सादर थॉमस, स्वीडन * यही सवाल कारण मैंने पाया और इसलिए मैं इसे अपने आप हल इस चलने और कुछ भी नहीं मदद की पढ़ा है
थॉमस कार्ल-एरिक Jönsson

2
मिशेल के जवाब के अनुसार: यह इसे थोड़ा कम करता है, लेकिन कैप-लॉक को चालू करने की तुलना में चालू करना अभी भी धीमा है। इसके अलावा, मुख्य दोहराने की दर एक क्रॉल तक धीमी हो जाती है, भले ही सेटिंग सबसे तेज हो। (सिएरा 10.12.6)
स्काइपिलॉट

2

मुझे पता है कि कैप्स लॉक की देरी कीबोर्ड पर फर्मवेयर की एक विशेषता है - इसलिए आप आश्वस्त रह सकते हैं कि देरी का समय कोई फर्क नहीं पड़ता कि कीबोर्ड किस समय ओएस चला रहा है।

मुझे यह भी पता है कि Apple फर्मवेयर को निचले स्तर पर फ्लैश करने के लिए एक रास्ता नहीं देता है, इसलिए हम सभी को तब तक इंतजार करना होगा जब तक कि पर्याप्त हार्डवेयर अनुभव वाले किसी व्यक्ति को पुराने फर्मवेयर लोड करने में हार्डवेयर को ट्रिक करने के लिए दिए गए टूल और स्टेप्स न मिलें (या प्रदान करें) एक नए फर्मवेयर की तरह दिखता है जो देरी को बिना किसी देरी के पहले काम करता है।

मैं गैर-उत्तर के लिए माफी मांगता हूं, लेकिन इसे पूरा करने का मार्ग अच्छी तरह से जलाया गया है और इससे दूसरों को कार्रवाई करने में मदद मिल सकती है (पुराने कीबोर्ड का चयन करना - या फ़र्मवेयर को अपग्रेड करने से बचना), जबकि हम लागू करने के लिए एक वास्तविक समाधान की प्रतीक्षा करते हैं। कैप्स लॉक कुंजी पर एक छोटा या कोई टाइमर नहीं।


2
एक विवरण मैं आपके उत्तर के बारे में उलझन में हूं: क्या आप कह रहे हैं कि यह गलत है कि जब कोई मैक ओएस एक्स में कैप्स-लॉक कुंजी को हटाता है, तो देरी हो जाती है? (मुझे नहीं पता कि आपके कथन की व्याख्या कैसे की जा सकती है "देरी का समय कोई फर्क नहीं पड़ता है कि कीबोर्ड किस समय ओएस चला रहा है"; लेकिन वह मेरे प्रत्यक्ष अनुभव का विरोधाभास करता है - जब तक कि Apple फर्मवेयर को समायोजित करने के लिए फर्मवेयर के लिए कुछ अनजाने एपीआई का उपयोग नहीं कर रहा है। समय?)
pnkfelix 3

मैंने ईएससी को रीमेक किया है और थोड़ा लंबा पकड़ अभी भी आवश्यक है। मैंने Seil नाम के थर्ड-पार्टी ऐप का उपयोग करते हुए, हालांकि, OSX में निर्मित किसी भी कार्यक्षमता के माध्यम से नहीं। कष्टप्रद, सुनिश्चित करने के लिए - क्या उनके डेवलपर्स विम का उपयोग नहीं करते हैं? गीज़।
intuited

0

"टॉगलिंग कैप्सलॉक-नोएशन ऑफ / ऑन" समाधान है कि ओपी मेरे वायर्ड मैक कीबोर्ड और मेरे मैकबुकप्रो कीबोर्ड दोनों पर काम करता है। ब्रैडली का कहना है कि यह केवल योसेमाइट पर काम करता है, लेकिन मैंने इसे स्नो लेपर्ड (10.6.8) और मेवरिक्स (10.9.5) पर सफलतापूर्वक इस्तेमाल किया है। मैंने इसका परीक्षण कुबंटु वीएम के अंदर भी किया है और कैप्स लॉक ने वीएम के अंदर सही तरीके से काम करना जारी रखा है।

  • कीबोर्ड सिस्टम वरीयताएँ खोलें, और इस पर क्लिक करें Modifier Keys...:

यहां छवि विवरण दर्ज करें

  • कैप्स लॉक कुंजी को सेट करें No Action, और क्लिक करें OK:

                    यहां छवि विवरण दर्ज करें

  • Modifier Keys...फिर से क्लिक करें, और कैप्स लॉक कुंजी को सेट Caps Lockकरें, और क्लिक करें OK:

                    यहां छवि विवरण दर्ज करें

यह केवल अगले रिबूट तक प्रभाव में रहता है।


1
मेरे लिए इसका कोई प्रभाव नहीं था। (सिएरा 10.12.6, मैक USB कीबोर्ड और
MBPro
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.