Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Эмуляторы отечественных компьютеров (http://zx-pk.ru/forumdisplay.php?f=61)
-   -   Эмулятор УКНЦ - EmuStudio (http://zx-pk.ru/showthread.php?t=18027)

Patron 2nd January 2013 22:48

Quote:

Originally Posted by Titus (Post 564079)
Если же переключиться на другое окно, то восстановится системное состояние лампочек клавиатуры.

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

Titus 2nd January 2013 22:50

Quote:

Originally Posted by Patron (Post 564084)
Здесь есть небольшая засада, заключающаяся в том, что некоторые клавиатуры не могут отрабатывать код переключения лампочек слишком часто (у меня - не чаще одного раза в 90 мс). Чтобы промежуток между последовательными переключениями лампочек соблюдался - функции переключения лампочек (в модульном API) только ставят их флаги, а специальная функция, вызываемая 60 раз в секунду - приводит лампочки в соответствие с флагами, учитывая время последнего переключения последней лампочки.

А ты проверь у себя. У меня введена защита от заторможенности лампочек, т.к. я не ориентируюсь на состояние лампочки в текущий момент, чтобы ее переключить. Я ориентируюсь на ее теоретическое состояние, сохраненное в переменной.

Patron 2nd January 2013 22:59

Quote:

Originally Posted by Titus (Post 564086)
Я ориентируюсь на ее теоретическое состояние, сохраненное в переменной.

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

Т.к. Windows при этом относительно состояния лампочек не ошибается - то скорее просто в Windows для этих кодов действует общая "защита от автоповтора".

Ведь NumLock, например - генерит автоповтор точно так же, как и любая другая клавиша, но если в Windows зажать NumLock - он не начнёт переключаться 30 раз в секунду.

Titus 2nd January 2013 23:06

Quote:

Originally Posted by Patron (Post 564091)
Оно не обязательно установится, если любая лампочка была переключена меньше чем за 90 мс до этого ( вероятность успеха тем меньше, чем меньше прошло времени после последнего переключения любой лампочки ).

Т.к. Windows при этом относительно состояния лампочек не ошибается - то скорее просто в Windows для этих кодов действует общая "защита от автоповтора".

Ведь NumLock, например - генерит автоповтор точно так же, как и любая другая клавиша, но если в Windows зажать NumLock - он не начнёт переключаться 30 раз в секунду.

Tы запусти и проверь у себя)

Сперва я сделал переключения лампочек, ориентируясь на их текущее состояние (по биту 0 во flags), но после того, как это стало зависать при быстром переключении (т.е. даешь быстро смену 0->1->0, и получается обраная связь, когда не успело устаканиться предыдущее состояние, а ты уже меняешь, и входило в режим генерации постоянной). Тогда я переделал на другой метод, и стало все стабильно и хорошо)

Patron 2nd January 2013 23:10

Quote:

Originally Posted by Titus (Post 564096)
стало все стабильно и хорошо

Верю.

Проверил в своём коде - в модульном API сделано так, что лампочка переключается не раньше, чем через 30 мс после любой другой, и не раньше чем через 90 мс после собственного предыдущего переключения. При переключениях в таком режиме - тоже всё стабильно.

Titus 2nd January 2013 23:15

Quote:

Originally Posted by Patron (Post 564101)
Верю.

Проверил в своём коде - в модульном API сделано так, что лампочка переключается не раньше, чем через 30 мс после любой другой, и не раньше чем через 90 мс после собственного предыдущего переключения. При переключениях в таком режиме - тоже всё стабильно.

проверь мой эмуль.

Patron 2nd January 2013 23:27

Quote:

Originally Posted by Titus (Post 564102)
проверь мой эмуль.

hobot проверит :)

А у него любое виртуальное нажатие на NumLock приводит к глюкам из-за того, что в его ноуте NumLock - чуть ли не главная кнопка, от которой зависит ВСЁ !!!

Поэтому - советую заранее озаботиться возможностью "отключения моргания" ( а значит - и отключения восстановления состояния лампочек ).

Titus 2nd January 2013 23:29

Quote:

Originally Posted by Patron (Post 564104)
hobot проверит :)

А у него любое виртуальное нажатие на NumLock приводит к глюкам из-за того, что в его ноуте NumLock - чуть ли не главная кнопка, от которой зависит ВСЁ !!!

Поэтому - советую заранее озаботиться возможностью "отключения моргания" ( а значит - и отключения восстановления состояния лампочек ).

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

Patron 2nd January 2013 23:34

Quote:

Originally Posted by Titus (Post 564105)
я сомневаюсь, что приведет к глюкам.

Если управлять двумя правыми лампочками - у него всё О.К.
Но стоит послать виртуальное нажатие на NumLock - и его ноут становится ОЧЕНЬ недоволен.
Мне из-за этого пришлось вводить в модульный API специальную настройку, отключающую виртуальные нажатия на NumLock.

Titus 2nd January 2013 23:35

Какое безобразие. Ну пусть он сам ругнется сперва, а мы рассмотрим.


All times are GMT +4. The time now is 02:45.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.