Объявление Ссылки на скрытые файлы
Фев 05

Горячие клавиши ("hotkeys") - очень удобное изобретение разработчиков операционных систем и программного обеспечения. Эти простые клавиатурные сочетания экономят массу времени, позволяя обращаться к командам приложения минуя процесс поиска нужного пункта меню среди множества других: достаточно лишь запомнить нужное сочетание клавиш.

А что делать, если у какого-то действия нет назначенного сокращения, или оно не такое уж лёгкое для запоминания? Оказывается, в некоторых случаях эту проблему можно решить, назначив горячие клавиши, удобные вам.

Дело в том, что в большинстве случаев формат Universal Binary, в котором распространяется большинство приложений для Mac OS X содержит исходные данные об интерфейсе приложения, и данные эти можно изменить. Правда, для это потребуется скачать и установить себе пакет Xcode – который помимо IDE для разработки приложений (не только под Mac OS X) содержит в себе редактор внешнего вида приложений - Interface Builder, - вот он-то нам и нужен.

Для того, чтобы скачать с сайта Apple последнюю версию Xcode (пакет, кстати, бесплатный), вам потребуется зарегистрироваться на сайте и стать членом ADC (Apple Developer Center). Просто пройдите по этой ссылке, нажмите sign-up и заполните предложенную вам форму. После всех формальностей вы сможете скачать и установить на свой компьютер Xcode – пакет для разработки программного обеспечения.

Подсказка На самом деле не обязательно регистрироваться у Apple и брать пакет с их сайта. Всегда есть вероятность, что у кого-то уже есть самая последняя версия нужного вам программного обеспечения, а потому можно прибегнуть к помощи torrent-сайтов. Но это, разумеется, исключительно на свой страх и риск.

Теперь на конкретном примере я покажу, как можно отредактировать некоторые элементы интерфейса программ.

Меню программыМне довольно часто приходится пользоваться замечательным приложением для работы с базами данных Navicat. Всего в нём, вроде бы хватает, но всегда не давал мне покоя один маленький момент: при просмотре окна с данными в таблице я не мог какой-то комбинацией клавиш открыть окно, для формирования запроса к этой таблице. Мелочь, казалось бы, но каждый раз дёргать курсор мыши в верхний левый угол и выбирать там пункт меню "Query Table" очень неудобно, особенно если пользоваться тачпадом. А раз так, нужно назначить этому функционалу какое-то клавиатурное сочетание.

Найдите то самое приложение, которое вы хотите подправить (предварительно убедившись, что оно не запущено). С большой долей вероятности можно предположить, что оно лежит в Программах. Кликните по выбранному файлу правой кнопкой мыши (или Ctrl+Click) и в появившемся контекстном меню выберите пункт "Показать содержание пакета", после чего вам станут доступны внутренние каталоги приложения.

Контекстное меню

Перейдите в директорию "Contents/Resources" – это каталог с внутренними ресурсами приложения, такими как иконки кнопок, файлы локализации, файлы интерфейса (они-то нам и нужны!) и прочая служебная информация, необходимая программе для работы. Но, не будем отвлекаться на перечисление того, что там может быть, поскольку нам нужны именно файлы, отвечающие за отображение окон и пунктов меню. Для этого найдите папки, оканчивающиеся расширением ".lproj". Если программа мультиязычная, таких директорий может быть несколько: по одной на каждый поддерживаемый язык. В этом случае выберите ту, которая отвечает используемому вами в программе языку. В моём примере это будет английский интерфейс, а директория "English.lproj".

English.lproj

Войдя в выбранный каталог, вы можете обнаружить там от одного до нескольких файлов с расширением ".nib" (то что нам, в общем-то, и нужно), а также дополнительные вспомогательные файлы и папки, требуемые программе для выполнения различных действий (файлы AppleScript, изображения, файлы помощи, библиотеки и т.д.). Но нам, как я уже говорил, нужны именно файлы интерфейса, а точнее – один конкретный файл.

Подсказка Nib-файл – это файл интерфейса приложения для Mac OS X, созданный при помощи приложения Interface Builder и содержащий в себе информацию о положении элементов и окон, а также о связи между ними и выполняемыми программой функциями.

Как выбрать то, что Вам нужно? На этот вопрос очень сложно ответить. Если интерфейс у программы примитивный (в случае очень простого приложения), велика вероятность, что файл будет всего лишь один: тогда и выбирать ничего не надо. Но если файлов много (приложение с множеством интерфейсов и решаемых задач), выбор становится не так очевиден, и приходится исходить из имени файла, пытаясь угадать его назначение. В описываемом примере я сразу обратил внимание на файл с именем TableView.nib, логично предполагая, что файл, отвечаюий за интерфейс просмотра данных таблицы содержит тот пункт меню, который я собираюсь отредактировать. Но так бывает не всегда, и если вы не можете сходу определить, какой именно интерфейс редактировать, открывайте поочерёдно все и смотрите, что там содержится.

