Создание физической клавиши перехода на новом MacBook Pro с сенсорной панелью путем изменения .keylayout для клавиши §

В британских раскладках клавиатуры TouchBar MacBook Pro есть довольно бесполезная клавиша §/± в левом верхнем углу, которую можно было бы идеально использовать в качестве физической клавиши выхода (см. это изображение ).

macOS имеет систему сопоставления клавиатуры (/Library/Keyboard Layouts/ — например, см. http://www.gingerbeardman.com/UK.keylayout/ и https://developer.apple.com/library/content/technotes/tn2056/ _index.html ), который позволяет менять ключи.

Мне кажется возможным поместить строку в соответствующую раскладку клавиатуры, похожую на:

<key code="<code for that key>" output="&#x1B;" />

должен позволить мне сделать этот ключ управляющим ключом. (Если я смогу найти/создать раскладку и для всех остальных клавиш!)

Погуглив, я не нашел, чтобы кто-нибудь упоминал, что они сделали это, что кажется мне странным. Есть ли какая-то причина, по которой это не сработает? Можно ли переназначить клавиатуру TouchBar с помощью файла .keylayout без потери каких-либо функций?

Я откладывал покупку нового MacBook Pro из-за страха потерять физическую клавишу выхода! Я знаю, что вы можете переназначить ctrl/cmd/etc на Escape с помощью Системных настроек, но по сравнению с этим это кажется плохим решением.

Какую клавишу вы собираетесь использовать, если не заглавные буквы или те, которые Apple делает очень простыми и настраиваемыми?
@bmike Клавиша §/± в левом верхнем углу раскладки клавиатуры для Великобритании — посмотрите на это изображение, чтобы увидеть клавишу, о которой я говорю: d.ibtimes.co.uk/en/full/1570365/macbook-pro-touch- bar.jpg - это бесполезный ключ, который я никогда не использовал по назначению ни на одном Mac!
Ничего себе - я полностью пропустил эту часть. Посмотрим, смогу ли я найти какие-либо варианты, чтобы переназначить это. Мой ответ не такой гибкий с опцией «простого» переназначения.
@bmike Спасибо! Ага. Это интересная опция, на самом деле недоступная на картах клавиатуры США. :-) Я надеюсь, что это достижимо с .keylayout. На самом деле я заказал MacBook Pro Touchbar сейчас, так что смогу поэкспериментировать, когда он прибудет.
@JosephH Вам удалось подтвердить, действительно ли работает ваша первоначальная идея? Было бы хорошо иметь это как еще один ответ.
@OliverJosephAsh Я некоторое время использовал принятый ответ (Karabiner-Elements), но в конце концов обнаружил, что могу нормально печатать с помощью виртуальной клавиши escape, поэтому я больше не беспокоюсь.

Ответы (4)

  1. Установите карабин-элементы
  2. Запустите его с панели запуска (очевидно)
  3. На вкладке «Простые модификации» создайте сопоставление «не-нас-обратная реакция» на «побег».
  4. Наслаждаться!

Код ключа BTW для «§» — 0A (как сообщает Karabiner Event Viewer)

опечатка:s/non-us-backlash/non-us-backslash

Я нашел документацию по переназначению ключей в macOS 10.12 Sierra , которая работает без каких-либо сторонних инструментов.

Чтобы изменить клавишу чуть выше вкладки, установите src на 0x64 (клавиатура не для США \ и |) и dst на 0x29 (Escape). По какой-то причине эти значения должны быть соединены по ИЛИ с 0x700000000 в вызове hidutil.

hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000064,"HIDKeyboardModifierMappingDst":0x700000029}]}'

Вы можете поместить это в LaunchAgent (~/Library/LaunchAgents/give.me.esc.key.plist), чтобы он устанавливался каждый раз, когда вы входите в систему.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>give.me.esc.key</string>
    <key>ProgramArguments</key>
    <array>
        <string>hidutil</string>
        <string>property</string>
        <string>--set</string>
        <string>{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000064,"HIDKeyboardModifierMappingDst":0x700000029}]}</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>
Вы спасли мою жизнь. Я ненавижу клавиатуры с клавишей тильда рядом с короткой кнопкой Shift и кнопкой f*n §под выходом. Поэтому я переназначил его с помощью кнопки тильда и расширенного Shift. hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000064,"HIDKeyboardModifierMappingDst":0x700000035},{"HIDKeyboardModifierMappingSrc":0x700000035,"HIDKeyboardModifierMappingDst":0x7000000e1}]}'Кстати, вы можете получить эти коды с помощью программы просмотра ключей от карабинера.
Как мне сохранить доступ к , shiftчтобы §я все еще мог использовать ±? Т.е. я могу использовать модификаторы?

Откройте Системные настройки - выберите клавиатуру. Затем выберите « Ключи-модификаторы... » в правом нижнем углу окна.

У меня escape назначен на клавишу Caps Lock.

введите описание изображения здесь

Я согласен, что использование управляющих клавиш для выхода плохое, но клавиша Caps Lock работает очень хорошо. На практике у меня не было никаких проблем с обучением использованию программной клавиши Escape. Caps Lock работает намного быстрее, когда я привык к нему из-за меньшего расстояния от домашнего ряда.

Если вы используете macOS 11, все изменилось: в Big Sur есть критические изменения для «Karabiner», так как macOS 11 «больше не будет загружать расширения ядра, которые по умолчанию используют устаревшие программные интерфейсы ядра (KPI)» (как указано на веб-сайте Karabiner). , разработчики работают над переходом на более новый механизм DriverKit из расширения ядра и планируют поддерживать его в Karabiner-Elements 13.0.0).

Если вы здесь, чтобы переназначить escape, возможно, sectionвы могли бы использовать: Переназначить клавиатуру . Версия: 1.6 это: "Попробуйте бесплатно и переназначьте любую одну клавишу".

Хотя я надеюсь, что в будущем Apple расширит переназначение клавиатуры не только клавишами-модификаторами.