Показаны сообщения с ярлыком key remapping. Показать все сообщения
Показаны сообщения с ярлыком key remapping. Показать все сообщения

суббота, 7 января 2012 г.

Осваивая MacOS X Lion :: скроллинг стрелками и др.

Одно из важнейших UI-нововведений в Lion - это сближение с iOS в плане управления контентом, а именно скроллинг "в естественном направлении". Этим свойством интерфейса можно управлять в настройках трекпэда

и мыши


Итак, с точки зрения Apple, естественный скроллинг - это когда мы ведем палец (на тачскрине) или два пальца (на трекпэде) вверх и прокручиваемый контент (т.е. текст/изображения, не помещающиеся по высоте в один экран) тоже движется вверх. Ну и аналогично с противоположным направлением. С пальцами более-менее ясно, тут полное соответствие с айфоном-айпэдом (хотя те, кто НЕ работал с ай???ом, вряд ли увидят тут естественность и логику).
Пользователь Magic Mouse и Magic Trackpad тоже может представить себе, что водит пальцами по стеклу ай???а.
Но когда речь идет о колесике традиционной мыши, дело несколько усложняется. Ведь колесико никак не связано c упомянутыми выше устройствами. Оно старше их и пользователи скорее всего привыкли к простой концепции его работы: ты крутишь колесико вниз чтобы посмотреть что находится внизу.
"Естественный скроллинг" подразумевает, что ты крутишь колесико вверх, совершая пальцем примерно то же действие, что и на тачскрине (или двумя пальцами на трекпэде). То есть крутишь вниз, чтобы сдвинуть контент вниз и посмотреть, что находится наверху. А ведь пользователь мак-компьютера иногда может нисходить на простые смертные ЭВМ, где, as far as one understands, настроить под себя этот параметр не удастся.
Отмечу, что примерно за [декабрь-август=12-08=4] четыре месяца мне удалось полностью освоить естественный скроллинг. Я имею в виду, что когда я сажусь за ЭВМ в учебных классах школы, университета или АППО (которые окружающие почему-то называют компьютерами), то первые пять минут (а больше я за ними не задерживаюсь) пытаюсь крутить колесико сообразно своим новым Apple-привычкам.

Но когнитивный диссонанс поджидал меня за клавиатурой собственного компьютера.

В какой-то момент мне было лениво перенести ладонь на полтора сантиметра левее к трекпэду и я начал скроллить страницу клавишами управления курсором. Ха! Я нажал на "стрелку вниз" и, поскольку уже впитал естественную манеру, то ожидал, что контент тоже поползет вниз. Однако же нет. Клавиша "стрелка вниз" по-прежнему показывает мне то, что находится внизу.

Когда я стал гуглить эту проблему, то достаточно быстро нашел расширение для Safari, которое меняет функциями соответствующие курсорные клавиши (запрос был "natural scrolling arrow keys").

http://canisbos.com/natkeyscroll (тж на сайте macupdate.com)

Но что, если я хочу, чтобы это работало не только в Сафари?

Рад предложить решение.

Воспользуемся штучкой, о которой я уже писал в этом блоге ранее, а именно

KeyRemap4MacBook

(скачать)

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


<item>
  <name>Swap Up and Down Safari</name>
  <identifier>private.swap_up_and_down_safari</identifier>
  <only>SAFARI</only>
 
  <autogen>--KeyToKey-- KeyCode::CURSOR_UP, KeyCode::CURSOR_DOWN</autogen>
  <autogen>--KeyToKey-- KeyCode::CURSOR_DOWN, KeyCode::CURSOR_UP</autogen>
</item>


Файл private.xml помещается вот сюда: ~/Library/Application Support/KeyRemap4MacBook/private.xml

Отмечу, что благодаря этому файлу KeyRemap4MacBook начинает приближаться по мощности к AutoHotKey, о котором я также ранее писал.

Смысл его команд можно уяснить для себя здесь:

☞ Руководство по пользовательским настройкам клавиш в файле private.xml
☞ Коды клавиш для файла private.xml
☞ Коды приложений для него же

В случае браузера существенный минус решения в его текущей, не полностью завершенной реализации заключается в том, что когда браузер используется в режиме редактирования (например, как у меня сейчас при написании этого поста), то клавиши со стрелками работают не для просмотра и, соответственно, перемещают курсор по тексту не так, как надо. Что тут можно допилить? Ну, наверное, добавить для браузеров модификатор... что-то вроде

<autogen>--KeyToKey-- KeyCode::CURSOR_UP, OPTION_R, KeyCode::CURSOR_DOWN</autogen>

Оставляю это на усмотрение читателя. Можно для Сафари установить упомянутое выше расширение, а для Preview и каких-то других подобных приложений использовать KeyRemap4MacBook.

Когда всё написано, нужно сохранить файл, нажать в настройках Reload XML и не забыть включить появившиеся опции:


P.S. Все вышеизложенное про ремэппинг клавиш я выяснил по ходу написания поста в период с 05:30 по 06:48 08 января 2012 года. А сначала задумывал просто поставить проблему и заодно упомянуть про интересное отличие масштабирования. Не могу оставить это в стороне.
Итак. В Сафари реализовано масштабирование двумя пальцами (как на тачскрине в ай???ах), при этом текст масштабируется отлично, но не переносится, то есть после этого приходится скроллить. Как альтернатива - масштабирование с помощью плюсования и минусования (⌘= и ⌘-). В том и другом случае возврат к режиму без масштабирования - ⌘0
Но мне гораздо больше нравится режим "наезда" на область экрана - плавного масштабирования с помощью прокрутки. Я включаю эту возможность с клавишей Alt (⎇) - это прекрасно работает при демонстрации чего-либо с проектором.



Частично эти настройки дублируются в Universal Access (специальных возможностях для слабовидящих и т.п. - я как раз несильновидящий и при бешеном разрешении Air  некоторые буковки становятся совсем неподъемными). Здесь мы можем узнать, что можно очень быстро вернуться в режим 1:1 с помощью сочетания ⎇⌘8












воскресенье, 17 октября 2010 г.

Раскладки. Революция.

Некоторое время назад я писал "псто о раскладках", в котором пропагандировал за программу AutoHotKey. Тогда я еще не был макпользователем и не знал, какие маленькие радости несет в себе алюминиевое яблоко.В общем, на клавиатуре у меня нет клавиши Delete и переключение раскладок тоже.. скажем так, необычное.
А еще меня давно раздражают сочетания клавиш (по-моему, КО, гораздо удобнее тыркать одну клавишу, чем две). Нет, я, наверное, понимаю, почему по традиции используются сочетания, но хочу без них. Итак, находясь в Mac OS X, я нашел программу KeyRemap4McBook, которая пришла на смену менее удобной программе DoubleCommand (отмечу к слову, что я удалял эту программу два дня, пока не понял в точности что нужно сделать, что стереть ее с лица моего макбука,  типичное решение для домохозяек).
С помощью KeyRemap я назначил русскую раскладку на правую клавишу Cmd, а английский - на левую. Если запомнить, что тыкаешь правым большим пальцем для русского, а левым для английского, то процесс набора текста ускоряется (у меня, во всяком случае).

Также я назначил, чтобы сочетание Shift+Delete делало "Delete в стиле PC" - то есть удаляло символ справа от курсора. Для удаления символа слева от курсора используется "Delete в стиле  Mac", который любой ПК-пользователь назовет "Backspace".

Но когда возникла необходимось поработать в Windows, стало понятно, что надо звать на помощь AutoHotKey. И вот какая проблема тут возникла.

Мне надо, чтобы одиночно нажатая клавиша LWin ( левый Windows,  или левый Cmd)  вызвала переключение на английскую раскладку, но чтобы в сочетаниях с другими клавишами она работала как Ctrl -  потому что именно сочетание Cmd + V (а не Ctrl + V) уже вызвало у меня привычку в Mac OS X.

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

Поэтому вот частное решение.


RWin::PostMessage, 0x50, 2, 68748313,, A  
LWin::PostMessage, 0x50, 2, 67699721,, A
 LWin & sc02f::send {Ctrl Down}{vk56}{Ctrl Up}  ;paste
 LWin & sc02e::send {Ctrl Down}{vk43}{Ctrl Up}  ;copy
 LWin & sc02d::send {Ctrl Down}{vk58}{Ctrl Up}  ;cut
 LWin & sc02c::send {Ctrl Down}{vk5A}{Ctrl Up}  ;undo
 
+BS::Send, {Del}

Решение заключается в том, чтобы для конкретных сочетаний работы с буфером обмена и отменой происходил ремаппинг. Хитрость тут в том, что по-разному воспринимаются клавиши с буквами z,x,c,v (я,ч,с,м) в разных раскладках. Поэтому используются скан-коды и виртуальные клавиши.