시스템 차원의 작업으로 Cmd-Q를 종료 하시겠습니까? 프로그램에 대해이 작업을 수행 할

Chrome에서 ‘Cmd-Q’를 종료 해달라고 요청합니다. Mac에서 모든 응용 프로그램에 대해이 작업을 수행 할 수있는 방법이 있습니까?



답변

설치하고 실행하면됩니다. Hammerspoon , Hammerspoon 설정 파일에 다음의 Lua 코드를 포함시킨다. .hammerspoon/init.lua ) :

-- config: number of seconds to hold Command-Q to quit application
cmdQDelay = 2

cmdQTimer = nil
cmdQAlert = nil

function cmdQCleanup()
  hs.alert.closeSpecific(cmdQAlert)
  cmdQTimer = nil
  cmdQAlert = nil
end

function stopCmdQ()
  if cmdQTimer then
    cmdQTimer:stop()
    cmdQCleanup()
    hs.alert("quit canceled",0.5)
  end
end

function startCmdQ()
  local app = hs.application.frontmostApplication()
  cmdQTimer = hs.timer.doAfter(cmdQDelay, function() app:kill(); cmdQCleanup() end)
  cmdQAlert = hs.alert("hold to quit " .. app:name(), true)
end

cmdQ = hs.hotkey.bind({"cmd"},"q",startCmdQ,stopCmdQ)

값 변경 cmdQDelay 당신의 기호에 맞게.

간단한 설명 :

마지막 라인은 Hammerspoon에게 Command-Q의 모든 누르기를 가로 채도록 지시합니다. 루아 함수를 실행합니다. startCmdQ 키를 누를 때 stopCmdQ 출시 될 때.

startCmdQ 포 그라운드 앱을 기록한 다음 타이머를 시작합니다. 타이머가 타임 아웃하면 (자), 타이머의 인수로서 지정된 함수가 불려갑니다. 그것은 앱을 죽이고 (정말로 끝내라고 요청합니다), 조치를 취한 후에 정리합니다.

stopCmdQ 타이머가 아직 실행중인 경우 타이머를 중지하므로 결국 응용 프로그램이 종료되지 않습니다. 그것은 또한 나중에 정리합니다.

이 작업에는 진행 상황을 알려주는 경고가 함께 표시됩니다.

편집하다: 설치되고 활성화 된 후에는 실행하여 해제 할 수 있습니다. cmdQ:disable() hammerspoon 콘솔에서. 다시 켜십시오. cmdQ:enable(). 지연 치료에서 일부 앱을 면제하려면 해당 앱에 대한 테스트를 startCmdQ 기능을 선택하여 실행 app:kill() 타이머를 시작하는 대신 즉시.

두 번째 편집 :주의 사항. 이렇게하면 파인더 . 그래도 당황하지 마십시오. Finder를 다시 시작하는 가장 쉬운 방법은 Dock에서 해당 아이콘을 클릭하는 것입니다. 또는 스포트라이트를 사용할 수 있습니다 : 메뉴 막대 또는 키보드 단축키의 돋보기 아이콘을 통해 열어서 “Finder.app”를 입력 한 다음 돌아옵니다. (Spotlight가 나머지 문자를 입력하기 때문에 몇 글자 만 입력하면됩니다.) 명령을 실행하여 Finder를 다시 시작할 수도 있습니다 hs.application.open("Finder") hammerspoon 콘솔에서 또는 open -a Finder 터미널 창이 실행중인 경우에 발생합니다.


답변

우연히 누를 까봐 두려워서이 행동을 원한다면 ⌘Q 비슷한 것을 누르려고 할 때 (일반적으로 ⌘W 또는 아마도 ⌘Tab ), 다음을 다시 매핑 할 수 있습니다. ⌘Q 유사하지만 더 단단한 단축키에 대한 바로 가기 인 경우 ⌥⌘Q를 예로 들어 보겠습니다.

이렇게하려면 다음 중 하나가 필요합니다. 1) 다시 매핑하는 방법 ⌘Q ⌥⌘Q , 또는 2) 차단 ⌘Q 설정하다 ⌥⌘Q 앱을 종료합니다.

방법 1 : ⌘Q를 ⌥⌘Q로 다시 매핑

방법 1a : 시스템 환경 설정 사용

  1. 시스템 환경 설정 & gt; 키보드 & gt; 바로 가기 & gt; 앱 바로 가기
  2. 개별 앱에서 개별적으로이 작업을 수행하려면 트리거가있는 바로 가기를 만듭니다. ⌥⌘Q 행동 Quit x 어디에 엑스 앱의 이름입니다. 예를 들어 사파리의 경우 “Quit Safari”(따옴표 제외)라고 씁니다. 이 기능이 작동하지 않는 경우 메뉴 막대 항목에 앱 이름이 무엇인지 확인해야 할 수도 있습니다.

방법 1b : Karabiner 요소 또는 유사한 사용

이렇게하면 모든 앱에 대한 바로 가기를 수동으로 설정해야하는 제한이 없어집니다. 이것은 강력한 도구로 가능할 수 있습니다. 카라비너 요소 그러나 불행하게도 나는 그것에 대해 말할만큼 충분히 유창하지 않다.

의견에 Harald Hanche-Olsen이 언급했듯이, Hammerspoon은 이것을 조금 더 들여다 볼 필요가 있지만 이것을 할 수도 있습니다.

방법 2 : ⌘Q를 차단하고 종료하려면 ⌥⌘Q를 설정하십시오.

여기에 제 3 자 앱을 포함시키는 유일한 이유는 할까요 BTT를 전 세계적으로 사용하는 것이 가능하지만 버그 (?)로 인해 모든 앱에 대해 개별적으로이 작업을 수행해야합니다.

  1. 다운로드 및 설치 더 나은 터치 도구 (유급이지만 45 일 평가판 사용)
  2. 다음을 사용하여 글로벌 키보드 단축키 만들기 ⌘Q 아무것도하지 않도록 설정
  3. 다음을 사용하여 글로벌 키보드 단축키 만들기 ⌘Q 액션 메뉴 모음 항목으로 설정하고 설명으로 설정합니다. x;Quit x 여기서 x는 앱의 이름입니다. 다시 말하지만 앱에서 실제로 수행 할 작업을 확인해야 할 수도 있습니다.

첫 번째 수준의 메뉴 모음 항목에 3 단계에서 와일드 카드를 사용하여 전역 적으로이 작업을 수행 할 수 있기를 희망 했으므로 앱 이름을 명시 적으로 입력 할 필요가 없습니다.이 경우에는 다음을 사용할 수 있습니다. *;Quit * 설명으로. 그러나 이것은 어떤 이유로 가능하지 않습니다.


답변

아니요, 다른 모든 응용 프로그램을 hold-cmd-Q-for-seconds-to-quit 동작으로 동축시킬 방법이 없습니다.

Apple은 Apple 응용 프로그램과 SDK를 제어하며 구현하지 않습니다.

기껏해야 당신은이 관용구를 좋아하는 제 3 자 개발자들을 많이 구할 수 있습니다.


답변