DefaultKeyBinding.dict - định dạng NeXT kiểu cũ so với định dạng plist XML


9

DefaultKeyBinding.dict

Các ~/Library/KeyBindings/DefaultKeyBinding.dicttập tin cho phép bạn xác định tổ hợp phím của riêng bạn trong Mac OS X. Nó có thể là một trong hai định dạng: kiểu cũ định dạng NeXT ( ví dụ ) hoặc hiện đại mang phong cách định dạng plist XML ( ví dụ ).

Rebinding +

Tôi muốn khởi động lại backspace lệnh ( + ) deleteWordBackward:và tôi đã nhận được một số trợ giúp trong chuỗi AskDifferent này . Có ý kiến ​​cho rằng tôi sử dụng nó làm DefaultKeyBinding.dicttập tin của mình :

/* my keybindings */
{
"@\U007F" = "deleteWordBackward:"; /* delete backwards one word */
}  

Lời khuyên này đã có hiệu quả (cảm ơn các bạn!), Nhưng tôi đã làm việc DefaultKeybinding.dictở định dạng XML, vì vậy tôi muốn thử làm cho nó hoạt động theo cách đó. Lần đầu tiên tôi chỉ thêm văn bản này ở gần cuối tệp hiện có của mình:

<key>@\U007F</key>
<string>deleteWordBackward:</string>

Và tôi cũng đã thử tạo một tệp có định dạng XML hoàn toàn mới chỉ với mục +

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>@\U007F</key>
    <string>deleteWordBackward:</string>
</dict>
</plist>

Nhưng không tập tin nào làm việc. Do đó, tình huống rõ ràng là bạn chỉ có thể rebind + ở định dạng NeXT kiểu cũ chứ không phải ở định dạng plist XML. Câu hỏi của tôi là:

  1. Điều này có chính xác không, hay cú pháp nên thay đổi bằng cách nào đó khi tôi chuyển sang định dạng XML?
  2. Tôi có hối tiếc khi chuyển phần còn lại của DefaultKeyBinding.dicttệp sang cú pháp cũ không? Sẽ không có nhiều việc phải làm như vậy - đó chỉ là một hoặc hai chục mục - nhưng tôi không chắc kiểu cũ có bị phản đối hay không được khuyến khích vì một số lý do khác.

Chỉnh sửa: Bản gốc DefaultKeyBinding.dict

Ai đó đã yêu cầu thông tin về tập tin gốc của tôi trong các bình luận, vì vậy tôi cho rằng tôi cũng có thể bao gồm toàn bộ điều ở đây.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key></key>
    <string>complete:</string>
    <key>^ </key>
    <string>setMark:</string>
    <key>^a</key>
    <string>moveToBeginningOfLine:</string>
    <key>^e</key>
    <string>moveToEndOfLine:</string>
    <key>^j</key>
    <string>setMark:</string>
    <key>^v</key>
    <string>pageDown:</string>
    <key>^w</key>
    <string>deleteToMark:</string>
    <key>^x</key>
    <dict>
        <key>^m</key>
        <string>selectToMark:</string>
        <key>^x</key>
        <string>swapWithMark:</string>
    </dict>
    <key>~</key>
    <string>deleteWordBackward:</string>
    <key>~&lt;</key>
    <string>moveToBeginningOfDocument:</string>
    <key>~&gt;</key>
    <string>moveToEndOfDocument:</string>
    <key>~^h</key>
    <string>deleteWordBackward:</string>
    <key>~b</key>
    <string>moveWordBackward:</string>
    <key>~d</key>
    <string>deleteWordForward:</string>
    <key>~f</key>
    <string>moveWordForward:</string>
    <key>~n</key>
    <string>scrollLineDown:</string>
    <key>~p</key>
    <string>scrollLineUp:</string>
    <key>~v</key>
    <string>pageUp:</string>
    <key>~</key>
    <string>deleteWordBackward:</string>
</dict>
</plist>

Tôi chưa sử dụng định dạng XML, nhưng tôi tò mò liệu bạn có đang sử dụng bất kỳ khóa meta nào khác trong các phím tắt trong bàn phím XML hiện có của bạn không. Bạn đang sử dụng ~cho tùy chọn hoặc $cho ca?
conorgriffin

hay ^để kiểm soát?
conorgriffin

Tôi có các mục làm việc với ~^, nhưng không có $hoặc @. (Lưu ý: Tôi đã tiếp tục và thêm tệp DefaultKeyBindings.dict ban đầu của mình vào OP trong trường hợp hóa ra là hữu ích.)
Micah R Ledbetter

Thật kỳ lạ, tôi cũng không thể làm cho nó hoạt động được. Nó dường như không được ghi chép lại. Bạn chỉ có một số lượng nhỏ các phím tắt không chỉ đơn giản là 1 meta-key và 1 chữ cái nên có thể thử chuyển đổi chúng để kiểm tra và nếu chúng hoạt động thì có khả năng các phím tắt khác của bạn cũng sẽ như vậy. Đây có thể là trường hợp đại diện cho khóa lệnh @không được chấp nhận theo kiểu XML của tệp plist. Nó không có ý nghĩa nhiều nhưng tôi không thể tìm thấy gì thêm về nó.
conorgriffin

Đã kết thúc việc gửi một lỗi với Apple liên quan đến điều này; Hãy xem họ trả lời :).
Micah R Ledbetter

Câu trả lời:


3

Tôi không nghĩ bạn sẽ gặp vấn đề gì khi sử dụng định dạng cũ hơn. Tất cả các ví dụ tôi đã tìm thấy sử dụng ký hiệu NeXT cũ. Mặc dù tôi không thể giải thích lý do tại sao định dạng XML không hoạt động, có một cách giải quyết cho lối tắt bàn phím cụ thể này, điều đó có nghĩa là bạn có thể để DefaultKeyBinding.dictnguyên bản không bị ảnh hưởng.

Có một ứng dụng có tên KeyRemap4MacBook miễn phí tải xuống và bạn có thể thấy từ ảnh chụp màn hình bên dưới, bạn có thể ánh xạ lại phím tắt + mà không cần chuyển đổi phần còn lại của DefaultKeyBinding.dicttệp và phương pháp này không giới hạn ở các ứng dụng Cacao.

KeyRemap4MacBook


3

\U007fkhông thể được sử dụng trên danh sách thuộc tính XML. Bạn cần thay thế nó bằng &#x007f;hoặc một DELký tự chữ .


Bạn có thể chuyển đổi một plist kiểu cũ sang XML bằng plutil:

plutil -convert xml1 test.plist

Và từ XML sang kiểu cũ với pl:

pl -input test.plist

DefaultKeyBinding.dict của tôi hiện có 151 dòng và tôi không gặp phải bất kỳ vấn đề nào khi lưu trữ dưới dạng danh sách thuộc tính kiểu cũ. Những bài được đăng bởi Brett TerpstraJacob Rus cũng ở định dạng kiểu cũ.

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.