關閉 macOS 重音符號選單(accent menu)

更新 發佈閱讀 15 分鐘
這個「重音符號選單」在英文輸入法的狀態下是預設開啟的,而且系統偏好設定中,完全沒有圖形界面開關可以把它關掉。(我覺得這是一個蠢設計)

這個「重音符號選單」在英文輸入法的狀態下是預設開啟的,而且系統偏好設定中,完全沒有圖形界面開關可以把它關掉。(我覺得這是一個蠢設計)

mac 在英打模式下,長按某個英文字母,就會跳出一個「重音符號」選單。對於需要輸入特殊重音字母的人很方便,但如果要用鍵盤來操作遊戲或進行持續性的快速輸入時,這個奇怪的設計就會變得非常干擾。

舉例來說,我偶爾會在 Mac 上玩 OpenEmu 或 PPSSPP,常用 W、S、A、D 當作遊戲操作鍵。偏偏這時候只要長按,就會一直彈出「重音符號」清單,讓遊戲體驗大打折扣。

由於 vocus 的程式碼區塊並沒有 Bash 或是 Shell 這種語法的選項,所以以下我會把程式碼區塊的 Syntax 指定成 Python,這樣會顯示比較正常。

修改 accent menu 彈出選項(全域設定)

這個「重音符號」功能的正式名稱叫 accent menu,是從 OS X Lion(10.7) 開始引入的。它沒有內建的快速關閉方式,唯一能調整的方法就是透過終端機指令。

要關閉它,只需要輸入:

 defaults write -g ApplePressAndHoldEnabled -bool false

重新登入後,「accent menu」就會停用。

如果想恢復,只要改成:

 defaults write -g ApplePressAndHoldEnabled -bool true

這個設定是 全域生效,所以必須重新登入電腦才會套用。

可以針對特定 App 關掉嗎?

如果只是少數 App 需要關閉,那就沒必要全域停用,可以針對 App 單獨設定:

 defaults write [app-bundle-id] ApplePressAndHoldEnabled -bool false

例如只想關掉 OpenEmu 的 accent menu,OpenEmu 的 bundle id 是 org.openemu.OpenEmu,所以輸入:

 defaults write org.openemu.OpenEmu ApplePressAndHoldEnabled -bool false

重新啟動 App 後,設定就會生效。以後在 OpenEmu 裡玩遊戲,就不會再跳出這個選單。

如何查詢 app-bundle-id

假設要查詢 Safari 的 bundle id,可以用 AppleScript:

 osascript -e 'id of app "Safari"'

輸出結果會顯示:

 com.apple.Safari

自製 accent menu 管理指令

raw-image

我自己還寫了一支小工具 presshold_manager_v0.1b.sh,方便管理這個功能。

要如何使用?把程式拷貝下來之後,請存成 .sh 的文件格式(例如:presshold_manager_v0.1b.sh),並用 chmod +x presshold_manager_v0.1b.sh 來為該程式賦予執行權即可。

程式碼如下

#!/usr/bin/env bash
# presshold_manager_v0.1b.sh
# Copyright (C) 2022 alrin

# 用法:
# 全域設定「./presshold-cli.sh」
# 用 App 設定「./presshold-cli.sh /Applications/Safari.app」
# 用 bundle id 設定「./presshold-cli.sh org.openemu.OpenEmu」

set -euo pipefail

TARGET="${1:-}"

# 取得 bundle id(傳 .app 路徑就用 mdls;否則視為已是 bundle id)
get_bundle_id() {
local t="$1"
if [[ -d "$t" && "$t" == *.app ]]; then
mdls -name kMDItemCFBundleIdentifier -r "$t"
else
echo "$t"
fi
}

# 將 defaults 讀出結果正規化為 "1"/"0"/""(空字串=未設定)
normalize_bool() {
case "${1:-}" in
1|true|TRUE|YES|yes) echo 1;;
0|false|FALSE|NO|no) echo 0;;
*) echo "";;
esac
}

# 把 global 的值轉成可讀字串(開啟 / 關閉 / 系統預設=開啟)
label_global_state() {
local gv="$1"
if [[ "$gv" == "1" ]]; then
echo "開啟"
elif [[ "$gv" == "0" ]]; then
echo "關閉"
else
echo "系統預設=開啟"
fi
}

# 顯示全域狀態
show_global_status() {
local raw val
raw=$(defaults read -g ApplePressAndHoldEnabled 2>/dev/null || true)
val=$(normalize_bool "$raw")
echo "全域:accent menu = $(label_global_state "$val")"
}

