Board.KolibriOS.org

Official KolibriOS board
It is currently Thu Nov 26, 2020 1:37 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 27 posts ]  Go to page Previous 1 2
Author Message
PostPosted: Wed May 30, 2012 11:06 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Я так понимаю, там общесистемные горячие клавиши не посылаются всем-всем приложениям.


Top
   
PostPosted: Wed May 30, 2012 11:08 pm 
SoUrcerer wrote:
Я так понимаю, там общесистемные горячие клавиши не посылаются всем-всем приложениям.

Если бы все было так просто. В том же Шиндошс я не замечал залипания клавиш в FAR, при использовании Alt+Tab.


Top
   
PostPosted: Wed May 30, 2012 11:12 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Ты про следующую ситуацию, да?
1) Нажат Alt
2) Сообщение о нажатии отправлено всем
3) Нажат tab, переключение произошло, нажатие Tab не отправлено никому

Событие отжатия Alt не отправляется никому - залипание. Так почему бы не отправить событие отжатия всех кнопок комбинации всем приложениям, если оно действительно произошло?


Top
   
PostPosted: Wed May 30, 2012 11:15 pm 
Если приложение не зарезервировало для себя какую либо клавишу как "горячую", то после того как активным станет другой поток буфер клавиатуры по умолчанию будет принадлежать ему. Ядро не может знать кому нужно событие отжатия, а кому нет, если приложение заранее не внесло себя в список.


Top
   
PostPosted: Wed May 30, 2012 11:20 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Событие нажатия alt (ctrl,shift) приходит всем или только активному окну?


Top
   
PostPosted: Wed May 30, 2012 11:26 pm 
Если все читать через функцию 2, то только активному окну, кроме приложений заранее установивших себе alt (ctrl,shift) как "горячие".
Однако следует учесть, что общее количество горячих комбинаций ограничено и злоупотреблять их использованием не стоит, потому что обработка большого списка займет слишком много времени и система станет еще менее отзывчивой (здравствуй Квейк!).

Использование же функции 66.3 не удачное решение. Это увеличит нагрузку на систему, если периодически опрашивать состояние (прощай ф.10), либо можно "прозевать" изменение состояния, если вызывать ф.66.3 сразу после ф.2.


Last edited by Mario on Wed May 30, 2012 11:30 pm, edited 1 time in total.

Top
   
PostPosted: Wed May 30, 2012 11:30 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
И после активизации приложения, получающего нажатие "горячей комбинации", прошлое активное приложение не получает событие отжатия. Почему не отправлять отжатие до активизации этого нового приложения?


Top
   
PostPosted: Wed May 30, 2012 11:32 pm 
А ты видел код обработчика клавиатуры? Если ты сможешь это сделать, то будешь охуенным программистом.
А вообще проблема в том, что когда приложение считывает функцией 2 код обычной клавиши, оно очищает буфер клавиатуры и никаких "горячих" комбинаций уже не появится. Потому сначала "горячие" комбинации, а потом уже активное приложение.


Top
   
PostPosted: Wed May 30, 2012 11:38 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Что-то я ничего не понял. На трезвую голову посмотрю код обработчика клавиатуры. Здравый смысл подсказывает мне, что можно сделать все правильно и красиво.


Top
   
PostPosted: Wed May 30, 2012 11:41 pm 
SoUrcerer wrote:
Здравый смысл подсказывает мне, что можно сделать все правильно и красиво.

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


Top
   
PostPosted: Fri Jun 01, 2012 12:40 am 
Mario wrote:
Кроме выше описанных проблем обнаружилась еще одна проблема - при пользовании mousemul управляющие клавиши (стрелки и 5) срабатывают на активном приложении. У меня нет идей как побороть эту ситуацию, если никто не предложит метод решения, то придется откатить ревизию 2611 и закопать мамонта обратно. Черт с ним с залипанием Shift, Ctrl, Alt - благими намерениями вымощена дорога сами знаете куда.

Откатить все таки не получится. Если приложению не возвращать код назначенный на горячую клавишу (кстати реализация именно горячих клавиш, а не комбинаций сделана, потому и проблемы возникаю имхается мне), то при назначении горячих комбинаций типа Win (Ctrl, Alt, Shift) + символьная клавиша (в нашем случае R и D) приводит к тому что они становятся недоступными для обычного ввода. Раньше такие комбинации не использовались (назначение символьных клавиш в качестве горячих), потому эта недоработка реализации SVN r.92 не была заметна. С введением же новых горячих комбинаций проблема вылезла во всей красе.


Top
   
PostPosted: Fri Jun 01, 2012 4:18 am 
Поскольку приложение MOUSEMUL имеет уникальный статус, то я ввел новую пару функций 66.6 и 66.7, для решения проблемы. SVN r. 2709, 2710


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 27 posts ]  Go to page Previous 1 2

All times are UTC+03:00


Who is online

Users browsing this forum: Google [Bot] and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited