Библиотеки для кнопки

MaksVV
Offline
Зарегистрирован: 06.08.2015

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

Клапа вообще-то дал решение вопроса, если вы не в курсе 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

wdrakula пишет:

Сережа! Прости, но я долго изучал свой столетний Беккер, потом синтезатор... И ни у одного не обнаружил ни даблклика ни лонгпресса. ;))))

В рояле нет лонгпресса?

Т.е. звучание ноты никак не зависит от длительности нажатия на клавишу?

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

Цитата:

Уважая твое занудство, переформулирую: если в проекте используются лонгпресс и/или даблклик, то драйвер клавиатуры должен отдавать событие в поток по завершению распознавания. Это, очевидно, влечет за собой задержку, заметную пользователю, которая является неизбежной платой за использование вышеназванных способов управления.

Так тебя устроит? ;))

Нет, не устроит.

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

 

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

MaksVV
Offline
Зарегистрирован: 06.08.2015

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

Я вот свет подключил, на нефиксируемый выключатель. В гостинной три люстры. Одиночный клик меняет состояние света, Лонг клик - меняет состояние функции "свет по движению", дабл кликом  выбирается количество включенных люстр. И что из того, что у меня свет включается через 200 мс после нажатия на выключатель, а не сразу? Не напрягает от слова совсем, при чём никого из членов семьи, да и гости как бы не жаловались. А вот если при выборе количества люстр, читай при дабл клике, свет будет мигать  - вот это бы уже серьёзно бесило. 

sadman41
Offline
Зарегистрирован: 19.10.2016

А если пьяный пришел домой, то все - заколебешься люстры переключать?

Юзабилити - сложная наука, а не просто выбор между сингл- и дабл-кликом.

grabbly
Offline
Зарегистрирован: 14.04.2020

Такс, всех с приближающимся праздниками, уважаемые форумчане. 

Замечания выданные ранее принял исправил и тестирую. Скоро выложу с мольбами дать больше критики :D саддизмом попахивает, но как по другому расти. Отвечу так же, что программирование ардуинок это хобби в дополнение к электронике, и я не могу уделять достаточно времени для глубокого изучения матчасти, по этому прошу не кидать сильно г..ном, а если будете, то предупреждайте)

По поводу клик, дабл клик и лонгпресс. 

Я задумал устройство, четырехканальное суточное реле времени. Т.е. дисплей часы и 4 кнопки + релюшки, на каждую релюшу можно задать время включения и выключения. так же нужна возможность отключать работу по суточному таймеру, т.е. игнорировать уставки. Еще нужна возможность включать/выключать канал вручную. Дабы не плодить менюхи и упростить юзабилити (понравилось слово) было принято следующее:

4 кнопки это "назад", "вверх", "вниз", "ок" этими кнопками в настроках мы ходим по настройкам, меняем их и применяем/выходим

эти же кнопки со стартового экрана привязаны к выходам. Таким образом клик - вкл/выкл реле, дабл клик включает работу по таймеру, лонгпресс - вход в настройки таймера. 

Для настройки RTC со стартового экрана лонгпресс двух центральных, но то мелочь   

MaksVV
Offline
Зарегистрирован: 06.08.2015

sadman41 пишет:
А если пьяный пришел домой, то все - заколебешься люстры переключать? Юзабилити - сложная наука, а не просто выбор между сингл- и дабл-кликом.

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

nik182
Offline
Зарегистрирован: 04.05.2015

Часы с будильником на тиньке. Из за ограничения ног только 2 кнопки. Только клик и лонгпресс хватает на настройку всех режимов. Наличие дабл клика через некоторое время начинает бесить из за задержки при настройки времени из за не возможности быстро нажать раз пять, когда из двойки надо сделать семёрку. Пять коротких нажатий и одно длинное для перехода к следующей цифре. При наличие даблклика в драйвере кнопки превращает это действие в забавный квест. Особенно для человека, который не писал программу, а получил словесную инструкцию по настройке.  

grabbly
Offline
Зарегистрирован: 14.04.2020

что мешает для настройки времени на дабл клик тоже поставить увеличение счетчика на +2? т.е. кликнул +1, быстро два раза кликнул +2 

nik182
Offline
Зарегистрирован: 04.05.2015

Ну это и квест усложнит - на 6 +2 прыгнуть на 8 и ещё 9 раз кликать или на вторую кнопку переходить и опять -2 на 6. Я говорю бесят задержки. За 5 кликов экран успевает обновиться 1 раз. Когда кнопка выдает за это время не понятное количество плюсов либо медленно и печально кликать после каждого обновления или кликать быстро и точно без страха, что кнопка выдаст другое количество кликов в программу.    

Kakmyc
Offline
Зарегистрирован: 15.01.2018

Вот примерно для таких условий я и писал библиотеку.
В итоге перед двойным кликом одиночного нет.
И вообще это у меня мультиклик.
Настраивается при создании объекта, может принимать значения от 1(выключено) до 254(255 это уже longpress)

Green
Offline
Зарегистрирован: 01.10.2015

andriano пишет:

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


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

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ахринеть!

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

ЕвгенийП пишет:

Ахринеть!

Напоминает эпичные битвы остро и тупоконечников?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Та, даже хлеще. Особенно умиляют всевозможные настраиваемые мультиклики.  Дед, предлагаю считать библиотеку кнопки некошерной, если с её помощью нельзя безо всякого дополнительного программирования декодировать азбуку Морзе! Вот это библиотека! Тут тебе и мульти-, и длительности - усё! Не лохи, чай!

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

ЕвгенийП пишет:

Дед, предлагаю считать библиотеку кнопки некошерной, если с её помощью нельзя безо всякого дополнительного программирования декодировать азбуку Морзе!

Это надо сначала обдумать, а потом обмыть. Вот вечером и займуся. 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

ЕвгенийП пишет:

Та, даже хлеще. Особенно умиляют всевозможные настраиваемые мультиклики.  Дед, предлагаю считать библиотеку кнопки некошерной, если с её помощью нельзя безо всякого дополнительного программирования декодировать азбуку Морзе! Вот это библиотека! Тут тебе и мульти-, и длительности - усё! Не лохи, чай!

Блин, вот в библиотеке для кнопки кодировать не только длительность нажатий, но и длительность пауз, - я бы до этого не додумался!