DefaultKeyBinding.dict - รูปแบบ NeXT แบบเก่าเทียบกับรูปแบบการจัดวาง XML


9

DefaultKeyBinding.dict

~/Library/KeyBindings/DefaultKeyBinding.dictไฟล์ช่วยให้คุณสามารถกำหนดปุ่มลัดของคุณเองใน Mac OS X ได้มันอาจจะเป็นหนึ่งในสองรูปแบบ: แบบเก่ารูปแบบถัดไป ( ตัวอย่าง ) หรือสไตล์ทันสมัยรูปแบบ XML plist ( ตัวอย่าง )

การปฏิเสธ+

ฉันต้องการเชื่อมคำสั่ง backspace ( + ) deleteWordBackward:อีกครั้งและฉันได้รับความช่วยเหลือในเธรด AskDifferentนี้ แนะนำว่าฉันใช้สิ่งนี้เป็นDefaultKeyBinding.dictไฟล์ของฉัน:

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

คำแนะนำนี้ใช้งานได้ (ขอบคุณพวก!) แต่ฉันได้ทำงานDefaultKeybinding.dictในรูปแบบ XML อยู่แล้วดังนั้นฉันจึงต้องการพยายามทำให้มันเป็นแบบนั้น ฉันเพิ่งเพิ่มข้อความนี้ใกล้ด้านล่างของไฟล์ที่มีอยู่ของฉัน:

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

และฉันก็ลองสร้างไฟล์ที่มีรูปแบบ XML ใหม่ด้วยเพียงแค่ + รายการ:

<?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>

แต่ไม่มีไฟล์ใดทำงาน จากนั้นสถานการณ์ที่ชัดเจนคือคุณสามารถเชื่อมโยง+ ในรูปแบบ NeXT แบบเก่าเท่านั้นและไม่ได้อยู่ในรูปแบบ Plist XML คำถามของฉันคือ:

  1. นี่ถูกต้องหรือไวยากรณ์ควรเปลี่ยนอย่างใดเมื่อฉันเปลี่ยนเป็นรูปแบบ XML?
  2. ฉันจะเสียใจที่ย้ายไฟล์ส่วนที่เหลือของฉันDefaultKeyBinding.dictไปยังไวยากรณ์เก่าหรือไม่ มันคงไม่เป็นการดีที่จะทำเช่นนั้น - เป็นเพียงหนึ่งหรือสองโหลเท่านั้น - แต่ฉันไม่แน่ใจว่ารูปแบบเก่านั้นถูกคัดค้านหรือไม่ได้รับคำแนะนำด้วยเหตุผลอื่น

แก้ไข: DefaultKeyBinding.dict ดั้งเดิม

มีคนขอข้อมูลเกี่ยวกับไฟล์ต้นฉบับของฉันในความคิดเห็นดังนั้นฉันคิดว่าฉันอาจรวมถึงสิ่งทั้งหมดที่นี่ด้วย

<?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>

ฉันไม่ได้ใช้รูปแบบ XML แต่ฉันอยากรู้ว่าคุณกำลังใช้เมตาคีย์อื่น ๆ ในแป้นพิมพ์ลัดของคุณในไฟล์ XML ที่คุณมีอยู่หรือไม่ คุณกำลังใช้~สำหรับตัวเลือกหรือ$กะ?
conorgriffin

หรือ^เพื่อการควบคุม?
conorgriffin

ฉันได้ทำงานกับรายการ~และ^แต่ไม่มีผู้ใดด้วยหรือ$ @(หมายเหตุ: ฉันไปข้างหน้าและเพิ่มไฟล์ DefaultKeyBindings.dict ดั้งเดิมของฉันไปที่ OP เช่นกันในกรณีที่กลายเป็นประโยชน์)
Micah R Ledbetter

มันแปลกฉันไม่สามารถทำงานได้เช่นกัน ดูเหมือนว่าจะไม่มีเอกสารที่ดีนัก คุณมีทางลัดจำนวนน้อยซึ่งไม่ใช่แค่เมตาคีย์ 1 ตัวและตัวอักษร 1 ตัวดังนั้นอาจลองแปลงค่าเหล่านั้นเพื่อทดสอบและถ้ามันใช้งานได้ อาจเป็นกรณีที่แสดงคีย์คำสั่งตามที่@ไม่เป็นที่ยอมรับในรูปแบบ XML ของไฟล์ plist มันไม่สมเหตุสมผล แต่ฉันไม่สามารถหาอะไรเพิ่มเติมเกี่ยวกับมัน
conorgriffin

จบลงด้วยการยื่นข้อผิดพลาดกับ Apple เกี่ยวกับเรื่องนี้; ลองดูว่าพวกเขาตอบกลับไหม :)
คา R Ledbetter

คำตอบ:


3

ฉันไม่คิดว่าคุณจะมีปัญหาในการใช้รูปแบบที่เก่ากว่า ตัวอย่างทั้งหมดที่ฉันพบใช้เครื่องหมาย NeXT เก่า แม้ว่าฉันจะไม่สามารถอธิบายได้ว่าทำไมรูปแบบ XML ไม่ทำงาน แต่มีวิธีแก้ปัญหาสำหรับแป้นพิมพ์ลัดนี้โดยเฉพาะซึ่งหมายความว่าคุณสามารถปล่อยให้DefaultKeyBinding.dictไม่มีใครแตะต้องเดิมได้

มีแอพพลิเคชั่นที่ชื่อว่าKeyRemap4MacBookซึ่งสามารถดาวน์โหลดได้ฟรีและคุณสามารถดูได้จากภาพหน้าจอด้านล่างคุณสามารถตั้งค่าแป้นพิมพ์ลัด+ แป้นพิมพ์ใหม่ได้โดยไม่ต้องแปลงไฟล์ส่วนที่เหลือของคุณDefaultKeyBinding.dictและวิธีนี้ไม่ได้ จำกัด เฉพาะแอปพลิเคชัน Cocoa

KeyRemap4MacBook


3

\U007fไม่สามารถใช้กับรายการคุณสมบัติ XML คุณจะต้องแทนที่ด้วย&#x007f;หรือตัวอักษรDELตัวอักษร


คุณสามารถแปลง plist แบบเก่าเป็น XML ด้วยplutil:

plutil -convert xml1 test.plist

และจาก XML เป็นแบบเก่าด้วยpl:

pl -input test.plist

DefaultKeyBinding.dict ของฉันปัจจุบันมี 151 บรรทัดและฉันไม่พบปัญหาใด ๆ ที่เก็บไว้เป็นรายการคุณสมบัติแบบเก่า รายการที่โพสต์โดยBrett TerpstraและJacob Rusอยู่ในรูปแบบเก่าเช่นกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.