使用AHK(AutoHotkey)实现元音重音映射:两大问题与需求
问题1:保留e键原有功能的修正脚本
你当前的脚本把e设成了组合键的前缀键,导致单独按e时无法触发原功能。只需添加单独的e键映射即可解决:
; e+右键输出é/É e & Right:: if GetKeyState("CapsLock", "T") Send É else Send é return ; 保留e键单独按下的原有功能 e:: Send e return
问题2:通用元音重音映射脚本
以下是优化后的通用脚本,无需为每个元音重复编写代码。脚本会根据CapsLock状态,自动对应小写/大写的重音元音:
; 定义重音映射表:[小写尖音符, 小写重音符, 小写扬抑符, 小写分音符, 大写尖音符, 大写重音符, 大写扬抑符, 大写分音符] accents := { "a": ["á", "à", "â", "ä", "Á", "À", "Â", "Ä"], "e": ["é", "è", "ê", "ë", "É", "È", "Ê", "Ë"], "i": ["í", "ì", "î", "ï", "Í", "Ì", "Î", "Ï"], "o": ["ó", "ò", "ô", "ö", "Ó", "Ò", "Ô", "Ö"], "u": ["ú", "ù", "û", "ü", "Ú", "Ù", "Û", "Ü"] } ; 遍历每个元音,注册对应的方向键组合热键 for vowel, accList in accents { ; 元音+左键:尖音符 Hotkey, %vowel% & Left, AccentSend ; 元音+右键:重音符 Hotkey, %vowel% & Right, AccentSend ; 元音+上键:扬抑符 Hotkey, %vowel% & Up, AccentSend ; 元音+下键:分音符 Hotkey, %vowel% & Down, AccentSend ; 保留元音单独按下的功能 Hotkey, %vowel%, VowelSend } AccentSend: ; 获取触发热键的元音和方向键 vowel := SubStr(A_ThisHotkey, 1, 1) direction := SubStr(A_ThisHotkey, 3) ; 根据方向键确定重音索引(0-3为小写,4-7为大写) index := 0 if (direction = "Right") index := 1 else if (direction = "Up") index := 2 else if (direction = "Down") index := 3 ; 如果CapsLock激活,切换到大写重音索引 if GetKeyState("CapsLock", "T") index += 4 ; 发送对应的重音元音 Send % accents[vowel][index+1] ; AHK数组索引从1开始 return VowelSend: ; 发送原元音字符 Send % A_ThisHotkey return
脚本说明:
- 当
CapsLock未激活时,按下元音+方向键会输出对应小写重音元音:- 左键=尖音符(如
á)、右键=重音符(如à)、上键=扬抑符(如â)、下键=分音符(如ä)
- 左键=尖音符(如
- 当
CapsLock激活时,输出对应大写重音元音:- 左键=尖音符(如
Á)、右键=重音符(如À)、上键=扬抑符(如Â)、下键=分音符(如Ä)
- 左键=尖音符(如
- 单独按下元音键时,保留原有输出功能
内容的提问来源于stack exchange,提问作者Hillyeh Guirreh
相关产品推荐
相关产品推荐

