?

Log in

No account? Create an account
Навигация на нотном листе - В Северном Ледовитом
August 22nd, 2013
12:10

[Link]

Previous Entry Share Next Entry
Навигация на нотном листе
К вопросу о сферическом коне в вакууме об идеальном нотаторе. Проза жизни: как протягивать нотный лист. Идеальное должно быть не только идеальным, но и привычным. Какие есть привычные способы протягивания/прокрутки?

Первые несколько способов это не протягивание, но пусть будет здесь для коллекции:
1. Полосы прокрутки.
- они хороши для индикации текущего положения, но для его изменения они не годятся: требуется перемещение мыши, точное попадание в ползунок, соизмерение движения ползунка с реальным продвижением нотного листа. Нет, не годится.

2. Панель (полоса) навигации (как в Sibelius, MuseScore и т. д.).
- это всего лишь улучшенная полоса прокрутки. Она идеальна для индикации текущего положения, хороша для попадания в нужную страницу партитуры и в нужную часть страницы. Но для точного позиционирования она бесполезна.

3. Колесо мыши.
- для точного позиционирования это лучше, чем полоса прокрутки: скорость вращения легче соизмерить с продвижением нотного листа. Однако, как правило, у мыши только одно, вертикальное, колесо, а перемещение должно быть ещё и горизонтальным. Кроме того, у любого колеса есть шаг, таким образом, перемещение неизбежно дискретно.

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

5. Клавиши вверх и вниз (как в Score).
- см. предыдущий пункт. Кроме того, клавиши вверх и вниз должны управлять курсором. Как и влево / вправо.

А теперь, собственно протягивание:
6. Протягивание левой кнопкой мыши (как в Sibelius, MuseScore и т. д.).
- серьёзный недостаток (L)-протягивания состоит в том, что оно работает только на пустом месте листа. Если указатель мыши попадает на какой-то объект, то двигается этот объект.

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

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

7. Протягивание правой кнопкой мыши (как в Finale под Windows).
- по-моему, это наилучшая идея, за исключением того, как это реализовано конкретно в Finale. Дело в том, что где-то десять лет назад в Finale с большим опозданием ввели такую обычную для остальных программ вещь, как контекстное меню на правой кнопке мыши. И с того момента (R)-протягивание стало работать -- правильно! -- только на пустом месте листа. При попадании по объекту вместо протягивания вываливается контекстное меню для этого объекта. Технически проблема выеденного яйца не стоит: нужно выбрасывать контекстное меню не при нажатии, а при отпускании (R), и только в том случае, если между нажатием и отпусканием (R) не происходило движение мыши. В противном случае нужно отрабатывать протаскивание.

Кстати сказать, (R)-протаскивание в FinWin это эмуляция временного переключения в инструмент (Hand Grabber Tool), который при нормальном включении работает с (L)-протаскиванием, и ему не мешают ни объекты, ни контекстное меню. Впрочем, о минусах такой работы см. в предыдущем пункте.

- существенный недостаток (R)-протаскивания состоит в том, что правая кнопка мыши имеется не на всех платформах. Например, в Finale на Маках (R)-протаскивание реализовано, как option-command-(L). Если честно, я не совсем понимаю причину упрямого использования однокнопочных мышей, с которыми работа в любой приличной программе превращается в игру в активити, где приходится враскорячку нажимать option, command и shift в разных комбинациях.

8. Протягивание с помощью комбинации пробел+(L) (как во всех программах Adobe)
- это хороший удобный способ, но только до тех пор, пока не работаешь с текстом или другим материалом, где используется пробел (например, в идеальной программе-нотаторе пробел мог бы использоваться для ввода пауз). Сколько вёрстки было запорото в Adobe InDesign’е, когда в текстовом режиме при выделенном куске текста по привычке нажималось пробел-(L) с целью протаскивания, и выделенный текст заменялся пробелами! Хорошо, если это вовремя было замечено. Кстати, странно, что на Маках, где столько чудесных клавиш-модификаторов (option, command, shift, control наконец) потребовалось вводить ещё одну клавишу-модификатор, пробел. Видимо, это было продиктовано желанием реализовать универсальную комбинацию для всех платформ.

Резюме: Полагаю, в идеальной программе должен быть выбор. Универсального кросс-платформенного решения, возможно, не получится. Например, на устройствах с многокнопочной мышью можно по дефолту предложить (R)-протаскивание, у одноклеточных однокнопочных -- option-command-(L) (для привыкших к Finale), на тач-скринах (L)-протаскивание. При этом, разумеется, должна быть возможность поменять клавиши-модификаторы и выбрать другую кнопку мыши. Ну и постоянное включение hand-grabber-tool’а с последующим повсеместным (L)-протаскиванием никуда не денется.

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

Tags: , ,

(8 comments | Leave a comment)

Comments
 
(Deleted comment)
From:ptrue
Date:August 23rd, 2013 07:28 am (UTC)
(Link)
У тачскрина (в нынешних реализациях) есть очевидная проблема: необходимость совершать лишнее действие перед работой с объектами (выделение объекта). В противном случае тач-устройство не знает, что мы хотим: прокручивать лист или двигать объект. А, правда, есть ещё движение двумя пальцами. Да, пожалуй.
(Deleted comment)
From:ptrue
Date:August 23rd, 2013 08:48 am (UTC)
(Link)
Ну да. И я тут прочитал, что, идя навстречу настойчивым пожеланиям трудящихся, с 2005 года Apple выпускает и обычные мыши с правой кнопкой и с (малюсеньким) колёсиком.
[User Picture]
From:niclaus
Date:August 23rd, 2013 01:46 am (UTC)
(Link)
Петя! У тебя же ОТПУСК !!!!!! :)))))))
From:ptrue
Date:August 23rd, 2013 07:20 am (UTC)
(Link)
Вот именно! Мне больше некогда всем этим заниматься, только в отпуске...
[User Picture]
From:venimeuxstaya
Date:August 23rd, 2013 05:22 am (UTC)
(Link)
Вместо пробела использовать любую управляющую клавишу, и все. Ctrl+L или Alt+L
From:ptrue
Date:August 23rd, 2013 07:25 am (UTC)
(Link)
Разумеется. Ctrl не совсем удачный вариант, поскольку обычно Ctrl-(L) используется для добавления ещё одного элемента к selection'у. А Alt (Command) вполне мог бы подойти. Однако если есть возможность использовать правую кнопку мыши, то, полагаю, ей следует отдавать предпочтение, так как оперировать одной лишь кнопкой мыши в любом случае удобнее, нежели кнопкой мыши и клавишей-модификатором. Кроме того, как я уже написал, важно, чтобы люди с устоявшейся привычкой могли с лёгкостью перейти на новую программу. Поэтому в любом случае нужен настраиваемый интерфейс с неким удобным дефолтом.
Powered by LiveJournal.com