# 顯示 App 狀態(含全域)
show_app_status() {
local bid="$1"
local app_raw app_val global_raw global_val
app_raw=$(defaults read "$bid" ApplePressAndHoldEnabled 2>/dev/null || true)
app_val=$(normalize_bool "$app_raw")
global_raw=$(defaults read -g ApplePressAndHoldEnabled 2>/dev/null || true)
global_val=$(normalize_bool "$global_raw")

if [[ -n "$app_val" ]]; then
# App 有自訂
if [[ "$app_val" == "1" ]]; then
echo "這個 App:accent menu = 開啟(自訂),全域 = $(label_global_state "$global_val")"
else
echo "這個 App:accent menu = 關閉(自訂),全域 = $(label_global_state "$global_val")"
fi
else
# App 沒自訂 → 看全域
if [[ -n "$global_val" ]]; then
if [[ "$global_val" == "1" ]]; then
echo "這個 App:沒有自訂 → 使用全域 = 開啟"
else
echo "這個 App:沒有自訂 → 使用全域 = 關閉"
fi
else
echo "這個 App:沒有自訂 → 使用系統預設 = 開啟"
fi
fi
}

# 取得顯示名稱
get_app_name() {
local t="$1"
if [[ -d "$t" && "$t" == *.app ]]; then
basename "$t" .app
else
echo "$t"
fi
}

# -------------------- 主流程 --------------------

if [[ -z "$TARGET" ]]; then
# ===== 全域模式 =====
echo "=== 目標:全域設定 ==="
show_global_status
echo
read -r -p "要把 accent menu 設為 [e=開啟 / d=關閉 / r=移除設定 / c=不變更] ? " ans
case "$ans" in
e|E)
if defaults write -g ApplePressAndHoldEnabled -bool true; then
echo "✅ 已設定全域:accent menu = 開啟"
else
echo "❌ 設定失敗(全域:開啟)"
fi
;;
d|D)
if defaults write -g ApplePressAndHoldEnabled -bool false; then
echo "✅ 已設定全域:accent menu = 關閉"
else
echo "❌ 設定失敗(全域:關閉)"
fi
;;
r|R)
if defaults delete -g ApplePressAndHoldEnabled 2>/dev/null; then
echo "✅ 已移除全域設定,回到系統預設:accent menu = 開啟"
else
echo "ℹ️ 沒有可移除的全域設定"
fi
;;
c|C)
echo "(不變更)"
;;
*)
echo "❓ 無效選項,未變更"
;;
esac
else
# ===== App 模式 =====
BID="$(get_bundle_id "$TARGET")"
if [[ -z "$BID" ]]; then
echo "❌ 無法取得 bundle id;請確認參數是 .app 路徑或正確的 bundle id"
exit 1
fi

APP_NAME="$(get_app_name "$TARGET")"

echo "=== 目標 App:$APP_NAME ==="
echo "Bundle ID:$BID"
show_app_status "$BID"
echo
read -r -p "要把 accent menu 設為 [e=開啟 / d=關閉 / r=移除自訂 / c=不變更] ? " ans
case "$ans" in
e|E)
if defaults write "$BID" ApplePressAndHoldEnabled -bool true; then
echo "✅ 已設定:accent menu = 開啟(自訂)"
else
echo "❌ 設定失敗(開啟)"
fi
;;
d|D)
if defaults write "$BID" ApplePressAndHoldEnabled -bool false; then
echo "✅ 已設定:accent menu = 關閉(自訂)"
else
echo "❌ 設定失敗(關閉)"
fi
;;
r|R)
if defaults delete "$BID" ApplePressAndHoldEnabled 2>/dev/null; then
echo "✅ 已移除自訂值,將跟隨全域/系統預設"
else
echo "ℹ️ 沒有可移除的自訂值"
fi
;;
c|C)
echo "(不變更)"
;;
*)
echo "❓ 無效選項,未變更"
;;
esac
fi

指令特別說明

這支指令的特性如下:

  • 雙響執行:直接套用到全域設定
  • 指定 App:就是用終端機去執行它,例如 ./presshold_manager_v0.1b.sh <App名稱>,這時候就只會影響該 App
  • 優先權:如果同時設定過全域與 App,則以 App 為優先
  • 執行時顯示目前狀態
  • 鍵盤代號操作:輸入選項即可快速切換
    • e = 開啟
    • d = 關閉
    • r = 移除設定
    • c = 不變更

各別設定和全域設定的使用時機

