스크립트를 통해“모든 F1, F2를 표준 키로 사용”토글


24

"모든 F1, F2를 표준 키로 사용"설정을 매우 자주 토글하고 스크립트 (또는 키보드 단축키)를 통해이를 자동화하고 싶습니다. 가능합니까? Google에 올바른 주장을 defaults write ...했지만 실패했습니다.

fn 설정


업데이트 : 나는 여기에 답변을 기반으로 https://github.com/jkbrzt/macos-fn-toggle 을 만들었습니다 .

업데이트 II : 이제 https://github.com/Pyroh/Fluor 도 있습니다. 활성 응용 프로그램에 따라 키보드의 fn 키 동작을 자동으로 변경할 수있는 멋진 메뉴 표시 줄 앱입니다.

답변:


24
tell application "System Preferences"
    reveal anchor "keyboardTab" of pane "com.apple.preference.keyboard"
end tell
tell application "System Events" to tell process "System Preferences"
    click checkbox 1 of tab group 1 of window 1
end tell
quit application "System Preferences"

을 사용할 수도 defaults write -g com.apple.keyboard.fnState -bool true있지만 로그 아웃했다가 다시 로그인하지 않고 변경 사항을 적용 할 방법을 모르겠습니다.


4
이 스크립트를 Automator를 사용하여 앱으로 압축하여 Spotlight에서 빠르게 실행할 수 있습니다. github.com/jkbr/macos-fn-toggle
Jakub

@jkbr github의 앱은 내가 찾던 일종의 것입니다. 감사!
mdwhatcott

1
AppleScript 편집기에서 스크립트를 응용 프로그램으로 저장할 수도 있습니다. 스크립트를 AppleScript 편집기에 붙여 넣고 ⌘S를 누른 다음 형식을 응용 프로그램으로 설정하십시오.
Lri

또 다른 대안으로, automator에서 새로운 "서비스"를 작성하고 Applescript 실행 명령을 추가 한 후 명령이있는 곳에 붙여 넣으십시오 (* 스크립트는 여기 *). 저장하면 모든 응용 프로그램의 서비스 메뉴에 fn :)이 포함됩니다.
Spyder

2
Mavericks에서 "AppleScript Editor는 보조 액세스가 허용되지 않습니다."와 같은 오류가 발생합니다. 따라서 개인 정보 탭에서 "보안 및 개인 정보"로 이동하여 접근성을 선택하고 앱에서이를 수행하도록 설정해야합니다. 잠금을 열려면 관리자 비밀번호를 제공해야합니다.

9

나는 스크립트에 대해 잘 모르지만 편리한 리버스 엔지니어링과 인터넷 검색을 통해 기존의 AppleScript GUI를 좋아하지 않기 때문에 이것을 만들었습니다.

https://github.com/nelsonjchen/fntoggle

컴파일 된 바이너리 (PATH에 던지거나 그게 무엇인지 모르는 경우 /usr/local/bin/) : https://github.com/nelsonjchen/fntoggle/releases

또는 sh을 실행 하여 무엇이든 (ControlPlane, Automator 등) 호출하십시오 .fntoggle onfntoggle off

이 스크립트는 GUI 액세스 가능성을 설정하지 않아도됩니다. 또한 로그 아웃했다가 다시 로그인 할 필요가 없습니다.


이것은 여전히 ​​Sierra에서 작동합니까? 여기서 일하지 않습니다.
워렌 P

@WarrenP이 문제는 깨달을 수 있습니다. github.com/nelsonjchen/fntoggle/issues/4
crazysim

4

다음을 통해 현재 상태를 읽을 수 있습니다. (F 키의 경우 1, 미디어 / 밝기의 경우 0)

defaults read "Apple Global Domain" "com.apple.keyboard.fnState"

쓸 수는 있지만 재부팅 할 때까지 변경되지 않습니다. (나는 대신 Dock과 Finder를 죽이려고했지만 운이 없다)

defaults write "Apple Global Domain" "com.apple.keyboard.fnState" "1" ## F1 F2 etc
defaults write "Apple Global Domain" "com.apple.keyboard.fnState" "0" ## Brightness/Media

이 plist 파일을 읽는 것에 대해 더 많은 지식을 가진 사람 이이 plist를 읽는 것을 죽이고 다시 시작하는 스크립트를 작성하여 변경 사항을 인정해야한다고 생각합니다.


고마워, 그게 올바른 열쇠 야. 그러나 그것을 직접 바꾸는 것은 행동을 바꾸지 않는 것 같습니다.
Jakub

재부팅해도 도움이되지 않음
Daniel

1

사실, 스포트라이트 또는 다른 앱을 실행할 필요가 없습니다. 제 생각에는 가장 좋은 방법은 다음과 같습니다.

  1. Automator에서 새로운 서비스 생성
  2. 드래그 : "Apple 스크립트 실행
  3. "선택된 서비스 수령자"에서 : 입력을 선택하지 마십시오
  4. 이 다른 답변 에서이 코드를 붙여 넣으십시오 .

    tell application "System Preferences"
    reveal anchor "keyboardTab" of pane "com.apple.preference.keyboard"
    end tell
    tell application "System Events" to tell process "System Preferences"
    click checkbox 1 of tab group 1 of window 1
    end tell
    quit application "System Preferences" 
  5. "yourname"으로 저장

  6. 시스템 환경 설정 → 키보드 → 바로 가기를 엽니 다.
  7. 왼쪽 메뉴에서 "서비스"를 선택하십시오.
  8. 오른쪽에서 일반까지 아래로 스크롤하고 서비스에 고유 한 단축키를 지정하십시오 .cmd + shift + L을 선택하십시오.

  9. 그게 다야! 빠르거나 빠르지는 않지만 앱을 실행하거나 환경 설정으로 직접 이동할 필요는 없습니다.

부록 : EL Capitan을 사용하면 Automator에 포커스가있을 때만 작동합니다. 그렇지 않으면 (예 : 키보드 단축키를 통해 스크립트를 호출하는 경우) "AppleScript 실행"작업에 오류가 발생했습니다 "라는 메시지가 표시됩니다.


0

다른 질문에 오신 것을 환영합니다! 귀하는이 질문에 대한 답변을 게시했습니다. 이는 답변 한 질문에 직접 답변하는 것입니다. Ask Different에 대한 답변은 단순한 링크 그 이상이어야합니다. 링크를 포함해도 괜찮지 만 답변에 요약하거나 발췌하십시오. 아이디어는 독립형으로 만드는 것입니다. 자세한 내용 은 FAQ 를 참조하십시오. 감사.
Nathan Greenstein

0

모든 대답이 주어지면 요세미티에 다음 솔루션을 적용했습니다.

Automator를 사용하여 다음 코드로 앱을 만들었습니다.

tell application "System Preferences"
reveal anchor "keyboardTab" of pane "com.apple.preference.keyboard"
end tell
tell application "System Events" to tell process "System Preferences"
click checkbox 1 of tab group 1 of window 1
end tell
quit application "System Preferences"

저장하고 응용 프로그램에 추가하십시오. "AppleScript Editor는 보조 액세스가 허용되지 않습니다."를 피하려면 시스템 환경 설정-> 보안 및 개인 정보-> 개인 정보 탭-> 접근성 항목으로 이동하여 앱을 추가하십시오.

나처럼 지름길을 원한다면 Automator에서 Launch App으로 새로운 Apple Script를 생성하고 앱을 선택하십시오. 그런 다음 시스템 환경 설정-> 키보드-> 단축키 탭-> 서비스 항목으로 돌아가서 목록 끝에서 스크립트에 단축키를 지정하십시오.

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