Làm thế nào để loại bỏ hoặc vô hiệu hóa một bố trí bàn phím mặc định?


16

Có thể xóa hoặc tắt một trong các bố trí bàn phím mặc định của OS X Lion không?

Tôi đang sử dụng bố cục bàn phím tùy chỉnh và bây giờ tôi đã quản lý để đặt nó làm bố cục bàn phím mặc định trên toàn hệ thống , tôi muốn có thể bỏ chọn hoặc xóa bố cục bàn phím tích hợp của US US kèm theo HĐH X. Đây là một ảnh chụp màn hình - lưu ý rằng hộp kiểm bị tắt:

Ảnh chụp màn hình

Trong OS X 10.9, khung tùy chọn này đã được thiết kế lại, nhưng vẫn không có cách nào để loại bỏ bố cục bàn phím của US US tích hợp:

Ảnh chụp màn hình

Vì tôi không bao giờ sử dụng bố cục bàn phím ở Hoa Kỳ, tôi muốn loại bỏ nó, tức là xóa nó khỏi menu Nhập trong thanh menu. Tôi có thể làm cái này như thế nào?


Cập nhật: Câu trả lời của Daniel không thực sự trả lời câu hỏi này, nhưng nó cung cấp một số thông tin có giá trị liên quan đến vấn đề này:

Mac OS X dường như yêu cầu ít nhất một bố cục bàn phím mà hệ thống nhận ra là bố cục nhân vật Latin Latin được chọn.

Giả sử đây là thông tin chính xác (cảm ơn, Daniel!), Câu hỏi có thể được trả lời lại như sau:

Làm cách nào để làm cho OS X coi bàn phím tùy chỉnh là bố cục ký tự Latin?


Cập nhật: Tôi vừa đi qua một cái gì đó có thể giúp đỡ.


1
Tôi không nghĩ "Latin" là đủ. Điều đó có thể dễ dàng thực hiện ở Ukelele bằng cách đặt ID bàn phím thành Roman. Tôi nghi ngờ bố cục của bạn cũng phải là một phần của ApplePalLayouts.bundle trong bố trí hệ thống / thư viện / bàn phím.
Tom Gewecke

Câu trả lời:


20
  1. Kích hoạt nguồn đầu vào không giống như bố trí bàn phím vật lý của bạn từ Tùy chọn hệ thống (Tôi đã sử dụng Afghanistan Dari).
  2. Chạy đi f=~/Library/Preferences/ByHost/com.apple.HIToolbox*.plist; plutil -convert xml1 $f; open $f -e.
  3. Xóa các nguồn đầu vào khác ngoại trừ bố trí bàn phím được bật tạm thời và bố trí bàn phím tùy chỉnh của bạn.
  4. Đăng xuất và đăng nhập lại.
  5. Xóa bố trí bàn phím được kích hoạt tạm thời khỏi danh sách tài sản.
  6. Đăng xuất và đăng nhập lại.

Chỉnh sửa: phương pháp trên dường như đã ngừng hoạt động trong 10.9. Điều này làm việc trong cả 10.9 hoặc 10.8 mặc dù:

  1. Thay đổi nguồn đầu vào hiện tại để bố trí bàn phím tùy chỉnh của bạn.
  2. Mở ~/Library/Preferences/com.apple.HIToolbox.plist(trong 10.9) hoặc ~/Library/Preferences/ByHost/com.apple.HIToolbox.*.plist(trong 10.8 trở về trước). Bạn có thể chuyển đổi plist thành XML với plutil -convert xml1.
  3. Xóa nguồn đầu vào hoặc nguồn đầu vào bạn muốn tắt khỏi từ AppleEnabledInputSourcesđiển. Nếu có AppleDefaultAsciiInputSourcechìa khóa, hãy loại bỏ nó.
  4. Khởi động lại.

1
Aha, nó dường như hoạt động nếu bạn khởi động lại máy tính thay vì chỉ đăng xuất và quay lại (bước 4). Cảm ơn! Bạn có phiền khi đăng một câu trả lời mới với một liên kết đến tài nguyên của bạn để bạn có thể nhận được tiền thưởng không?
Mathias Bynens

