DefaultKeyBinding.dict-구식 NeXT 형식과 XML plist 형식


9

DefaultKeyBinding.dict

~/Library/KeyBindings/DefaultKeyBinding.dict파일을 사용하면 Mac OS X에서 고유 한 키 바인딩을 정의 할 수 있습니다. 이전 스타일 NeXT 형식 ( ) 또는 현대식 XML plist 형식 ( ) 의 두 가지 형식 중 하나 일 수 있습니다 .

리 바인딩 +

나는 명령 백 스페이스 ( + ) 를 리 바인드 deleteWordBackward:하고 싶었고이 AskDifferent 스레드 에서 도움을 얻었습니다 . 이것을 내 DefaultKeyBinding.dict파일 로 사용하는 것이 좋습니다 .

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

이 조언은 효과가 있었지만 (감사합니다!), 이미 DefaultKeybinding.dictXML 형식으로 작업 하고 있으므로 그렇게 작동 시키려고했습니다. 먼저 기존 파일의 맨 아래 근처에이 텍스트 만 추가했습니다.

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

그러나 두 파일 모두 작동하지 않았습니다. 명백한 상황은, 다음, 당신은 바인딩 할 수 있다는 것입니다 + 에만 이전 스타일 넥스트 형식으로, 그리고는 XML을 plist 형식으로. 내 질문은 :

  1. 이것이 정확합니까, 아니면 XML 형식으로 전환 할 때 구문이 어떻게 바뀌어야합니까?
  2. 나머지 DefaultKeyBinding.dict파일을 이전 구문으로 옮기는 것을 후회 합니까? 그렇게하는 것이별로 효과적이지 않습니다-1 ~ 24 개의 항목 일뿐입니다. 그러나 이전 스타일이 더 이상 사용되지 않거나 다른 이유로 조언을받지 못할 지 확실하지 않습니다.

편집 : 원본 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 파일을 추가했습니다.)
미가 R Ledbetter

이상하다, 나는 그것을 작동시킬 수 없다. 잘 문서화되지 않은 것 같습니다. 당신은 단지 하나의 메타 키와 1 개의 문자가 아닌 적은 수의 단축키를 가지고 있습니다. 그래서 아마도 그것들을 테스트로 변환 해보십시오. 만약 그들이 작동한다면 그것은 당신의 다른 것입니다. @plist 파일의 XML 스타일에서 허용되지 않는 명령 키를 나타내는 경우 일 수 있습니다 . 그다지 의미가 없지만 그것에 대해 더 이상 아무것도 찾을 수 없습니다.
conorgriffin

이 문제에 대해 Apple에 버그를 제기했습니다. 그들이 답장을 보자 :).
Micah R Ledbetter

답변:


3

이전 형식을 사용하는 데 문제가 있다고 생각하지 않습니다. 내가 찾은 모든 예제는 이전 NeXT 표기법을 사용합니다. XML 형식이 작동하지 않는 이유를 설명 할 수는 없지만이 특정 키보드 단축키에 대한 해결 방법이 있습니다. 이는 기존을 DefaultKeyBinding.dict그대로 두는 것을 의미합니다 .

무료로 다운로드 할 수있는 KeyRemap4MacBook 이라는 응용 프로그램이 있으며 아래 스크린 샷에서 볼 수 있습니다 . 나머지 파일 을 변환하지 않고 + 키보드 단축키를 다시 매핑 할 수 있으며이DefaultKeyBinding.dict 방법은 Cocoa 응용 프로그램에만 국한되지 않습니다.

KeyRemap4MacBook


3

\U007fXML 속성 목록에는 사용할 수 없습니다. 문자 &#x007f;나 문자 로 바꿔야합니다 DEL.


다음을 사용하여 구식 plist를 XML로 변환 할 수 있습니다 plutil.

plutil -convert xml1 test.plist

그리고 XML에서 구식으로 pl:

pl -input test.plist

내 DefaultKeyBinding.dict 는 현재 151 줄이며 이전 스타일 속성 목록으로 저장하는 데 아무런 문제가 없습니다. Brett TerpstraJacob Rus 가 게시 한 것은 구식 형식입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.