題:
引導至Linux時如何消除Apple MacBook Pro鋁製鍵盤上的大寫鎖定延遲
pnkfelix
2013-02-06 18:41:44 UTC
view on stackexchange narkive permalink

Apple的MacBook Pro的大寫鎖定鍵有一個輕微延遲。也就是說,大寫鎖定鍵的按下時間必須比正常情況稍長一點,才能註冊按下該鍵所需要的按鍵大寫鎖定。

這太煩人了。

(有人從 stackoverflow複製過來,因為它在此處被關閉為“主題”)。

進一步詳細說明:Apple認為這是一項功能,並且他們的知識庫文章中沒有披露如何禁用此延遲。

但是,我有理由相信可以這樣做。

p>

值得注意的是,至少在我的經驗中,我發現,如果您在Mac OS X上重新映射了大寫鎖定鍵(在系統偏好設置..鍵盤..修改鍵中),例如將其映射到Control,然後在我登錄Mac OS X時延遲消失

我的問題是,當我啟動到Ubuntu Linux時,延遲仍然存在在這種情況下,即使我將Caps Lock鍵重新映射為Control,延遲仍然存在。

因此,問題是:Apple如何禁用該延遲,更重要的是,一個如何復制該延遲?

更新:超級用戶上有一個線程可以提供解決方法。我尚未嘗試那裡的建議(即:(1)切換CapsLock-NoAction的開/關,以及(2)固件升級)。我無法從該線程的上下文中得知該解決方法是否已在Ubuntu安裝上進行了測試。