1
@MathiasBynens Tôi đã chỉnh sửa câu trả lời và trang web của tôi. Khi tôi thử lại phương pháp thứ hai, tôi cũng cần khởi động lại để áp dụng các thay đổi.
Lri

4
Hoạt động tốt trong OS X 10.9 nếu bạn khởi động lại máy tính. Tuy nhiên, tôi cũng phải xóa bố cục tạm thời khỏi tệp plist và khởi động lại bằng 'sudo restart', nếu không thì bố cục tạm thời đã được thêm lại khi khởi động lại bình thường.
Chưa đặt tên_1

2
@Lri Ngày 10.9 Tôi phải xóa: AppleEnablesInputSource: 0 (mục bố cục mặc định cũ) và: AppleInputSourceHistory: dictionary (sử dụng PlistBuddy). Không khởi động lại, nhưng chỉ cần đăng xuất.
RolKau

1
Nó không hoạt động trên Yosemite đối với tôi. Bất cứ khi nào tôi thay đổi tệp trong Xcode, nó sẽ được khôi phục sau vài giây. Bất cứ ai có thể giải thích làm thế nào bạn làm điều đó chính xác?
Simon Perepelitsa

7

Dường như bạn không thể làm những gì bạn muốn mà không có một số hack chưa được phát hiện vào hệ thống . Mac OS X dường như yêu cầu ít nhất một bố cục bàn phím mà hệ thống nhận ra là bố cục "ký tự Latinh" được chọn. Điều này ngăn bạn không thể nhập mật khẩu của bạn vào màn hình đăng nhập, v.v. Nếu bạn chọn tiếng Pháp hoặc tiếng Canada hoặc bố cục bàn phím khác mà hệ thống nhận ra là ký tự Latinh, bạn có thể bỏ chọn bố cục Hoa Kỳ.

Vấn đề của bạn là bố cục tùy chỉnh của bạn, trong khi chứa các ký tự Latinh, không được hệ thống nhận ra là bố cục bàn phím Latin và do đó không thể là bố cục bàn phím được chọn duy nhất. Xem câu hỏi này (đáng buồn là thiếu một câu trả lời tuyệt vời) để biết thêm thông tin.

Lưu ý rằng một câu trả lời tuyệt vời cho câu hỏi này cũng sẽ trả lời câu hỏi của bạn. Than ôi, câu trả lời của tôi ở đây chỉ làm rõ vấn đề là gì, nhưng tôi không có giải pháp từng bước cho bạn. Mặc dù việc hack như vậy có thể xảy ra, tôi không thấy bằng chứng cho thấy ai đã tìm ra cách thuyết phục Mac OS X rằng một bàn phím tùy chỉnh cụ thể an toàn để sử dụng làm bàn phím có thể chọn duy nhất.


@Lri Tôi nghi ngờ bạn đúng, nhưng không có phần cứng để kiểm tra điều đó. Có lẽ có một người đọc trang web này ai có thể?
Daniel

7

Để hoàn thiện, tôi đã gửi đây là ID lỗi # 11137961 với Apple và đây là phản hồi tôi nhận được:

ID lỗi #: 11137961
Tiêu đề lỗi: Cho phép vô hiệu hóa bố cục bàn phím mặc định (tích hợp) khi sử dụng tùy chỉnh


Kỹ thuật đã xác định rằng vấn đề này hoạt động như dự định dựa trên các thông tin sau:

Nếu vấn đề chỉ là bố trí bàn phím của bạn được công nhận là có khả năng ASCII, thì cách dễ nhất là "đóng gói" .keylayout của bạn, sau đó Info.plist của bạn có thể chứa từ điển "KLInfo_" mô tả thêm về nó, như:

 <key>TISIntendedLanguage</key>
 <string>en</string>   # BCP 47 language string

Tôi cần xem xét thêm một chút, nhưng có vẻ như TIS sẽ quét đầu ra bố trí bàn phím để tạo ra một USet và tạo ra ý tưởng ban đầu về ascii-ness bằng cách nó có vượt qua bài kiểm tra tối thiểu sau đây không:

 uset_containsRange(uSet, 0x0020, 0x0021) && uset_containsRange(uSet, 0x002C, 0x0039) &&
 uset_containsRange(uSet, 0x003F, 0x005A) && uset_containsRange(uSet, 0x0061, 0x007A);

