시스템 차원의 작업으로 Cmd-Q를 종료 하시겠습니까?


7

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


1
"Mac의 모든 응용 프로그램에서이 작업을 수행 할 수있는 방법이 있습니까?"라고 말하면 개별 응용 프로그램을 한 번에 하나씩 참조하고 있습니까?
user3439894

다른 모든 앱에서 즉시 발생하는 일반적인 cmd + Q와 반대되는 점은 무엇입니까? 다른 앱에 Chrome과 동일한 지연이 발생하도록 요청 하시겠습니까?
bjbk

1
이 방법이 유용 할 수 있습니다. apple.stackexchange.com/q/340508/237687
Solar Mike

이것에 대해서는 전혀 확신 할 수 없으므로 코멘트가 아닌 답변으로 게시하십시오. 사용법을 배우는 데 시간을 투자 할 의사가 있다면 Hammerspoon , 그것 hammerspoon이 모든 cmd-Q 키 누르기를 포착하고 키가 일정 시간 동안 눌려지면 포 그라운드 응용 프로그램에 종료하도록 요청할 수 있습니다. 주의 사항 : 숙련 된 hammerspoon 사용자에게 코드를 작성하도록 설득 할 수 없다면, 루아 프로그래밍을 먼저 배워야합니다. (나, 미안.)
Harald Hanche-Olsen

@ HaraldHanche-Olsen Hammerspoon에 대한 해답을 드릴 것입니다. 그것이 완전한 대답이 아니더라도, 도구는 사람들이 얼마나 강력한지를 공유 할 필요가 있습니다. 나는 그것을 배우기 위해 시간을 투자하지 않았지만, +1 할 수 있거나 가질 수있는 사람들에게 명성을 투자 할 것입니다.
bmike

답변:


6

설치하고 실행하면됩니다. 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 터미널 창이 실행중인 경우에 발생합니다.


나는이 질문에 영감을 받아 위의 코드를 자신의 Hammerspoon 설정에 추가했다. 의도하지 않고 command-Q를 한 번 치는 경향이 있기 때문이다. 내가 그것을 지키고 싶으면 시간이 표시됩니다.
Harald Hanche-Olsen

@ user3439894 아, 맞아! 그 점을 지적 해 주셔서 감사합니다. 나는 무거운 선착장 사용자가 아니며, 보통 애플리케이션을 실행하는 데 필요한 퀵실버에 의존하므로 생각하지 않았습니다.
Harald Hanche-Olsen

3

우연히 누를 까봐 두려워서이 행동을 원한다면 ⌘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 * 설명으로. 그러나 이것은 어떤 이유로 가능하지 않습니다.


이것은 Apple의 현재 휴먼 인터페이스 지침과 SDK로 할 수있는 최선의 방법입니다. 단축키를 변경할 수 있으며, 트리거 할 때 타이밍을 변경할 수 없습니다. 오늘날 바로 가기 활성화가 즉시 이루어집니다. 유효한 언론이 인정 될 때 그 행동은 그 전후가 아니라 언제 시작됩니다.
bmike

나는 이것에 대한 답을 국기로 일축했다. 비록 그것이 질문에 직접적으로 대답하지는 않지만 실용적인 질문을 풀고 종료 행동을 바꾸는 것과 관련된 해결 방법에 관한 훌륭한 게시물입니다.
bmike

Karabiner Elements의 저자에게 연락하는 것이 좋습니다. KE는 이미 하나의 프레스에 두 개의 command + s 프레스를 사용합니다. 향상시키기가 너무 어렵지 않을 수도 있습니다.
historystamp

1

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

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

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


여러 개의 탭이 열려 있으면 Firefox에서 확인을 요청합니다 ...
Solar Mike
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.