我以前從沒注意到這一點,但是我和我玩過,我明白你的意思了。如果您太快地按下了大寫鎖定鍵,它什麼也沒做。我之前從沒發現過問題,只是嘗試了禁用/重新啟用大寫鎖定鍵的技巧,它使它立即生效!現在,無論我快按了哪個鍵,它都可以切換大寫鎖定。很奇怪!
一直以為我快要瘋了:p我可以看到它的好處,但是在某些情況下,它確實使我很煩。最好知道是否可能!
確實,(隨後在Mac OS X上)禁用/重新啟用大寫鎖定技巧似乎確實使問題消失了,一旦隨後重新引導至Linux。但是對我來說,這種影響是否持久還不清楚,我關閉了一段時間(數週甚至是一個月以上),然後在今天早上直接將其啟動到Linux時,延遲又回來了。對我來說還是很神秘的。
因此,僅檢查一下,似乎沒有針對此問題的Linux修復程序?
我還沒有找到。最近沒有尋找修復程序,但是我現在將嘗試更頻繁地在本機上運行Linux(而不是在沒有問題的VM中運行),以便可以使用`rr`進行調試,等等。也許我會再次嘗試找到解決方法。
[此處](https://apple.stackexchange.com/questions/284899/remove-caps-delay-mbp15-touchbar-late-2016)是適用於macOS的修復程序,可以在macOS下運行。
如果99%的“功能”的受害者甚至不知道它正在發生,我也不會感到驚訝。在開始的大約十次左右,我以為是我的錯,直到我開始嘗試點擊按鈕。那是這個“功能”最糟糕的部分。從字面上看,它使人們認為自己的打字不好。
七 答案:
jmrk
2015-08-12 22:04:38 UTC
view on stackexchange narkive permalink

我已經知道如何做到這一點。簡而言之,您必須將包含 0x9、0x0、0x0、0x0 字節的“特徵報告”作為根發送給相應的Hidraw設備。

您可以找到合適的hidraw使用以下命令的設備:

  dmesg | grep蘋果| grep鍵盤| grep輸入0 |尾-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鍵盤| grep input0 | tail -1 | sed -e的s /。 * hidraw \([[:digit:]] \ + \)。* / \ / dev \ / hidraw \ 1 /')
  4. sudo ./disable-capslock-延遲$ HIDDEVICE
  5. ol>

    每次重新啟動(或拔下並重新插入鍵盤)時,都必須執行步驟3和4。您可以將它們放入 /etc/rc.local (或發行版的等效版本)中以在啟動時執行它們(在這種情況下,您不需要 sudo ;並且您可能想要將已編譯的二進製文件移到 / usr / local / sbin / 之類的文件中。)

    我已經對供應商ID,設備ID和報告描述符進行了一些安全檢查。長度。如果您的模型與我的模型不同,則可能必須更改後兩個。

       #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一個hidraw設備作為第一個也是唯一的參數!\ n“); printf(“您可能會找到正確的設備,帶有:\ n”); printf(“ dmesg | grep Apple | grep鍵盤| grep input0 | tail -1 |”“ sed -e's /。 hidraw \([[:::]] \ + \)。 / \ / dev \ / hidraw \ 1 /'\ n“);返回1; } int fd,i,res,desc_size = 0; char buf [256]; struct hidraw_devinfo信息; char * device = argv [1]; fd = open(設備,O_RDWR | O_NONBLOCK);如果(fd < 0){perror(“無法打開設備”);返回1; } memset(&info,0,sizeof(info)); memset(buf,0,sizeof(buf)); //獲取報告描述符大小res = ioctl(fd,HIDIOCGRDESCSIZE,&desc_size);如果(res < 0){perror(“ HIDIOCGRDESCSIZE”); } if(desc_size!= 75){printf(“錯誤:意外的描述符大小%d;您可能得到了”“錯誤的hidraw設備!\ n”,desc_size);返回1; } //獲取原始信息res = ioctl(fd,HIDIOCGRAWINFO,&info);如果(res < 0){perror(“ HIDIOCGRAWINFO”); } else {if(info.vendor!= 0x05ac){printf(“錯誤:錯誤的供應商ID,請確保您使用了正確的”“ hidraw設備!\ n”);返回1; }如果(info.product!= 0x0250){printf(“警告:未知產品ID 0x%x!\ n”,info.product); } // //獲取特徵buf [0] = 0x09; //報告編號res = ioctl(fd,HIDIOCGFEATURE(256),buf);如果(res < 0){perror(“ HIDIOCGFEATURE”); } else {printf(“ HID功能報告(更改前):\ n \ t”);對於(i = 0; i < res; i ++)printf(“%hhx”,buf [i]); puts(“ \ n”); } //設置特徵buf [0] = 0x09; //報告編號buf [1] = 0x00; //報告數據buf [2] = 0x00; //填充buf [3] = 0x00; //填充res = ioctl(fd,HIDIOCSFEATURE(4),buf);如果(res < 0){perror(“ HIDIOCSFEATURE”); } else {printf(“大寫鎖定延遲已禁用。\ n”); } //獲取特徵buf [0] = 0x09; //報告編號res = ioctl(fd,HIDIOCGFEATURE(256),buf);如果(res < 0){perror(“ HIDIOCGFEATURE”); } else {printf(“ HID功能報告(更改後):\ n \ t”); 對於(i = 0; i < res; i ++)printf(“%hhx”,buf [i]); puts(“ \ n”); } close(fd);返回0;}

看起來不錯,謝謝!出於興趣,您是如何找到它的(需要發送的魔術字節)?
-1
哦,我必須嘗試一下!
(至少,我確實確實獲得了不同的描述符大小。不過,我還是要對其進行調整,看看它是如何工作的。)
我將接受此答案,因為它最接近實際確認所描述的問題並提供可信的解決方案(即使在我自己的情況下,描述符的大小也不同)。
哇。蘋果,你也噓!
[此處] [1]是移植到macOS的修復代碼。 [1]:https://apple.stackexchange.com/questions/284899/remove-caps-delay-mbp15-touchbar-late-2016
michelle
2016-11-24 05:31:18 UTC
view on stackexchange narkive permalink

這是macOS Sierra的修復程序。

轉到系統偏好設置> Accessibility

當可訪問性窗口打開時-在窗口的左側,單擊Keyboard

然後將有2個選項-粘滯鍵和慢鍵-單擊慢鍵旁邊的框以將其啟用-然後單擊 Options ... 按鈕–新窗口將帶有一個滑塊,用於更改接受延遲-默認情況下位於中間。將該按鈕一直滑到最左邊,這樣可以使時間最短。

現在應該將其修復。尚未嘗試查看該修復程序是否在重新啟動後仍然存在,但我希望它會保留。

我激動了一秒鐘,但是當我去這裡看時,慢速鍵沒有啟用,因此僅適用於使用慢速鍵的人:
這確實減少了一點,但是打開大寫鎖定比關閉仍然慢。即使設置是最快的,鍵重複率也會降低到爬網的速度。(Sierra 10.12.6)
這不是解決當前問題的適當方法,因為它會減慢keyrepat的速度,並且在保留退格鍵時您將無法再正確刪除內容。
Bradley
2015-05-15 15:56:52 UTC
view on stackexchange narkive permalink

編輯:對於希望消除OS X中大寫鎖定鍵延遲的用戶來說,這似乎是一個流行的著陸問題。從OS X Mojave開始,

轉到“系統偏好設置”;輔助功能;鍵盤;啟用慢鍵並進入選項;將延遲降低到最小。到目前為止,我注意到的唯一不想要的副作用是按住它時退格動作緩慢。一般來說,無論如何,我都會使用CMD + A / CMD + SHIFT + L / R / CMD + SHIFT + CTRL + L / R,所以這不是大問題。

從El Capitan開始,

該解決方案非常難以捉摸,除非您特別想一開始就將其刪除,否則您將不會真正知道已將其刪除。我要向您展示的方式純粹是針對OSX(當前)的最新版本,優勝美地。但是,您絕對可以將此方法應用於以前的版本和將來的版本。

解決方案很簡單。如果您通過左上角的蘋果徽標導航至“系統”偏好設置中的“鍵盤”,則將顯示此屏幕

enter image description here

如果單擊修改鍵按鈕,您可以更改每個可編程鍵的功能。您所要做的只是將大寫鎖定鍵設置為不執行任何操作,然後按確定以使您返回鍵盤菜單。完成後,返回到修改鍵,然後將大寫鎖定鍵更改回大寫鎖定,這將消除延遲!請注意,在您進入睡眠狀態,重新啟動設備或關閉設備電源之前,此修復程序將一直保留。

它們是奇怪的修復程序,這引出了一個問題,為什麼當此修復程序完全基於軟件時,為什麼他們不提供消除延遲的選項。但是,嘿,至少有一種方法!

快樂的字幕。

這如何解決我在Linux中的問題?
更清楚地說:最初的問題是:“ ...當我登錄Mac OS X時,延遲消失了。我的問題是,當我啟動到Ubuntu Linux時,延遲仍然存在,在這種情況下,即使我重新映射了使用Caps Lock鍵進行控制,延遲仍然存在。”
啊!我想我應該更仔細地閱讀OP問題,我在OSX上發現完全解除綁定Caps鍵並重新綁定解決了這個問題。也許延遲仍然存在是因為您要綁定控制權,如果還沒有解決方法,值得嘗試一切:)
這種方法對我沒有任何影響。(Sierra 10.12.6)
Thomas Carl-Erik Jönsson
2016-11-17 15:23:09 UTC
view on stackexchange narkive permalink

