기본 키보드 레이아웃을 제거하거나 비활성화하는 방법은 무엇입니까?


17

OS X Lion의 기본 키보드 레이아웃 중 하나를 제거하거나 비활성화 할 수 있습니까?

사용자 정의 키보드 레이아웃을 사용하고 있으며 시스템 전체 기본 키보드 레이아웃으로 설정 했으므로 OS와 함께 제공된 내장 "미국"키보드 레이아웃을 선택 취소하거나 제거 할 수 있기를 원합니다 X. 다음은 스크린 샷입니다. 확인란이 비활성화되어 있습니다.

스크린 샷

OS X 10.9에서는이 환경 설정 창이 다시 디자인되었지만 내장 된 "미국"키보드 레이아웃을 "제거"할 수있는 방법이 없습니다.

스크린 샷

미국 키보드 레이아웃을 사용하지 않기 때문에 제거하고 싶습니다. 즉, 메뉴 표시 줄의 입력 메뉴에서 제거합니다. 어떻게해야합니까?


업데이트 : Daniel의 대답실제로이 질문에 대답 하지 않지만이 문제에 관한 유용한 정보를 제공합니다.

Mac OS X은 시스템에서 "라틴 문자"레이아웃으로 인식 할 키보드 레이아웃을 하나 이상 요구하는 것 같습니다.

이것이 정확한 정보라고 가정하면 (감사합니다, Daniel!), 질문은 다음과 같이 표현 될 수 있습니다.

OS X이 커스텀 키보드를 라틴 문자 레이아웃으로 간주하게 만드는 방법은 무엇입니까?


업데이트 : 방금 도움이 될만한 것을 발견했습니다.


1
나는 "라틴"이 충분하다고 생각하지 않습니다. 키보드 ID를 Roman으로 설정하면 Ukelele에서 쉽게 수행 할 수 있습니다. 레이아웃이 시스템 / 라이브러리 / 키보드 레이아웃에서 AppleKeyboardLayouts.bundle의 일부 여야한다고 생각합니다.
Tom Gewecke

답변:


21
  1. 시스템 환경 설정에서 실제 키보드 레이아웃과 다른 입력 소스를 활성화하십시오 (Afghan Dari 사용).
  2. 를 실행하십시오 f=~/Library/Preferences/ByHost/com.apple.HIToolbox*.plist; plutil -convert xml1 $f; open $f -e.
  3. 임시로 활성화 된 키보드 레이아웃 및 사용자 정의 키보드 레이아웃을 제외한 다른 입력 소스를 제거하십시오.
  4. 로그 아웃했다가 다시 로그인하십시오.
  5. 속성 목록에서 임시로 활성화 된 키보드 레이아웃을 제거하십시오.
  6. 로그 아웃했다가 다시 로그인하십시오.

편집 : 위의 방법은 10.9에서 작동이 중지 된 것으로 보입니다. 이것은 10.9 또는 10.8에서 모두 작동했습니다.

  1. 현재 입력 소스를 사용자 정의 키보드 레이아웃으로 변경하십시오.
  2. ~/Library/Preferences/com.apple.HIToolbox.plist(10.9) 또는 ~/Library/Preferences/ByHost/com.apple.HIToolbox.*.plist(10.8 이하 )을 엽니 다 . 로 plist를 XML로 변환 할 수 있습니다 plutil -convert xml1.
  3. AppleEnabledInputSources사전 에서 비활성화하려는 입력 소스 또는 입력 소스를 제거하십시오 . AppleDefaultAsciiInputSource키 가 있으면 제거하십시오.
  4. 재시작.

1
Aha, 그냥 로그 아웃했다가 다시 로그인하는 대신 컴퓨터를 다시 시작하면 작동하는 것 같습니다 (4 단계). 감사! 현상금을 얻을 수 있도록 리소스에 대한 링크가 포함 된 새 답변을 게시 하시겠습니까?
Mathias Bynens

1
@MathiasBynens 나는 답변과 내 웹 사이트를 편집했습니다. 두 번째 방법을 다시 시도했을 때 변경 사항을 적용하기 위해 다시 시작해야했습니다.
Lri November

4
컴퓨터를 다시 시작하면 OS X 10.9에서 제대로 작동합니다. 그러나 plist 파일에서 임시 레이아웃을 제거하고 'sudo reboot'를 사용하여 재부팅해야했습니다. 그렇지 않으면 일반 재부팅시 임시 레이아웃이 다시 추가되었습니다.
Unnamed_1

2
@Lri 10.9에서 : AppleEnabledInputSources : 0 (이전 기본 레이아웃 항목)과 : AppleInputSourceHistory : 사전 (PlistBuddy 사용)을 삭제해야했습니다. 재부팅은 없지만 로그 오프 만 필요합니다.
RolKau

1
요세미티에서는 작동하지 않습니다. Xcode에서 파일을 변경할 때마다 몇 초 후에 복원됩니다. 아무도 당신이 어떻게했는지 정확히 설명 할 수 있습니까?
Simon Perepelitsa

7

나타납니다 당신이 시스템에 어떤 아직 알려지지 않은 해킹하지 않고 당신이 원하는 것을 할 수 없습니다 . Mac OS X은 시스템 이 "라틴 문자"레이아웃으로 인식 할 키보드 레이아웃을 하나 이상 요구하는 것 같습니다 . 이렇게하면 로그인 화면 등에서 암호를 입력 할 수 없습니다. 프랑스어, 캐나다 또는 시스템이 라틴 문자로 인식하는 다른 키보드 레이아웃을 선택한 경우 미국 레이아웃을 선택 취소 할 수 있습니다.

문제는 사용자 정의 레이아웃이 라틴 문자를 포함하는 동안 시스템에서 라틴 키보드 레이아웃으로 인식되지 않으므로 유일한 키보드 레이아웃이 될 수 없다는 것입니다. 자세한 내용은 이 질문 (슬프게도 큰 대답이 없음)을 참조하십시오.

이 질문에 대한 훌륭한 답변은 귀하의 질문에도 답변 할 것입니다. 아아, 여기에 내 대답은 문제가 무엇인지 명확하게 설명하지만 단계별 해결책은 없습니다. 그러한 해킹이 가능할 수 있지만, 누구나 특정 사용자 정의 키보드가 유일한 선택 가능한 키보드로 사용하기에 안전하다는 것을 Mac OS X에 확신시키는 방법을 아는 사람은 아무도 없습니다.


@Lri 나는 당신이 옳다고 생각하지만 그것을 테스트 할 하드웨어가 없습니다. 아마도이 사이트의 독자가있을 수 있습니까?
다니엘

7

완벽을 기하기 위해 Apple에 버그 ID # 11137961로 제출했으며 이것이 내가받은 응답입니다.

버그 ID # : 11137961
버그 제목 : 사용자 정의 키보드를 사용할 때 기본 (내장) 키보드 레이아웃 비활성화


엔지니어링 팀에서는이 문제가 다음 정보를 기반으로 의도 한대로 작동한다고 결정했습니다.

문제가 키보드 레이아웃을 ASCII 가능으로 인식하게하는 경우 가장 쉬운 방법은 .keylayout을 "번들"하는 것입니다. Info.plist에는 다음과 같이 "KLInfo_"사전을 추가로 포함 할 수 있습니다.

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

좀 더 자세히 살펴 봐야하지만 TIS가 키보드 레이아웃 출력을 스캔하여 USet을 생성하고 다음 최소 테스트를 통과했는지 여부에 따라 초기 정확성에 대한 아이디어를 생성하는 것처럼 보입니다.

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

또한 TIS는 위에 표시된 로케일에 대한 예제 세트를 검토하고 범위 내에있는 12 자 정도의 문자가 필요합니다 [a-z].

a 번들링에 대한 제안 .keylayout은을 참조하십시오 TextInputSources.h.

이것이 여전히 문제이거나이 문제의 해결에 관한 질문이있는 경우 해당 정보로 버그 보고서를 업데이트하십시오.

현재이 버그 보고서를 닫고 있습니다.


1
확인 됨 : 내 레이아웃이 해당 기준을 충족하지만 가능한 기본 레이아웃으로 인식되지 않습니다. 따라서 엔지니어들은 전체 정보를 제공하지 않았거나 잘못된 정보를 제공했습니다.
Unnamed_1

1
@DmitryDulepov 기본 레이아웃으로 사용할 수 있지만 다른 것을 제거하는 버튼은 여전히 ​​활성화되지 않습니다. 수동으로해야합니다 ( Lri의 답변에 대한
RolKau

@RolKau, 예. 나중에 다른 문제가 있습니다. 레이아웃이 둘 이상인 경우 일부 앱에서는 새로운 사용자 정의 레이아웃을 사용할 수 없습니다. 예를 들어, 앱 스토어의 검색 창에서 스위치로 전환 할 수 없습니다. 적어도 나는 할 수 없었다.
Unnamed_1


1

방금 도움이 될만한 것을 발견했습니다. 간다 :

$ 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;
        }
    );
}

이것은 내 시스템에 있으며 사용자 정의 키보드 레이아웃 ( "QWERTY")이 기본값입니다. 참고 것을 KeyboardLayout NameKeyboardLayout ID속성은 시작시 ID와 이름을 참조 .keylayout파일.

보다시피, defaults read /Library/Preferences/com.apple.HIToolbox.plist AppleCurrentKeyboardLayoutInputSourceID여전히 문자열을 반환합니다 "com.apple.keylayout.Dutch". 사용 가능한 com.apple.keylayout값 의 목록이 있습니까? 사용자 정의 키보드 레이아웃에 대한 값을 얻을 수 있습니까? 이 경우 단순히 속성을 무시할 수 있습니다.

또한 AppleEnabledInputSources, AppleInputSourceHistoryAppleSelectedInputSources특성 모두 그 값이 설정 도우미를 실행할 때 나는 원래 선택한 기본 OS X 키보드 레이아웃에 해당로서, 사용자 정의 키보드 레이아웃을 무시하는 것 같다.


