Skip to main content

Command Palette

Search for a command to run...

macOS에서 키보드로 출력 오디오 장치 바꾸기

Updated
macOS에서 키보드로 출력 오디오 장치 바꾸기

최근에 헤드폰을 하나 샀다. 하지만 헤드폰으로 듣다가 밥을 먹을 때는 맥북 스피커로 바꾸고 싶다. 그렇게 출력 장치를 바꿀 때마다 상단의 제어센터 버튼을 눌러서, 오디오 버튼을 누르고, 위 스크린샷에서 원하는 장치를 고르는 것은 매우 귀찮더라. 키보드 “딸깍”으로 오디오 출력 장치를 바꿀 수 있는지 찾아봤고, 그 결과를 공유한다.

https://github.com/deweller/switchaudio-osx 를 활용한다.

SwitchAudioSource -a 로 모든 장치를 볼 수 있다. (입력 장치도 보인다)

SwitchAudioSource -c 로 현재 연결된 장치를 볼 수 있다. (출력 장치만 나오는 듯)

SwitchAudioSource -s “Device name” 로 해당 장치로 변경할 수 있다.

그럼 이제, 간단한 셸 스크립트를 짜서 현재 장치가 맥북 스피커면 → 헤드폰으로, 현재 장치가 헤드폰이면 → 맥북 스피커로 바꿔주는 스크립트를 짜자. 이를 이하 “토글 스크립트”라고 부르자.

이제 토글 스크립트를 각자가 선호하는 단축키 프로그램에 등록하면 된다. better touch tool도 좋겠지만 단축키로 cli command를 실행하는 간단한 작업에는 https://github.com/koekeishiya/skhd 가 제격이다.

.skhdrc 에 (원하는 단축키로) 설정하자.

# Audio device toggle
shift + ctrl + alt - a : "/.../audio_toggle.sh"

근데 생각해보니, 블루투스 스피커도 토글 스크립트에 포함시키는 것은 어떨까? (자주 쓰는 알프레드 워크플로우에서 활용하는 것을 보고 알게된) https://github.com/toy/blueutil 를 사용하면 간단하다.

현재 연결되어있는 블루투스 장치 중에 블루투스 스피커가 포함되어 있으면, [맥북 스피커, 헤드폰] 만 있던 사이클에 [맥북 스피커, 블루투스 스피커, 헤드폰] 처럼 추가하기로 했다.

#!/bin/bash

# Get current audio device
current=$(SwitchAudioSource -c)

case "$current" in
    "MacBook Pro Speakers")
        # Check if Beosound Explore is connected only when switching from MacBook
        beosound_connected=$(blueutil --connected | grep -i "beosound explore" | wc -l)

        if [[ $beosound_connected -gt 0 ]]; then
            SwitchAudioSource -s "Beosound Explore"
            echo "Switched to Beosound Explore"
        else
            SwitchAudioSource -s "External Headphones"
            echo "Switched to External Headphones"
        fi
        ;;
    *"eosound"*|*"xplore"*)
        SwitchAudioSource -s "External Headphones"
        echo "Switched to External Headphones"
        ;;
    *)
        SwitchAudioSource -s "MacBook Pro Speakers"
        echo "Switched to MacBook Pro Speakers"
        ;;
esac

이제 헤드폰으로 음악을 들으면서 업무를 하다가, 요리를 하러 주방으로 가면 출력 장치를 블루투스 스피커로 바꾼다.

요리가 끝나고 모니터 앞으로 식사를 가져오면 출력 장치를 맥북 스피커로 바꾼다.

식사를 마치면 출력 장치를 블루투스 스피커로 변경하고 설거지를 한다!


여담으로—각 장치 별로 별도의 단축키를 두지 않은 이유는:

  1. 생각보다 외우는 게 귀찮다. 장치가 추가될 때마다 새로운 단축키를 추가해야하는 구조는 지양하고 싶다.

  2. 생각보다 외우는 게 “더” 귀찮다. 지금 내 shkdrc에는 이미 충분한(…) 수의 단축키가 등록되어있다. 더 늘리고 싶지 않다.

  3. 출력 오디오 장치가 많아봐야 3-4개가 상한이라고 생각했다. 연결해야하는 오디오가 100개쯤 되면 알프레드 워크플로우를 짰겠지.

More from this blog

Auto-Switch iTerm Profiles on SSH Connection

미국에 있는 서버와 한국에 있는 서버는 핑 차이가 크다. 미국서버에 배포하던 서비스를 최근에 한국으로 옮기니, 로컬 개발 터미널인지 라이브인지 구분이 힘들어졌다. 좋은 방법이 없을까 고민하던 차에 내가 발견한 방법을 공유한다. 1/ 프로필을 생성한다. 나는 평소에 밝은 테마(light theme)를 사용하기 때문에 이 프로필은 어두운 테마(dark theme)로 설정했다. 2/ 라이브 환경으로 접속하는 커맨드(e.g. ssh)에 대해 다음과 ...

Nov 23, 2025
Auto-Switch iTerm Profiles on SSH Connection

warp directory `wd`

터미널에서 특히 자주 찾게되는 폴더들이 있다. nvim 설정 디렉토리, 회사 git repo 디렉토리, 개인 git repo 디렉토리 등등. 이런 디렉토리들을 즐겨찾기처럼 등록하고, 즐겨찾기 목록을 볼 수 있고, 즐겨찾기에 등록된 곳을 바로 이동할 수 있게 만들어주는 스크립트가 https://github.com/mfaerevaag/wd 다. 해당 페이지에 있는 Setup 섹션을 참고해서 설치하자. oh-my-zsh의 경우 plugins에 wd...

Oct 18, 2025
warp directory `wd`

토막글 다섯 개 (5)

1. PR Approve에는 장미를 한 송이 🌹 팀원의 풀 리퀘스트를 Approve 할 때, LGTM와 같은 인삿말도 좋지만 나는 장미를 쓴다. 낭만 있고, 메신저에서 PR Approve 구걸을 할 때 장미를 부탁한다고 하거나, 팀원의 Approve 부탁 메세지에 장미 이모지로 답변하기 참 좋아서 애용하고 있다. PR Approve와는 전혀 상관없는 개념이지만 업무에서 자주 쓰이지 않는 심볼이라면 어느 거라도 적당히 재미있어 추천한다. 2. ...

Aug 19, 2025
토막글 다섯 개 (5)

olaf.kr

50 posts

그 날 기분에 따라 반말과 존댓말을 섞어씁니다.