Кликнув два раза по выбранному вами файлу, вы запустите приложение Interface Builder, в котором этот файл и откроется: множество окон непонятного назначения заполнивших экран вашего монитора – верный сигнал о том, что всё получилось.

Далее будет много скриншотов, чтобы понятней было, о чём будет идти речь.
Одно из появившихся окон будет называться именем файла, который вы открыли и содержать в себе несколько элементов, часть из которых являются нашей целью. Из названий довольно просто определить, какой именно элемент нужно редактировать. В моём случае это TableViewMenu, но вполне вероятно, что нужный вам элемент будет располагаться в контекстных пунктах, элементы которых так же присутствуют в списке.

Элементы NIB-файла

Кликнув два раза по элементу, я открываю его редактирование, и теперь видно, что это именно то, что мне нужно.
Редактируемое меню

Теперь дело за малым: отобразите панель аттрибутов элемента (⌘+1 или пункт меню Tools -> Attributes Inspector) после чего кликните по интересующему вас пункту в редактируемом меню.

Как видно из примера, в инспекторе отобразятся некоторые свойства элемента, такие как название, начальное состояние и ряд других. Нас же интересует элемент "Key Equiv.", поле напротив которого и является контейнером для клавиатурного сокращения.

Инспектор аттрибутов

Кликните по полю (его рамка станет голубого цвета), после чего можете нажимать сочетания клавиш, для назначения их этому пункту меню. Стоит отметить, что если вы назначите сочетание, которое уже итак используется в программе, никакой ошибки или предупреждения вы не получите, но сокращение работать не будет. Поэтому старайтесь выбирать уникальные комбинации, которые не используются ни в приложении, ни в системе.

После установки "горячих клавиш" сохраните изменённый файл (⌘ + S) и закройте Interface Builder. Запустите приложение, и найдите тот пункт, для которого вы устанавливали или меняли клавиатурное сочетание вызова, чтобы убедиться, что всё сделано правильно.

Результат редактирования меню

Теперь вы можете пользоваться новым функционалом и не тратить время и внимание на неприятные мелочи.

Если этот блог нравится Вам настолько, что Вы хотели бы перечислить его автору денег, просто сделайте это, нажав на кнопку Donate:

Спасибо в любом случае. :)

Связанные записи

метки: , , , , , ,

оценка:
НеинтересноИнтересно - рейтинг: +5, голосов: 5

Комментарии к статье “Изменение “горячих клавиш” в программах”

  1. Васья Пупкенн

    а что мешает назначить хоткеи штатно, через панель Настройка-Клавиатура – Для программы.. ?
    Сложности какие-то на ровном месте.

  2. admin

    Совершенно ничего не мешает, Вы правы.
    А файлы, к примеру, можно копировать и вставлять куда-то при помощи контекстного меню. А можно при помощи “горячих клавиш”. А можно при помощи команд терминала.
    Видите ли, ситуации-то разные бывают, и совсем не будет лишним, расширить свой кругозор.

  3. Алексей

    А как быть, если хочется, например, поставить на backspace в Finder – действие перейти вверх (как в виндах), а не удалять? Штатным спобом такие клавиши вообще не годятся для hot keys.

    Способом описанным в этой статьей – тоже не все можно, к сожаленю.
    Например, в пакете Safari большинство nib-ов скомпилинные, и IB их не откроет..(((
    Существуют другие методы изменения хот кеев?

  4. Rodion Baskakov

    Алексей, помимо описанного в этой статье способа есть ещё способ изменения клавиш через пункт “Клавиатура” в “Системных настройках”. Но и там, увы, поставить Backspace на возврат назад в Finder не получится. (Кстати, чтобы что-то удалить, одного backspace будет явно недостаточно, нужно ещё и Cmd нажать).

    Также существуют программы, позволяющие назначать “горячие клавиши” на практически любое действие, но я ими никогда не пользовался, потому посоветовать какую-то конкретную не могу.

  5. Алексей

    Я разобрался тут. Для того, что бы назначить клавиши, а IB пишет, что nib скомпилированный – надо нажать show package content и скопировать расположенный там keyedobjects.nib в другой nib, который открывается IB (например тот же TableViewMenu.nib) как описано выше))

    Плюс еще для смены сочетаний клавиш, можно отредактировать StandardKeyBinding.dict или ~/Library/KeyBindings/DefaultKeyBinding.dict программой KeyBindingEditor

  6. Rodion Baskakov

    Алексей, огромное спасибо за предложенные способы, почерпнул для себя много полезного.

  7. Денис

    Родион, а вы не пытались с помощью xcode добавить кнопку с существующей функцией в панель инструментов? В некоторых программах ну уж очень не хватает дополнительных кнопок.

  8. Rodion Baskakov

    Честно говоря, я не очень сильно знаком с программированием на Objective-C, но мне кажется, что необходимую Вам задачу посредством редактирования интерфейса скомпилированного приложения в XCode нельзя.

  9. gordon

    resourceful@ashen.monmouth” rel=”nofollow”>.…

    hello!…

Написать отзыв

Подписаться именем или OpenID