TIS cũng sẽ kiểm tra tập mẫu cho các miền được chỉ định ở trên và yêu cầu một tá ký tự tốt trong phạm vi [a-z].

Đối với một số gợi ý về bó a .keylayout, cũng xem TextInputSources.h.

Nếu đây vẫn là một vấn đề hoặc bạn có câu hỏi liên quan đến việc giải quyết vấn đề này, vui lòng cập nhật báo cáo lỗi của bạn với thông tin đó.

Chúng tôi hiện đang đóng báo cáo lỗi này.


1
Đã kiểm tra: bố cục của tôi đáp ứng các tiêu chí đó nhưng nó không được công nhận là bố cục mặc định có thể. Vì vậy, các kỹ sư của họ đã không cung cấp thông tin đầy đủ hoặc dường như cung cấp thông tin không chính xác.
Chưa đặt tên_1

1
@DmitryDulepov Có thể sử dụng nó làm bố cục mặc định, nhưng nút để loại bỏ cái khác vẫn không được kích hoạt; bạn sẽ phải làm điều đó bằng tay (xem nhận xét của tôi về câu trả lời của
Lri

@RolKau, có nhưng có những vấn đề khác sau. Nếu bạn có nhiều bố cục, bố cục tùy chỉnh mới sẽ không khả dụng trong một số ứng dụng. Ví dụ: bạn sẽ không thể chuyển sang nó trong thanh tìm kiếm của AppStore. Ít nhất, tôi không thể.
Chưa đặt tên_1

2

Đây là một ý tưởng khác: Một vài năm trước, các gói cho Bố cục Bàn phím của Apple dễ dàng chỉnh sửa hơn và vấn đề này dường như đã được giải quyết:

http://hintsforums.macworld.com/archive/index.php/t-71629.html

Có lẽ người ta vẫn có thể sử dụng gói có thể chỉnh sửa cũ, nếu bạn có thể lấy một gói từ một hệ thống cũ, trong HĐH hiện tại.


1

Tôi vừa đi qua một cái gì đó có thể giúp đỡ. Đây là:

$ defaults read /Library/Preferences/com.apple.HIToolbox.plist 
{
    AppleCurrentKeyboardLayoutInputSourceID = "com.apple.keylayout.Dutch";
    AppleDefaultAsciiInputSource =     {
        InputSourceKind = "Keyboard Layout";
        "KeyboardLayout ID" = 1337;
        "KeyboardLayout Name" = QWERTY;
    };
    AppleEnabledInputSources =     (
                {
            InputSourceKind = "Keyboard Layout";
            "KeyboardLayout ID" = 26;
            "KeyboardLayout Name" = Dutch;
        }
    );
    AppleInputSourceHistory =     (
                {
            InputSourceKind = "Keyboard Layout";
            "KeyboardLayout ID" = 26;
            "KeyboardLayout Name" = Dutch;
        }
    );
    AppleSelectedInputSources =     (
                {
            InputSourceKind = "Keyboard Layout";
            "KeyboardLayout ID" = 26;
            "KeyboardLayout Name" = Dutch;
        }
    );
}

Đây là trên hệ thống của tôi, nơi bố trí bàn phím tùy chỉnh của tôi (được đặt tên là QWERTY ') là mặc định. Lưu ý rằng các thuộc tính KeyboardLayout NameKeyboardLayout IDtham chiếu đến ID và tên ở đầu .keylayouttệp.

Như bạn có thể thấy, defaults read /Library/Preferences/com.apple.HIToolbox.plist AppleCurrentKeyboardLayoutInputSourceIDvẫn trả về chuỗi "com.apple.keylayout.Dutch". Có một danh sách ở đâu đó của các com.apple.keylayoutgiá trị có sẵn ? Có thể có được một giá trị như vậy cho một bố trí bàn phím tùy chỉnh? Vì trong trường hợp đó, chúng ta có thể ghi đè lên tài sản.

Ngoài ra, các AppleEnabledInputSources, AppleInputSourceHistoryAppleSelectedInputSourcestính tất cả dường như bỏ qua cách bố trí bàn phím tùy chỉnh, như giá trị của chúng tương ứng với cách bố trí bàn phím OS X có nguồn gốc ban đầu tôi chọn khi chạy Setup Assistant.


Một cập nhật khác: Aha! Có vẻ như có một plisttệp khác mà chúng tôi có thể sao chép các cài đặt.

$ defaults read ~/Library/Preferences/ByHost/com.apple.HIToolbox.*.plist 
{
    AppleCurrentKeyboardLayoutInputSourceID = "org.unknown.keylayout.QWERTY";
    AppleDateResID =     {
        smRoman = 2;
    };
    AppleEnabledInputSources =     (
                {
            InputSourceKind = "Keyboard Layout";
            "KeyboardLayout ID" = 26;
            "KeyboardLayout Name" = Dutch;
        },
                {
            InputSourceKind = "Keyboard Layout";
            "KeyboardLayout ID" = 1337;
            "KeyboardLayout Name" = QWERTY;
        },
                {
            "Bundle ID" = "com.apple.CharacterPaletteIM";
            InputSourceKind = "Non Keyboard Input Method";
        },
                {
            "Bundle ID" = "com.apple.KeyboardViewer";
            InputSourceKind = "Non Keyboard Input Method";
        },
                {
            "Bundle ID" = "com.apple.inputmethod.ironwood";
            InputSourceKind = "Non Keyboard Input Method";
        }
    );
    AppleGlobalTextInputProperties =     {
        TextInputGlobalPropertyPerContextInput = 0;
    };
    AppleInputSourceHistory =     (
                {
            InputSourceKind = "Keyboard Layout";
            "KeyboardLayout ID" = 1337;
            "KeyboardLayout Name" = QWERTY;
        },
                {
            InputSourceKind = "Keyboard Layout";
            "KeyboardLayout ID" = 26;
            "KeyboardLayout Name" = Dutch;
        }
    );
    AppleNumberResID =     {
        smRoman = 2;
    };
    AppleSelectedInputSources =     (
                {
            InputSourceKind = "Keyboard Layout";
            "KeyboardLayout ID" = 1337;
            "KeyboardLayout Name" = QWERTY;
        },
                {
            "Bundle ID" = "com.apple.inputmethod.ironwood";
            InputSourceKind = "Non Keyboard Input Method";
        }
    );
    AppleTimeResID =     {
        smRoman = 2;
    };
}

Như bạn có thể nhìn thấy ( AppleCurrentKeyboardLayoutInputSourceID), rõ ràng tùy chỉnh bàn phím bố trí được các giá trị như "org.unknown.keylayout.FOO"nơi FOOlà tên của bố trí bàn phím (như quy định trong .keylayouttập tin).

Vì vậy, để thử đặt tất cả các giá trị cho bố cục bàn phím tùy chỉnh của chúng tôi, được đặt tên QWERTYvà với ID 1337(được chỉ định trong .keylayouttệp):

sudo defaults write /Library/Preferences/ByHost/com.apple.HIToolbox.plist AppleCurrentKeyboardLayoutInputSourceID -string "org.unknown.keylayout.QWERTY"

Đáng buồn thay, điều này dường như không hoạt động.

Cập nhật: @Lri đã phát hiện ra một phương pháp đáng tin cậy - xem câu trả lời của anh ấy.


1

Phản hồi của Apple đối với báo cáo lỗi của tôi, trong đó tôi đã yêu cầu làm cho nó có thể xóa bố cục bàn phím mặc định của hệ thống nếu một cái khác được chọn thông qua Tùy chọn hệ thống:

Engineering đã xác định rằng đây không phải là vấn đề để Apple giải quyết.

Giả sử này bố trí bàn phím tùy chỉnh được đóng gói ( .keylayoutlà bên trong một gói như foo.bundle/Contents/Resources/foo.keylayout), thì đây có thể là dễ dàng như việc chèn vào Info.plist's KLInfo_ từ điển:

<key>KLInfo_Qwerty</key>
<dict>
  <key>TISInputSourceID</key>
  <string>com.imgur.stack.keyboardlayout.Qwerty</string>
  <key>TISIntendedLanguage</key>  
  <string>en</string> 
</dict>

Nếu bố cục này là cần thiết cho toàn hệ thống (nghĩa là bao gồm nhập mật khẩu), nó có thể được cài đặt /Library/Keyboard Layouts/, thay vì cùng một vị trí ~/Library/.

Vui lòng cập nhật báo cáo lỗi của bạn để cho chúng tôi biết liệu đây có còn là vấn đề với bạn không.

Nếu bạn có câu hỏi liên quan đến việc giải quyết vấn đề này, vui lòng cập nhật báo cáo lỗi của bạn với họ.

Hãy chắc chắn kiểm tra thường xuyên các sản phẩm mới của Apple để biết bất kỳ bản cập nhật nào có thể ảnh hưởng đến vấn đề này. Một lần nữa, cảm ơn bạn đã dành thời gian để gửi lỗi. Chúng tôi chân thành đánh giá cao đầu vào của bạn.


1

Tôi vừa xóa thành công bố cục mặc định trên High Sierra bằng phương pháp sau:

  1. Điều hướng đến Library/Preferencesthư mục của bạn .
  2. Mở tệp com.apple.HIToolbox.plisttệp, bằng cách bấm đúp vào tệp hoặc bằng cách sử dụng opentrên dòng lệnh. Điều này sẽ làm cho XCode bật lên và nó có thể muốn cài đặt các thành phần bổ sung.
  3. Lặp lại bước 2 cho đến khi XCode cuối cùng hiển thị cấu trúc của tệp.
  4. Xác định vị trí AppleEnabledInputSourcesnút và mở ra.
  5. Xóa mục nhập cho bố cục bạn muốn loại bỏ.
  6. Lưu tệp và thoát XCode.

Bây giờ bạn có thể cần phải đăng xuất hoặc khởi động lại để thực hiện lần cuối cùng này. Tôi đã phải khởi động lại dù sao cho một số cập nhật để điều đó đã giúp tôi. Bây giờ tôi đang vui vẻ gõ Neo trong một tốc độ băng hà đầy đau đớn nhưng không có một QWERTZ nào trong tầm mắt!


0

Đây là một ý tưởng: Sau khi đảm bảo id bàn phím của bố cục tùy chỉnh của bạn được đặt thành Roman, hãy tạo một ApplePalLayouts.bundle tùy chỉnh chỉ chứa bố cục đó và thay thế bố cục này cho hệ điều hành đi kèm với HĐH. (Tôi không biết bản thân mình có liên quan gì trong việc tạo .bundle)


0

Bạn có thể sử dụng Ukelele để đánh dấu bố cục đã sử dụng của mình là bố cục sử dụng tập lệnh Latin. Xuất dưới dạng một gói, cài đặt và sau đó bạn sẽ có thể xóa cái này.


-1

Nó có thể được thực hiện dễ dàng. Đầu tiên thay đổi bố cục tùy chỉnh của bạn (sử dụng thanh menu Menu đầu vào), sau đó bỏ chọn bố cục Hoa Kỳ.


Bố cục tùy chỉnh của tôi là một trong những hiện đang sử dụng. Như đã đề cập trong câu hỏi, tôi không sử dụng bố cục bàn phím Hoa Kỳ nữa.
Mathias Bynens

Tôi sống không có bố trí bàn phím Hoa Kỳ và không có vấn đề gì để bỏ chọn nó. Các tùy chỉnh khác tôi có là khu vực và ngôn ngữ không mặc định, không thuộc Hoa Kỳ.
shpokas

Bạn có thể bỏ chọn bố cục bàn phím mà bạn đã chọn khi thiết lập Mac ban đầu không?
Mathias Bynens

Vâng, tôi có thể nếu tôi thay đổi khu vực là tốt.
shpokas

Hãy xem, đó là vấn đề. Luôn có một trong những bố trí bàn phím tích hợp của OS X mà bạn không thể xóa hoặc tắt.
Mathias Bynens
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.