轉到系統偏好設置>輔助功能>鍵盤>啟用慢鍵>更改接受延遲到最左側(很短)!這對我有用。

您是否正在描述Mac OS X中的步驟?如問題所述,這如何解決Ubuntu Linux中的問題?
是,對的。我不知道Ubuntu Linux,對不起。 我想我正在解決的主要標題是“如何消除Apple MacBook Pro鋁製鍵盤上的大寫鎖定延遲*”,也許還有一個問題:“ Apple如何禁用延遲”。:-) 最好的問候托馬斯,瑞典 *這個問題是我找到並閱讀此提示的原因,但沒有任何幫助,所以我自己解決了問題:P
按照米歇爾的回答:確實減少了一點,但是打開大寫鎖定比關閉仍然慢。即使設置是最快的,鍵重複率也會降低到爬網的速度。(Sierra 10.12.6)
bmike
2013-04-13 21:09:18 UTC
view on stackexchange narkive permalink

我確實知道大寫鎖定延遲是鍵盤本身固件的功能-因此,您可以確定,無論當前鍵盤驅動的操作系統是什麼,延遲時間都會發生。

我也知道Apple不提供將固件刷新到較低級別的途徑,因此我們所有人都必須等待,直到有足夠硬件經驗的人在博客上記錄他們為誘騙硬件加載較舊固件而執行的工具和步驟。 (或提供看起來像較新的固件,它將延遲恢復為以前的工作方式,而沒有任何延遲。)

我為無法回答表示歉意,但實現此目的的途徑很光明,可能在我們等待真正的解決方案在大寫鎖定鍵上設置短計時器或無計時器的同時,幫助其他人同時採取行動(選擇較舊的鍵盤-或避免升級固件)。

我對您的回答感到困惑:您是說在Mac OS X中重新映射大寫鎖定鍵時,延遲消失了嗎? (我不知道該如何解釋您的陳述“無論當前鍵盤驅動的是什麼操作系統,延遲時間都會發生”;但這與我的直接經驗相矛盾-除非Apple對固件使用了一些未公開的API來調整固件,定時?)
我已經將我的地圖重新映射到ESC,仍然需要稍長的保留時間。不過,我是使用名為Seil的第三方應用程序完成此操作的,而不是通過OSX內置的任何功能進行的。可以肯定的是,他們的開發人員不使用Vim嗎?真是的
Neil Steiner
2015-08-07 21:35:49 UTC
view on stackexchange narkive permalink

OP所指的“切換CapsLock-NoAction關/開”解決方案可在我的有線Mac鍵盤和MacBookPro鍵盤上使用。布拉德利說,這僅適用於優勝美地,但我已經在雪豹(10.6.8)和小牛(10.9.5)上成功使用過。我也在Kubuntu VM中進行了測試,並且Caps Lock在VM中繼續正常工作。

  • 打開鍵盤系統偏好設置,然後單擊修飾鍵...

enter image description here

  • 將Caps Lock鍵設置為 No Action ,然後單擊確定

enter image description here

  • 單擊修飾鍵...再次並將Caps Lock鍵設置為 Caps Lock ,然後單擊 OK

enter image description here

這僅在下一次重新啟動之前一直有效。

這對我沒有影響。(Sierra 10.12.6,Mac USB鍵盤和MBPro上的內置)
wukong
2020-08-14 08:17:12 UTC
view on stackexchange narkive permalink
  1. 下載並安裝以下軟件
  2. ol>
  • Karabiner
  • 哈默斯龐
  1. 使用Karabiner將CapsLock鍵映射到F19。
  2. 在路徑〜/ .hammerspoon 下編輯 init.lua ,將下面的代碼粘貼。
  3. ol>
      pressedF19 = function()
        hs.hid.capslock.toggle()
    結束
    
    hs.hotkey.bind({},'F19',PressedF19,nil)
     

    然後重新加載錘勺配置,以使更改生效。

    在此處查看我的博客 http://hellohtml5.com/2019/04/25/best-way-to-disable-capslock-delay-on-mac/

嗨,歡迎問不同。感謝您的帖子,但請注意,問題是關於Linux的,OP已在macOS上解決了該問題。


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...