Чи можна відключити перемикач програм командної вкладки в Mac OS X Lion?


Відповіді:


6

Ви можете зіставити командну вкладку на іншу комбінацію клавіш за допомогою KeyRemap4MacBook :

<autogen>__KeyToKey__ KeyCode::TAB, VK_COMMAND | ModifierFlag::NONE, KeyCode::F19</autogen>

Це відключить вкладку команд і вкладку shift-command:

<autogen>__KeyToKey__ KeyCode::TAB, VK_COMMAND | ModifierFlag::NONE, KeyCode::VK_NONE</autogen>
<autogen>__KeyToKey__ KeyCode::TAB, VK_COMMAND | VK_SHIFT | ModifierFlag::NONE, KeyCode::VK_NONE</autogen>

Дякую, це хороша ведуча. Також добре знати, що перезапис через DefaultKeyBinding.dict - це глухий кут. Я спробую KeyRemap4MacBook
Шон Маккейз

1
Це спрацювало чудово, дякую. Якщо це не зрозуміло для інших, вам потрібно додати ці визначення до private.xmlвласного <item>тегу під <root>. Потім перезавантажте private.xmlта перемкніть нову опцію.
jrhorn424

Обов’язково додайте ім’я та ідентифікатор до запису <item> <name>Disable Command Tab</name> <identifier>private.disable_command_tab</identifier>
Willem D'Haeseleer

1

Ви можете зробити це як рівень складання. Для ML 10.8.3 ця реєстрація Cmd+ Tabвідбувається в підпрограмі за адресою 0x10000b258. У псевдокоді це виглядає так:

rax = CPSRegisterForKeyOnConnection(*(int32_t *)rbx, 0x1002cd078, 0x1, 0x1);
if (rax != 0x0) {
    fprintf(**__stderrp, "Error registering cmd-tab key, %d\\n");
}
rax = CPSRegisterForKeyOnConnection(*(int32_t *)0x1002ccda8, 0x1002cd078, 0x2, 0x1);
if (rax != 0x0) {
    fprintf(**__stderrp, "Error registering cmd-shift-tab key, %d\\n");
}

Тож якщо ви заміните такі байтові коди:

488D35691C2C008B3BBA01000000B901000000E85CD71B0085C0741A488B0DD5FC2400488B39488D355B341C0089C230C0E892C51B00488D0563192C008B38488D352A1C2C00BA02000000B901000000E81FD71B0085C0741A488B0D98FC2400488B39488D3541341C0089C230C0E855C51B00

з:

90909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090

І відправте свій Dock.app, він спрацює. Ви також повинні зняти захист двійкового файлу Dock, перш ніж це зробити, оскільки двійковий файл Dock зашифрований.


5
чи можете ви, будь ласка, створити резервну копію вашої відповіді якимсь джерелом? весь цей код може заплутати і викликати недовіру у майбутніх читачів. сподіваюся, ти зрозумієш.
Лоренцо Фон Маттерхорн

1
Додайте також те, що робить оригінальний код, і заміна (розбирання було б добре, наскільки я переймаюся)
vonbrand

3
Це досить класна відповідь. Хоча занепокоєння в інших двох коментарях, ймовірно, справедливо, його пропозиція сумна, що всі коментарі ставлять під сумнів це питання, але ніхто не вказує, що це досить круто. Звідки ви знаєте, яка адреса підпрограми та що таке 090909? (no-op?)
Гал

0

Чи прийнятна відповідь включатиме її перестановку ?

Mac OS X Lion (10.7) має труднощі з виявленням розкладки клавіатури, коли я вперше підключив її. Але після виконання інструкцій (тобто натискання клавіші праворуч від лівого зсуву тощо) він правильно визначає макет.

У системних налаштуваннях Lion має чудову панель клавіатури:

Знімок екрана панелі клавіатури Лева

Далі перейдіть до клавіш модифікатора…

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

Бінго, зараз CapsLock веде себе як контроль.

Або ви можете спробувати виконати ключові прив’язки:

Відредагуйте файл клавіш за замовчуванням, ~ / Бібліотека / Прив'язки клавіш / DefaultKeyBinding.dict. Створіть каталог та / або файл, якщо їх ще немає, і зробіть це таким чином:

{
  /* Remap Home / End to be correct */
  "\UF729" = "moveToBeginningOfLine:"; /* Home */
  "\UF72B" = "moveToEndOfLine:"; /* End */
  "$\UF729" = "moveToBeginningOfLineAndModifySelection:"; /* Shift + Home */
  "$\UF72B" = "moveToEndOfLineAndModifySelection:"; /* Shift + End */
}

Якщо в DefaultKeyBinding.dict вже є записи, просто додайте 4 нових відображення вище до головного розділу вашого файлу. Для його введення в дію може знадобитися перезавантаження.

Вам потрібно буде відкоригувати код вище для того, що ви намагаєтесь зробити


1
Хоча це теоретично може відповісти на питання, бажано було б сюди включити істотні частини відповіді та надати посилання для довідки.
Канадський Люк,

3
Погодьтеся з вищезгаданим коментатором - ця відповідь є занадто неоднозначною. Я вдячний за вашу спробу відповіді, але будь ласка, намагайтеся бути більш прямими. Я відчуваю, що цей запис, ймовірно, збентежить інших, хто знайде це питання в майбутньому. Крім того, перевстановлення всього командного ключа на щось інше не є прийнятним рішенням для мене, оскільки я використовую командний ключ для багатьох інших речей. Я не можу сказати, чи вказаний вам код у другій частині вашого рішення дозволить мені вибірково відключити CMD + TAB, але якщо можна, будь ласка, поясніть, як явно.
Шон Маккейз

Перезапис командного ключа на Caps Lock - це, мабуть, найкраща ідея, яку я міг запропонувати. Ви все одно отримуєте командний ключ, і я буду приголомшений, почувши, що ви насправді для чогось використовуєте шапки. Другим варіантом було продемонструвати обсяг роботи, яку ви збираєтеся виконати, якщо у вас є причина, чому простий спосіб не працюватиме. Поза цим двом у мене більше нічого немає для вас. Я надав найважливіші частини, як рекомендував Лука.
Еверетт

Насправді CapsLock перезавантажений до Escape (важливо, якщо ви використовуєте Vim!). Дякую за ваші зусилля, проте я знову рекомендую вам відредагувати свою публікацію. Будь ласка, просто посилання на щось про перестановку ключів-модифікаторів, щоб майбутнім веб-переглядачам не довелося б переглядати все пояснення, коли вони знають, що це рішення не буде працювати для них.
Шон Маккейз
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.