Ч на § клавиша · Собствен .keylayout файл · Стъпка по стъпка

За всички, които идват от Windows и им липсва § → ч
$ whoami
→ Тони Ангелчовски · sysadmin · macOS & Linux · dtgarage.eu
→ Тони Ангелчовски · sysadmin · macOS & Linux · dtgarage.eu
Идваш от Windows. Знаеш клавиатурата наизуст. На Windows § клавишът (до Shift вляво) пише ч/Ч.
Купуваш Mac. Инсталираш Bulgarian Phonetic. Натискаш § и... нищо. Или излиза §. Или нещо странно.
Пръстите ти помнят Windows. Мозъкът те предава всеки път.
Решението: Собствен
.keylayout файл — казваш на macOS точно какво да прави с всеки клавиш. Пишем го веднъж, работи завинаги.macOS използва XML файлове с разширение .keylayout за да знае какво да изведе при натискане на всеки клавиш. Всяка клавиатура — Bulgarian Phonetic, US, German — е такъв файл.
Системните файлове са в
/System/Library/Keyboard Layouts/ — не ги пипаме.Потребителските са в
~/Library/Keyboard Layouts/ — тук слагаме нашия.| Папка | За кого | Права |
|---|---|---|
~/Library/Keyboard Layouts/ | Само за текущия потребител | |
/Library/Keyboard Layouts/ | За всички потребители на Mac-а |
Препоръка: Слагай в
~/Library/Keyboard Layouts/— без sudo, само за теб. Ако искаш за всички потребители на машината →/Library/Keyboard Layouts/+ sudo.
Преди да видиш кода — разбери логиката. После всичко ще е ясно.
| Елемент | Какво прави |
|---|---|
<keyboard> | Коренният елемент — id, name, group |
<modifierMap> | Дефинира модификаторите: normal, shift, caps, option |
<keyMapSet> | Съдържа всички keyMap-ове (по един за всяка комбинация) |
<keyMap index="0"> | index 0 = нормален · 1 = Shift · 2 = Caps · 4 = Option |
<key code="10" output="ч"/> | code = физически клавиш · output = какво да пише |
Key code 10 = физическият клавиш § на Apple клавиатура (до левия Shift). Независимо какво пише на него — code 10 е винаги той.
Запази като
Bulgarian-Phonetic-Windows.keylayout
XML:
<?xml version="1.1" encoding="UTF-8"?>
<!DOCTYPE keyboard SYSTEM "file://localhost/System/Library/DTDs/KeyboardLayout.dtd">
<!--
Bulgarian Phonetic Windows Style — DTGarage Edition
Автор: Тони Ангелчовски | dtgarage.eu | aiflux.eu
Разлика от стандартния Apple Bulgarian Phonetic:
→ Клавиш § (code 10, до Shift вляво) = ч / Ч
→ Всички останали клавиши = стандартен Bulgarian Phonetic (Windows стил)
Инсталация:
cp Bulgarian-Phonetic-Windows.keylayout ~/Library/Keyboard\ Layouts/
Logout → Login → System Settings → Keyboard → Input Sources → Add
-->
<!--Last edited on 2026-02-27 at 20:53 (EET)-->
<keyboard group="126" id="-30008" name="Bulgarian Phonetic Windows DTGarage" maxout="1">
<layouts>
<layout first="0" last="17" mapSet="ANSI" modifiers="commonModifiers"/>
<layout first="18" last="18" mapSet="ANSI" modifiers="commonModifiers"/>
<layout first="21" last="23" mapSet="ANSI" modifiers="commonModifiers"/>
<layout first="30" last="30" mapSet="ANSI" modifiers="commonModifiers"/>
</layouts>
<modifierMap id="commonModifiers" defaultIndex="0">
<keyMapSelect mapIndex="0">
<modifier keys=""/>
</keyMapSelect>
<keyMapSelect mapIndex="1">
<modifier keys="anyShift"/>
</keyMapSelect>
<keyMapSelect mapIndex="2">
<modifier keys="caps"/>
</keyMapSelect>
<keyMapSelect mapIndex="3">
<modifier keys="anyShift caps"/>
</keyMapSelect>
<keyMapSelect mapIndex="4">
<modifier keys="anyOption"/>
</keyMapSelect>
<keyMapSelect mapIndex="5">
<modifier keys="anyShift anyOption"/>
</keyMapSelect>
</modifierMap>
<keyMapSet id="ANSI">
<!-- ═══════════════════════════════════════════
INDEX 0 — Normal (без модификатор)
═══════════════════════════════════════════ -->
<!-- Действия за специални клавиши -->
<keyMap index="0">
<!-- § клавиш (до Shift вляво) → ч ★ ГЛАВНАТА ПРОМЯНА ★ -->
<!-- ═══════════════════════════════════════════
INDEX 1 — Shift
═══════════════════════════════════════════ -->
<key code="0" output="а"/>
<!-- A → а -->
<key code="1" output="с"/>
<!-- S → с -->
<key code="2" output="д"/>
<!-- D → д -->
<key code="3" output="ф"/>
<!-- F → ф -->
<key code="4" output="х"/>
<!-- H → х -->
<key code="5" output="г"/>
<!-- G → г -->
<key code="6" output="з"/>
<!-- Z → з -->
<key code="7" output="ь"/>
<!-- X → ж -->
<key code="8" output="ц"/>
<!-- C → ц -->
<key code="9" output="ж"/>
<!-- V → б -->
<key code="10" output="ч"/>
<!-- Числов ред -->
<key code="11" output="б"/>
<!-- B → н -->
<key code="12" output="я"/>
<!-- Q → я -->
<key code="13" output="в"/>
<!-- W → в -->
<key code="14" output="е"/>
<!-- E → е -->
<key code="15" output="р"/>
<!-- R → р -->
<key code="16" output="ъ"/>
<!-- Y → ъ -->
<key code="17" output="т"/>
<!-- T → т -->
<key code="18" output="1"/>
<key code="19" output="2"/>
<key code="20" output="3"/>
<key code="21" output="4"/>
<key code="22" output="6"/>
<key code="23" output="5"/>
<key code="24" output="="/>
<key code="25" output="9"/>
<!-- Горен ред QWERTY → Bulgarian Phonetic -->
<key code="26" output="7"/>
<key code="27" output="-"/>
<key code="28" output="8"/>
<key code="29" output="0"/>
<key code="30" output="щ"/>
<!-- ] → щ -->
<!-- Среден ред ASDF -->
<key code="31" output="о"/>
<!-- O → о -->
<key code="32" output="у"/>
<!-- U → у -->
<key code="33" output="ш"/>
<!-- [ → ш -->
<key code="34" output="и"/>
<!-- I → и -->
<key code="35" output="п"/>
<!-- P → п -->
<key code="36" action="return"/>
<key code="37" output="л"/>
<!-- L → л -->
<key code="38" output="й"/>
<!-- J → й -->
<key code="39" output="'"/>
<!-- ' → ' -->
<!-- Долен ред ZXCV -->
<key code="40" output="к"/>
<!-- K → к -->
<key code="41" output=";"/>
<!-- ; → ; -->
<key code="42" output="ю"/>
<!-- Специални -->
<key code="43" output=","/>
<!-- , → , -->
<key code="44" output="/"/>
<!-- / → / -->
<!-- Backslash → ю -->
<key code="45" output="н"/>
<!-- N → м -->
<key code="46" output="м"/>
<!-- M → ь -->
<key code="47" output="."/>
<!-- . → . -->
<key code="48" action="tab"/>
<key code="49" output=" "/>
<!-- Space -->
<key code="50" output="`"/>
<key code="51" action="delete"/>
<key code="53" output=""/>
<!-- Escape -->
<!-- Пунктуация -->
<key code="65" output=""/>
<key code="67" output=""/>
<key code="69" output=""/>
<key code="71" output=""/>
<key code="75" output=""/>
<key code="76" output=""/>
<key code="78" output=""/>
<key code="81" output=""/>
<key code="82" output=""/>
<key code="83" output=""/>
<key code="84" output=""/>
<key code="85" output=""/>
<key code="86" output=""/>
<key code="87" output=""/>
<key code="88" output=""/>
<key code="89" output=""/>
<key code="91" output=""/>
<key code="92" output=""/>
<key code="96" output=""/>
<key code="97" output=""/>
<key code="98" output=""/>
<key code="99" output=""/>
<key code="100" output=""/>
<key code="101" output=""/>
<key code="103" output=""/>
<key code="105" output=""/>
<key code="107" output=""/>
<key code="109" output=""/>
<key code="111" output=""/>
<key code="113" output=""/>
<key code="114" output=""/>
<key code="115" output=""/>
<key code="116" output=""/>
<key code="117" output=""/>
<key code="118" output=""/>
<key code="119" output=""/>
<key code="120" output=""/>
<key code="121" output=""/>
<key code="122" output=""/>
<key code="123" output=""/>
<key code="124" output=""/>
<key code="125" output=""/>
<key code="126" output=""/>
</keyMap>
<keyMap index="1">
<!-- § + Shift → Ч ★ ГЛАВНАТА ПРОМЯНА ★ -->
<!-- ═══════════════════════════════════════════
INDEX 2 — Caps Lock (главни без Shift)
═══════════════════════════════════════════ -->
<key code="0" output="А"/>
<key code="1" output="С"/>
<key code="2" output="Д"/>
<key code="3" output="Ф"/>
<key code="4" output="Х"/>
<key code="5" output="Г"/>
<key code="6" output="З"/>
<key code="7" output="Ь"/>
<key code="8" output="Ц"/>
<key code="9" output="Ж"/>
<key code="10" output="Ч"/>
<!-- Числов ред + Shift = символи -->
<key code="11" output="Б"/>
<key code="12" output="Я"/>
<key code="13" output="В"/>
<key code="14" output="Е"/>
<key code="15" output="Р"/>
<key code="16" output="Ъ"/>
<key code="17" output="Т"/>
<key code="18" output="!"/>
<key code="19" output="@"/>
<key code="20" output="#"/>
<key code="21" output="$"/>
<key code="22" output="^"/>
<key code="23" output="%"/>
<key code="24" output="+"/>
<key code="25" output="("/>
<!-- Горен ред + Shift = главни букви -->
<key code="26" output="&"/>
<key code="27" output="_"/>
<key code="28" output="*"/>
<key code="29" output=")"/>
<key code="30" output="Щ"/>
<!-- Среден ред + Shift -->
<key code="31" output="О"/>
<key code="32" output="У"/>
<key code="33" output="Ш"/>
<key code="34" output="И"/>
<key code="35" output="П"/>
<key code="36" action="return"/>
<key code="37" output="Л"/>
<key code="38" output="Й"/>
<key code="39" output="""/>
<!-- Долен ред + Shift -->
<key code="40" output="К"/>
<key code="41" output=":"/>
<key code="42" output="Ю"/>
<!-- Пунктуация + Shift -->
<key code="43" output="<"/>
<key code="44" output="?"/>
<!-- Backslash + Shift → Ю -->
<key code="45" output="Н"/>
<key code="46" output="М"/>
<key code="47" output=">"/>
<key code="48" action="tab"/>
<key code="49" output=" "/>
<key code="50" output="~"/>
<!-- Специални -->
<key code="51" action="delete"/>
<key code="53" output=""/>
<key code="65" output=""/>
<key code="67" output=""/>
<key code="69" output=""/>
<key code="71" output=""/>
<key code="75" output=""/>
<key code="76" output=""/>
<key code="78" output=""/>
<key code="81" output=""/>
<key code="82" output=""/>
<key code="83" output=""/>
<key code="84" output=""/>
<key code="85" output=""/>
<key code="86" output=""/>
<key code="87" output=""/>
<key code="88" output=""/>
<key code="89" output=""/>
<key code="91" output=""/>
<key code="92" output=""/>
<key code="96" output=""/>
<key code="97" output=""/>
<key code="98" output=""/>
<key code="99" output=""/>
<key code="100" output=""/>
<key code="101" output=""/>
<key code="103" output=""/>
<key code="105" output=""/>
<key code="107" output=""/>
<key code="109" output=""/>
<key code="111" output=""/>
<key code="113" output=""/>
<key code="114" output=""/>
<key code="115" output=""/>
<key code="116" output=""/>
<key code="117" output=""/>
<key code="118" output=""/>
<key code="119" output=""/>
<key code="120" output=""/>
<key code="121" output=""/>
<key code="122" output=""/>
<key code="123" output=""/>
<key code="124" output=""/>
<key code="125" output=""/>
<key code="126" output=""/>
</keyMap>
<keyMap index="2" baseMapSet="ANSI" baseIndex="1">
<!-- Само буквите се обръщат, символите остават нормални -->
<!-- ═══════════════════════════════════════════
INDEX 3 — Caps Lock + Shift (малки с Caps)
═══════════════════════════════════════════ -->
<key code="10" output="Ч"/>
</keyMap>
<keyMap index="3" baseMapSet="ANSI" baseIndex="0">
<!-- ═══════════════════════════════════════════
INDEX 4 — Option (специални символи)
═══════════════════════════════════════════ -->
<key code="10" output="ч"/>
</keyMap>
<keyMap index="4">
<!-- ═══════════════════════════════════════════
INDEX 5 — Option + Shift
═══════════════════════════════════════════ -->
<key code="10" output="§"/>
<!-- Option + § → връща оригиналния § ако е нужен -->
<key code="18" output="¡"/>
<key code="19" output="™"/>
<key code="20" output="£"/>
<key code="21" output="¢"/>
<key code="22" output="§"/>
<key code="23" output="∞"/>
<key code="24" output="≠"/>
<key code="25" output="ª"/>
<key code="26" output="¶"/>
<key code="27" output="–"/>
<key code="28" output="•"/>
<key code="29" output="º"/>
<key code="49" output=" "/>
<!-- Стандартни Option символи -->
</keyMap>
<keyMap index="5">
<key code="10" output="Ч"/>
<key code="24" output="±"/>
<key code="27" output="—"/>
<key code="49" output=" "/>
</keyMap>
</keyMapSet>
<actions>
<action id="delete">
<when state="none" output=""/>
</action>
<action id="return">
<when state="none" output="
"/>
</action>
<action id="tab">
<when state="none" output="	"/>
</action>
</actions>
</keyboard>
СТЪПКА 1 — Запази файла
→ Копирай целия XML код по-горе
→ Отвори TextEdit → Format → Make Plain Text (задължително!)
→ Постни кода → File → Save
→ Запази като:
Bulgarian-Phonetic-Windows.keylayout→ Внимавай разширението да е .keylayout, не .txt!
Важно за TextEdit: Задължително Format → Make Plain Text преди да запишеш. Rich Text (.rtf) ще счупи файла!
СТЪПКА 2 — Копирай в правилната папка
Bash:
# Създай папката ако не съществува
mkdir -p ~/Library/Keyboard\ Layouts
# Копирай файла (смени пътя ако си го запазил другаде)
cp ~/Desktop/Bulgarian-Phonetic-Windows.keylayout ~/Library/Keyboard\ Layouts/
# Провери дали е там
ls ~/Library/Keyboard\ Layouts/
Или за всички потребители на машината:
Bash:
sudo cp ~/Desktop/Bulgarian-Phonetic-Windows.keylayout /Library/Keyboard\ Layouts/
СТЪПКА 3 — Logout / Login
→ Apple Menu → Log Out
→ Влез обратно
Защо е нужно? macOS зарежда .keylayout файловете само при login. Без logout — layout-ът няма да се появи в списъка.
→ System Settings → Keyboard → Input Sources → Edit...
→ Натисни „+" долу вляво
→ В търсачката напиши „DTGarage" или „Bulgarian Phonetic Windows"
→ Ще видиш: Bulgarian Phonetic Windows DTGarage
→ Add → затвори прозореца
Превключване: Кликни на езиковата иконка в Menu Bar → избери Bulgarian Phonetic Windows DTGarage
Отвори TextEdit или Notes и тествай:
| Натискаш | Трябва да пише | Ако пише друго → виж Troubleshooting |
|---|---|---|
| § (клавиша до Shift) | ч | Провери дали правилният layout е активен |
| Shift + § | Ч | Проверка на Shift mapping |
| Option + § | § | Оригиналният символ е запазен с Option |
| A, S, D, F... | а, с, д, ф... | Пълен Bulgarian Phonetic работи |
| Option + Shift + - | — (em dash) | Бонус: дълго тире |
| Проблем | Причина | Решение |
|---|---|---|
| Layout не се появява в списъка | Не е направен Logout/Login | Apple Menu → Log Out → влез отново |
| § пак пише § или нищо | Активиран е стар Bulgarian Phonetic, не нашия | Провери Menu Bar — трябва "DTGarage" layout |
| Файлът не се появява | Запазен като .txt или Rich Text | TextEdit → Format → Make Plain Text → запази пак като .keylayout |
| XML грешка при зареждане | Копиран е непълно или с extra символи | Изтрий файла, копирай кода отново от нулата |
| Работи само за текущия потребител | Файлът е в ~/Library, не в /Library | sudo cp към /Library/Keyboard Layouts/ |
Bulgarian Phonetic Windows DTGarage — Normal режим:
| Клавиш | Извежда | Клавиш | Извежда | Клавиш | Извежда |
|---|---|---|---|---|---|
| § | ч ★ | Q | я | W | в |
| E | е | R | р | T | т |
| Y | ъ | U | у | I | и |
| O | о | P | п | [ | ш |
| ] | щ | A | а | S | с |
| D | д | F | ф | G | г |
| H | х | J | й | K | к |
| L | л | Z | з | X | ж |
| C | ц | V | б | B | н |
| N | м | M | ь | \ | ю |
Terminal · Finder · Battery · Shortcuts · Sequoia · Български · .keylayout
Тони Ангелчовски
Sysadmin · macOS & Linux · Основател на dtgarage.eu
Работи ли при теб?
Остави реакция!
Имаш ли друг клавиш, който искаш да ремапнеш? Пиши — помагам!
Last edited: