Ранее уже публиковал небольшое описание прототипа мыши. Пришло время поговорить о настройке под пользователя. С момента прошлой статьи никаких модификаций в схему устройства не было добавлено (правда «схему» я еще не публиковал). Все доработки исключительно программные.
В операционной системе можно изменить некоторые параметры поведения курсора, но возможности кастомизации ограничены и, в случае переустановки системы, не будут сохранены. Каждый раз все придется делать заново. Кроме этого, могут возникать проблемы при совместном использовании компьютера, так как мало кто из пользователей ПК действительно работают под разными учетными записями. За годы ремонта компов по соседям и знакомым так и не нашел ни одного, где было такое разделение. Именно по этим причинам все настройки должен запоминать не компьютер, а именно мышь.
Хранение настроек в мыши, опять же, идея не новая. Производители продвинутых игровых мышек дают настраивать через специальное приложение чувствительность сенсора, цвет подсветки или макросы. Хотелось бы мне посмотреть, как это делают, но подобных устройств не имею. Есть подозрение, что это дополнительное Custom HID устройство, с которым и взаимодействует софт для ПК.
Этим же путем пойду и я. Можно было бы осуществлять настройку последовательностью нажатий кнопок, но это будет слишком сложно. Сомневаюсь, что пользователь устройства захочет с инструкцией отбивать азбукой морзе требуемый режим работы. Небольшой экран, встроенный в устройство немного упростил бы задачу, но зачем увеличивать стоимость устройства, если оно не является самостоятельным? Мышь в любом случае будет подключена к компьютеру. К планшету, к слову, тоже можно подключить. У компьютера есть большой монитор. И ограничений на программу конфигурации нет. Что хочешь — то и рисуй.
Итак, пишем приложение для компьютера. В нем можно менять настройки, которые потом будут записаны в мышь. Решил делать на Qt, чтобы приложение можно было использовать хоть под Windows (основное количество пользователей), так и под Linux, Mac и, возможно, с планшетом. Насчет последнего есть некоторые сомнения.
Отлаживая прошивку прототипа выписал ряд действий для кнопок.
- Нажатие левой кнопки
- Нажатие правой кнопки
- Нажатие средней кнопки (колесико)
- Прокрутка вверх
- Прокрутка вниз
- Прокрутка влево
- Прокрутка вправо
- Удержание левой кнопки (первое нажатие включает, второе отключает удержание, нужно для выделения текста, файлов, рисования или ещё чего, о чем пока не подразумеваю)
- Удержание правой кнопки
- Удержание средней кнопки
- Двойное нажатие на левую кнопку
- Кнопка «Назад» (используется браузером)
- Кнопка «Вперед»(используется браузером)
Список может быть дополнен, если будут интересные предложения.
У некоторых читателей, наверное, возникли вопросы даже по этим вариантам. Например, про использовании средней кнопки. К сожалению, в жизни частенько встречаю людей, которые её недооценивают. Во время просмотра сайтов вы, скорее всего, периодически открываете ссылки в новой вкладке. Только делаете это при помощи открытия контекстного меню правой кнопкой мыши. Клик по ссылке средней кнопкой делает это сразу. Плюс опять же прокрутка. Если кликнуть колесиком где-нибудь на странице, то под курсором отобразится небольшой кружок (внешний вид зависит от версий операционной системы). Если курсор поместить выше этого кружка, то страница начнет постепенно двигаться вверх.
По поведению стика (управление курсором) тоже есть несколько настроек.
- Минимальная скорость
- Максимальная скорость
- Ускорение
- Время до начала ускорения
- Поведение при смене направления (сбрасывать скорость или же оставлять без изменений)
Технические подробности реализации будут опубликованы, как только смогу разобраться. Пока ещё не все работает.