커맨드 라인에서 미션 컨트롤 단축키를 어떻게 변경합니까?


11

나는 이것을 오랫동안 알아 내려고 노력했다. 꽤 일반적인 Mac OS 프로비저닝 스크립트가 있습니다.

https://gist.github.com/ryanpcmcquen/b2e608311f286a4ab3e1

내가 할 모든 미션 컨트롤 단축키를 변경하려면 Ctrl+ Alt+ ...대신 Ctrl+ .... 예를 들어, 기본값은 Ctrl+ Up입니다. Mission Control을 활성화합니다. 현재 단축키가 내가 사용하는 다른 프로그램과 충돌하기 때문에 이것을 Ctrl+ Alt+ 로 변경 Up하고 싶습니다.

나는 이것을 통해이 작업을 수행하는 방법을 이미 알고 System Preferences > Keyboard > Shortcuts있으며 스크립트 가능한 명령 줄 솔루션을 찾고 있습니다.

편집 : @ user3439894 덕분에 모든 plist 키를 원하는대로 변경하는 스크립트를 작성했습니다. 유일한 문제는 작동하지 않는다는 것입니다. :-(

여기 내가 지금까지 가지고있는 것입니다 :

#!/bin/bash
defaults write ~/Library/Preferences/com.apple.symbolichotkeys.plist AppleSymbolicHotKeys -dict-add 32 "{enabled = 1; value = { parameters = (65535, 126, 2883584); type = standard; }; }"
defaults write ~/Library/Preferences/com.apple.symbolichotkeys.plist AppleSymbolicHotKeys -dict-add 33 "{enabled = 1; value = { parameters = (65535, 125, 2883584); type = standard; }; }"
defaults write ~/Library/Preferences/com.apple.symbolichotkeys.plist AppleSymbolicHotKeys -dict-add 34 "{enabled = 1; value = { parameters = (65535, 126, 3014656); type = standard; }; }"
defaults write ~/Library/Preferences/com.apple.symbolichotkeys.plist AppleSymbolicHotKeys -dict-add 35 "{enabled = 1; value = { parameters = (65535, 125, 3014656); type = standard; }; }"
defaults write ~/Library/Preferences/com.apple.symbolichotkeys.plist AppleSymbolicHotKeys -dict-add 79 "{enabled = 1; value = { parameters = (65535, 123, 2883584); type = standard; }; }"
defaults write ~/Library/Preferences/com.apple.symbolichotkeys.plist AppleSymbolicHotKeys -dict-add 80 "{enabled = 1; value = { parameters = (65535, 123, 3014656); type = standard; }; }"
defaults write ~/Library/Preferences/com.apple.symbolichotkeys.plist AppleSymbolicHotKeys -dict-add 81 "{enabled = 1; value = { parameters = (65535, 124, 2883584); type = standard; }; }"
defaults write ~/Library/Preferences/com.apple.symbolichotkeys.plist AppleSymbolicHotKeys -dict-add 82 "{enabled = 1; value = { parameters = (65535, 124, 3014656); type = standard; }; }"
chown -Rf `whoami` ~/Library/Preferences/com.apple.symbolichotkeys.plist;
defaults read com.apple.symbolichotkeys

이것에 대한 해결책을 찾은 적이 있습니까?
Nathan

@Nathan, 아뇨. 방금 기본값으로 롤백합니다.
ryanpcmcquen

나는 비슷한 문제가 있었다. 아마 내 솔루션을 시도해 볼 수 있습니다 : apple.stackexchange.com/questions/344494/…
Nathan

@Nathan, 솔루션에 수동 개입이 필요한 것 같습니다. 방금 다른 단축키를 사용하기 위해 사용하는 다른 프로그램을 변경하는 방법을 배웠습니다. 해머 스푼 FTW.
ryanpcmcquen

명령의이 부분 type = standard;은 실제로 type = 'standard';따옴표로 묶어야합니다 'standard'. 그러나 때로는 명령 행이 올바르게 구성되어 있어도 명령; killall -u $USER cfprefsd 끝에 추가 하더라도 변경 사항이 적용되지 않습니다 . 또한 이 사용 사례에서 파일 의 전체 경로 는 필요하지 않으며 단순히 예를 들어 나머지 명령 만 있으면됩니다. defaults .plistdefaults write com.apple.symbolichotkeys AppleSymbolicHotKeys ...
user3439894

답변:


5

여기에 제시된 정보가 귀하가 직접 답변을 얻는 데 도움이되기를 희망하지만 이것은 직접적인 답변이 아닙니다.

Mission Control의 기본 키보드 바로 가기를 Control-Up Arrow에서 Control-Option-Up Arrow로 변경할 때 어떤 파일에서 어떤 변경 사항이 있는지 알려줄 수 있습니다. 파일의 "32"사전의 "값"사전 및 "AppleSymbolicHotKeys"사전의 "34"사전에있는 "parameters"배열의 "항목 2 숫자"입니다 /Users/$USER/Library/Preferences/com.apple.symbolichotkeys.plist.

위의 정의 된 환경에서 작성된 변경 사항과 관련된 파일 구조 의 defaults read표현은 다음과 같습니다 com.apple.symbolichotkeys.plist.

기본 Control-Up Arrow를 사용한 미션 컨트롤

{
    AppleSymbolicHotKeys =     {
        32 =         {
            enabled = 1;
            value =             {
                parameters =                 (
                    65535,
                    126,
                    2359296
                );
                type = standard;
            };
        };
        34 =         {
            enabled = 1;
            value =             {
                parameters =                 (
                    65535,
                    126,
                    2490368
                );
                type = standard;
            };
        };
    };
}

미션 컨트롤이 Control-Option-Up Arrow로 변경되었습니다.

{
    AppleSymbolicHotKeys =     {
        32 =         {
            enabled = 1;
            value =             {
                parameters =                 (
                    65535,
                    126,
                    2883584
                );
                type = standard;
            };
        };
        34 =         {
            enabled = 1;
            value =             {
                parameters =                 (
                    65535,
                    126,
                    3014656
                );
                type = standard;
            };
        };
    };
}

매뉴얼 페이지 의 버그 섹션은 다음과 defaults같습니다.

기본값은 매우 복잡한 방식으로 구성 될 수 있으므로이 명령으로 사용자가 입력하기가 어렵습니다.

그리고 이것은 defaults가능한 경우 대상 배열 요소에 대상 값을 쓰는 데 사용하는 매우 복잡한 명령 줄이기 때문에 완벽한 예 입니다. 참고로 ... defaults write com.apple.symbolichotkeys ...명령 을 수행 하려면 먼저 대상 파일을 백업했는지 확인하십시오.

다른 옵션은 시스템 환경 설정 GUI를 탐색하여 AppleScript를 사용하여 설정을 변경하는 것이며 여기에 대상이 아닌 최상위 레벨 오브젝트를 설정하는 것과 비교하여 약간 복잡합니다. 나는 그것이 가능한지 확실하지 않지만 자동화 된 방법이 필요하다면 그것을 알아낼 것입니다. 그러나 두 방법 중 하나를 알아낼 시간이 없습니다. 죄송합니다.

최소한 이제 어디에서 어떤 변화가 있었는지 스스로 알 수 있거나 조금 더 알면 추가 도움을 얻을 수 있습니다.

다음은 com.apple.symbolichotkeys.plist파일의 Xcode에서 잘린 이미지입니다 .

여기에 이미지 설명을 입력하십시오

BTW 필자는 파일 시스템 변경을 기록한 타사 유틸리티를 사용하여 변경 사항을 포착 한 다음 해당 정보를보다 읽기 쉬운 출력으로 변환하여이 정보를 제공했습니다.


적절한 plist 파일을 변경하는 것처럼 보이지만 유일한 문제는 바로 가기가 실제로 변경되지 않고 재부팅 후가 아니라 파일을 다시 읽거나 다른 것입니다.
ryanpcmcquen

이 "파일 시스템 변경을 기록한 다음 해당 정보를보다 읽기 쉬운 출력으로 변환 한 타사 유틸리티"의 이름은 무엇입니까?
Allen Bargi

1
@Allen Bargi, IIRC 아마 filemon"Mac OS X Internals-To The Apple 's Core"책에서 엑스트라의 일부 였을 것 입니다 . 필자는 시스템의 실행 파일로 컴파일 한 소스 코드 형식입니다 filemon.c. 그런 다음 현재 상태의 변경된 파일의 차이점을 변경 직전에 만든 Time Machine 백업의 파일과 비교했습니다. 기본 fs_usage 명령을 사용할 수도 있습니다 .
user3439894

@ ryanpcmcquen 귀하의 링크가 깨졌습니다
charlesreid1

@ charlesreid1, 오, 잘 작동하지 않았습니다.
ryanpcmcquen

1

이것이 나의 추천이다 : Karabiner 와 같은 유틸리티를 사용하여 그러한 커스터마이즈를 달성한다.

개발자로서 개인적으로 매력적이고 열광적 인 문제라고 생각하며 소프트웨어 개발자와 해커만이 진정으로 이해할 수있는 맥 OS의 못생긴 어두운면을 실제로 보여줍니다 ...

문제는 충분히 간단 합니다. 기본 키 조합을 내 바인딩에 다시 매핑하고 싶습니다.

지구상에서 왜 그렇게 어렵거나 복잡합니까? 해결책을 찾고 게시하려고합니다 ... 계속 지켜봐 주시기 바랍니다.


감사합니다. 당신이 찾은 것을 기대합니다. 그러나 외부 프로그램을 다운로드하는 것은 Mac의 표준 인터페이스를 통해 설정하는 한 오래 걸리지 만 여전히 내장 명령 행 솔루션을 원합니다.
ryanpcmcquen 23
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.