像我平常很少需要重音符號,所以我在全域設定上選擇關閉,但在一些文字編輯、排版軟體裡,則會針對 App 單獨開啟。這樣就能兼顧日常使用與文字工作,避免一直被干擾。

像是需要編輯工作的 InDesign、Sublime、VSCode、Word、Typora……這些文書工具就可以單獨指定開啟,這樣設定一次之後,以後就一勞永逸了~玩著模擬器的格鬥遊戲畫面就不會一直跳出重音符號的選單。

關於我寫的程式

我沒有對程式有任何的版權註記(以後也許會做),這邊是無償提供的,你們可以散播出去分享給別人,但是希望大家在拷貝走的時候不要把我上面著作者的資訊移除,請尊重我的創作,這樣的正向循環也讓我可以繼續為大家寫一些方便的小程式。

如果這個程式真的有幫到你,歡迎你直接贊助我(贊助設定很快會設定好,你願意請我喝一杯咖啡我也會很感激!)

留言
avatar-img
留言分享你的想法!
avatar-img
Publishub
2會員
10內容數
這裡是Publishub,專門寫一些和數位發展趨勢、技術相關,我在這邊分享一些我觀察到的新知,希望你會喜歡~
Publishub的其他內容
2025/09/21
你的眼界,決定了你的選擇;你的選擇,決定了你的道路;而你的道路,決定了你的命運。 從前有兩個年輕人,一起在鄉下務農。每天的生活,不外乎日出而作、日落而息。 其中一人覺得,人生就是這樣,安安穩穩過日子就好。他看著眼前的一畝三分地,心想:「只要今年收成不差,我就滿足了。」 另一人卻時常抬頭望向遠方
Thumbnail
2025/09/21
你的眼界,決定了你的選擇;你的選擇,決定了你的道路;而你的道路,決定了你的命運。 從前有兩個年輕人,一起在鄉下務農。每天的生活,不外乎日出而作、日落而息。 其中一人覺得,人生就是這樣,安安穩穩過日子就好。他看著眼前的一畝三分地,心想:「只要今年收成不差,我就滿足了。」 另一人卻時常抬頭望向遠方
Thumbnail
2025/09/21
ChatGPT 在程式上處理就是不如 Claude?如果你用 AI 足夠久,你會發現這是真的,不過現正 OpenAI 準備要逆轉這件事…… 身為一名科技觀察者,我們見證了人工智慧在軟體工程領域的快速演進,尤其隨著 OpenAI 推出 GPT-5-Codex 與強化後的 ChatGPT(搭載 GPT
Thumbnail
2025/09/21
ChatGPT 在程式上處理就是不如 Claude?如果你用 AI 足夠久,你會發現這是真的,不過現正 OpenAI 準備要逆轉這件事…… 身為一名科技觀察者,我們見證了人工智慧在軟體工程領域的快速演進,尤其隨著 OpenAI 推出 GPT-5-Codex 與強化後的 ChatGPT(搭載 GPT
Thumbnail
2025/09/21
不管你是否要撰寫軟體,你都應該先認識逆向工程這件事。這就像製造鎖的公司需要聘僱厲害的竊賊,唯有先理解對方如何破解,才能設計出更安全的鎖…… IDA Pro 由 Hex-Rays 開發,是業界公認最先進的二進位程式碼分析工具,廣泛被安全專家和專業人士用於逆向工程。其核心功能是互動式反彙編器(disa
Thumbnail
2025/09/21
不管你是否要撰寫軟體,你都應該先認識逆向工程這件事。這就像製造鎖的公司需要聘僱厲害的竊賊,唯有先理解對方如何破解,才能設計出更安全的鎖…… IDA Pro 由 Hex-Rays 開發,是業界公認最先進的二進位程式碼分析工具,廣泛被安全專家和專業人士用於逆向工程。其核心功能是互動式反彙編器(disa
Thumbnail
看更多
你可能也想看
Thumbnail
2024年最全電競鍵盤指南,詳盡介紹頂級鍵盤的優缺點,助您選擇最合適的遊戲裝備。
Thumbnail
2024年最全電競鍵盤指南,詳盡介紹頂級鍵盤的優缺點,助您選擇最合適的遊戲裝備。
Thumbnail
常常有朋友問我:「我的 Mac 這裡怪怪的、那裡怪怪的!」但講了老半天又說不出哪邊有問題,這時候我如果在約會很忙沒時間理他,通常都會教他們用這萬用自救的 2 個招式:「清 NVRAM」以及「重置 SMC」。
Thumbnail
常常有朋友問我:「我的 Mac 這裡怪怪的、那裡怪怪的!」但講了老半天又說不出哪邊有問題,這時候我如果在約會很忙沒時間理他,通常都會教他們用這萬用自救的 2 個招式:「清 NVRAM」以及「重置 SMC」。
Thumbnail
iOS15推出了新的按鈕外觀設定功能,讓設定變得更加直觀。使用不同的圓角設定和圖片位置可以輕鬆創建不同風格的按鈕。另外,新的選取效果變化功能也讓按鈕設計更加靈活。本文將介紹這些新功能的使用方法和效果。
Thumbnail
iOS15推出了新的按鈕外觀設定功能,讓設定變得更加直觀。使用不同的圓角設定和圖片位置可以輕鬆創建不同風格的按鈕。另外,新的選取效果變化功能也讓按鈕設計更加靈活。本文將介紹這些新功能的使用方法和效果。
Thumbnail
如果你已經習慣使用 Mac 蘋果電腦, 像是 MacBook Air、Macbook Pro 或是 iMac 來工作、 娛樂或查資料的話,那你一定很熟悉基本操作, 但其實還有蘋果電腦還有非常多隱藏的 Mac 功能與實用小技巧喔! 不論是應用在文書、辦公等等都非常實用,讓你在使用上更方便更有效
Thumbnail
如果你已經習慣使用 Mac 蘋果電腦, 像是 MacBook Air、Macbook Pro 或是 iMac 來工作、 娛樂或查資料的話,那你一定很熟悉基本操作, 但其實還有蘋果電腦還有非常多隱藏的 Mac 功能與實用小技巧喔! 不論是應用在文書、辦公等等都非常實用,讓你在使用上更方便更有效
Thumbnail
HP電競筆電顯卡4060 ASUS曲面螢幕 滑鼠品牌POJUN波軍 麥克風HYPERX S 鍵盤平民牌子 我之後會回去嘗試直播遊戲實況,有圖奇TWITCH帳號的可以追蹤我的TWITCH我會不定期的做直播和訂閱我的YT感謝
Thumbnail
HP電競筆電顯卡4060 ASUS曲面螢幕 滑鼠品牌POJUN波軍 麥克風HYPERX S 鍵盤平民牌子 我之後會回去嘗試直播遊戲實況,有圖奇TWITCH帳號的可以追蹤我的TWITCH我會不定期的做直播和訂閱我的YT感謝
Thumbnail
Macbook的Siri聲音聽起來不錯,幫忙朗讀網頁原文文章吧! 朗讀中...~@3V#=%^$*> 怎麼朗讀的聲音這麼像機器人...(╯°Д°)╯︵ /(.□ . \)...啊 案例中,相信對於內建朗讀功能心灰意冷...ಠ_ಠ 開始在搜尋引擎或擴充功能搜尋欄中,輸入關鍵字“讀、...
Thumbnail
Macbook的Siri聲音聽起來不錯,幫忙朗讀網頁原文文章吧! 朗讀中...~@3V#=%^$*> 怎麼朗讀的聲音這麼像機器人...(╯°Д°)╯︵ /(.□ . \)...啊 案例中,相信對於內建朗讀功能心灰意冷...ಠ_ಠ 開始在搜尋引擎或擴充功能搜尋欄中,輸入關鍵字“讀、...
Thumbnail
長時間使用電腦的你,喜歡使用什麼類型的鍵盤? 1. 可以使用就好 2. 每天都要用,買一個自己喜歡的造型,用來工作,心情也會好點 3. 作為玩家,只要有RGB,規格什麼的不重要 4. 除了有RGB,觸發時間和軸體,也是很重要的~
Thumbnail
長時間使用電腦的你,喜歡使用什麼類型的鍵盤? 1. 可以使用就好 2. 每天都要用,買一個自己喜歡的造型,用來工作,心情也會好點 3. 作為玩家,只要有RGB,規格什麼的不重要 4. 除了有RGB,觸發時間和軸體,也是很重要的~
Thumbnail
過了許久終於要從筆電換成了桌機,電腦配件幾乎也都需要再添購,這次看了很久的鍵盤,每一次都跑到3C店給他一直按來按去。最終挑到了這把 irocks K86R!
Thumbnail
過了許久終於要從筆電換成了桌機,電腦配件幾乎也都需要再添購,這次看了很久的鍵盤,每一次都跑到3C店給他一直按來按去。最終挑到了這把 irocks K86R!
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News