또 다른 업데이트 : Aha! plist설정을 복사 할 수있는 다른 파일이있는 것 같습니다 .

$ 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;
    };
}

( AppleCurrentKeyboardLayoutInputSourceID)에서 볼 수 있듯이 사용자 정의 키보드 레이아웃은 키보드 레이아웃 의 이름이 "org.unknown.keylayout.FOO"어디에 있는지 FOO( .keylayout파일에 지정된) 값을 얻습니다 .

모든 값을 사용자 정의 키보드 레이아웃으로 설정해 보겠습니다. QWERTY 과 ID 1337( .keylayout파일에 지정됨)로 .

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

슬프게도 이것은 작동하지 않는 것 같습니다.

업데이트 : @Lri는 신뢰할만한 방법을 찾았습니다. 그의 대답을보십시오.


1

시스템 환경 설정을 통해 다른 키보드 레이아웃을 선택한 경우 시스템 기본 키보드 레이아웃을 제거 할 수 있도록 요청한 버그 보고서에 대한 Apple의 답변 :

엔지니어링 부서는 애플이 해결해야 할 문제가 아니라고 판단했습니다.

이 사용자 정의 키보드 레이아웃이 번들 (IS 가정 .keylayout같은 번들 내부 foo.bundle/Contents/Resources/foo.keylayout), 다음이에 삽입하는 것만 큼 쉽게 할 수 Info.plistKLInfo_ 사전 :

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

이 레이아웃이 시스템 전체에 필요한 경우 (예 : 비밀번호 입력 포함) /Library/Keyboard Layouts/와 동일한 위치가 아닌에 설치할 수 있습니다 ~/Library/.

이것이 여전히 문제인지 알려면 버그 보고서를 업데이트하십시오.

이 문제의 해결에 관한 질문이 있으면 버그 보고서를 업데이트하십시오.

이 문제에 영향을 줄 수있는 업데이트가 있는지 정기적으로 새 Apple 제품을 확인하십시오. 다시 한 번 버그를 제출해 주셔서 감사합니다. 귀하의 의견에 진심으로 감사드립니다.


1

다음 방법을 사용하여 High Sierra에서 기본 레이아웃을 제거하는 데 성공했습니다.

  1. Library/Preferences폴더로 이동하십시오 .
  2. 파일 com.apple.HIToolbox.plist을 두 번 클릭하거나 open명령 줄에서 사용하여 파일을 엽니 다 . 그러면 XCode가 팝업되고 추가 구성 요소를 설치하려고 할 수 있습니다.
  3. XCode가 최종적으로 파일 구조를 보여줄 때까지 2 단계를 반복하십시오.
  4. AppleEnabledInputSources노드를 찾아서 펼치십시오.
  5. 제거하려는 레이아웃의 항목을 제거하십시오.
  6. 파일을 저장하고 XCode를 종료하십시오.

이제 이것을 끝내려면 로그 아웃하거나 재부팅해야합니다. 어쨌든 약간의 업데이트를 위해 재부팅해야했기 때문에 트릭이 나에게 도움이되었습니다. 이제는 기쁜 빙하 속도로 Neo에서 즐겁게 입력하고 있지만 단일 QWERTZ는 보이지 않습니다!


0

아이디어는 다음과 같습니다. 사용자 정의 레이아웃의 키보드 ID가 Roman으로 설정되어 있는지 확인한 후 해당 레이아웃 만 포함하는 사용자 정의 AppleKeyboardLayouts.bundle을 만들고 OS와 함께 제공되는 것을 대신하십시오. (나는 번들을 만드는 데 무엇이 관여하는지 스스로 모른다.)


0

Ukelele 을 사용 하여 사용 된 레이아웃을 라틴 스크립트를 사용하는 레이아웃으로 표시 할 수 있습니다 . 번들로 내보내고 설치하면 미국을 삭제할 수 있습니다.


-1

쉽게 할 수 있습니다. 먼저 사용자 정의 레이아웃으로 변경하고 (메뉴 막대 입력 메뉴 사용) 미국 레이아웃 선택 해제하십시오.


내 사용자 정의 레이아웃은 현재 사용중인 레이아웃입니다. 질문에서 언급했듯이 더 이상 미국 키보드 레이아웃을 사용하지 않습니다.
Mathias Bynens

나는 미국 키보드 레이아웃없이 살고 있으며 선택을 해제하는 데 아무런 문제가 없었습니다. 내가 가지고있는 다른 사용자 정의는 기본이 아닌 미국이 아닌 지역 및 언어입니다.
shpokas

처음 Mac을 설정할 때 선택한 키보드 레이아웃을 선택 해제 할 수 있습니까?
Mathias Bynens 2016 년

예, 지역을 변경해도 가능합니다.
shpokas

그게 문제 야 OS X의 내장 키보드 레이아웃 중 하나는 항상 삭제하거나 비활성화 할 수 없습니다.
Mathias Bynens
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.