МикроЭВМ в клаве всё-равно обрабатывает нажатия клавиш последовательно. Какая из клавиш будет обработана первой - уже вопрос архитектуры микроэвм-ки и погоды на Марсе. Но клавиатура даст компу два последовательных нажатия.
Хм, а не сделает ли она прерывание после начала обработки сигнала от первой клавиши? Попробуйте нажать 4,5,6 клавиш одновременно. Вам же не 6 символов выдаст.
А это уже от обработчика (текстового редактора) должно зависеть. Если я бегу вперед, влево, прыгаю, выбираю другое оружие и бросаю гранату, то ни одна сволочь не помешает мне ещё и присесть.
Прерывание таки произойдёт, да. На основной машине. И второе произойдёт после обработки первого - с выдачей сканкода второй нажатой клавиши. Прерывание на микроконтроллере в клавиатуре формально необязательно. На XT к примеру оно вообще не требуется - достаточно просто замкнутый цикл гонять. На AT уже требуется прерывание на сигналы по последовательному порту - с компа могут прийти управляющие команды. Четыре и больше клавиш - пример не показательный, извините. Требования к клавиатурным контроллерам - обеспечивать чёткую обработку двух одновременно нажатых клавиш. Уже то, что клавиатура коректно обрабатывает одновременно зажатые 5-6 (даже не одновременно нажатые) - бонус от производителя клавиатуры. Но 2 обрабатывать просто необходимо, потому как иначе никакой геймер такую клаву не купит.
Миллисекунда - на самом деле огромное время для электроники. Если же сигналы действительно придут одновременно - будет сначала выбрана та, которая раньше просканируется в клавиатуре (если в последние годы ничего не поменялось, то там внутри идет последовательный опрос состояния клавиш).
Причем, сканирование осуществляет такая смешная микросхемка, которая "живет" на плате в клавиатуре. Так что две кнопки по любому не выйдет. Контроллер все равно выберет только одну из них. Если, конечно же, это не клавиши-модификаторы типа Shift, Alt и Control. Когда мы нажимаем, например, Ctrl+Alt+Del - мы вообще нажимаем три кнопки одновременно и ничего :-)
no subject
Date: 2008-01-10 12:49 pm (UTC)no subject
Date: 2008-01-10 12:32 pm (UTC)no subject
Date: 2008-01-10 01:04 pm (UTC)Попробуйте нажать 4,5,6 клавиш одновременно. Вам же не 6 символов выдаст.
no subject
Date: 2008-01-10 01:07 pm (UTC)no subject
Date: 2008-01-11 03:56 am (UTC)no subject
Date: 2008-01-11 11:15 am (UTC)Прерывание на микроконтроллере в клавиатуре формально необязательно. На XT к примеру оно вообще не требуется - достаточно просто замкнутый цикл гонять. На AT уже требуется прерывание на сигналы по последовательному порту - с компа могут прийти управляющие команды.
Четыре и больше клавиш - пример не показательный, извините. Требования к клавиатурным контроллерам - обеспечивать чёткую обработку двух одновременно нажатых клавиш. Уже то, что клавиатура коректно обрабатывает одновременно зажатые 5-6 (даже не одновременно нажатые) - бонус от производителя клавиатуры. Но 2 обрабатывать просто необходимо, потому как иначе никакой геймер такую клаву не купит.
no subject
Date: 2008-01-11 11:57 am (UTC)Кстати, по идее, ещё должно исправно распознаваться нажатие Ctrl+Alt+Del. :) И прочие Ctrl+Alt+...
no subject
Date: 2008-01-10 01:05 pm (UTC)no subject
Date: 2008-01-10 03:02 pm (UTC)no subject
Date: 2008-01-10 01:15 pm (UTC)Если же сигналы действительно придут одновременно - будет сначала выбрана та, которая раньше просканируется в клавиатуре (если в последние годы ничего не поменялось, то там внутри идет последовательный опрос состояния клавиш).
no subject
Date: 2008-01-10 01:24 pm (UTC)Причем, сканирование осуществляет такая смешная микросхемка, которая "живет" на плате в клавиатуре. Так что две кнопки по любому не выйдет. Контроллер все равно выберет только одну из них. Если, конечно же, это не клавиши-модификаторы типа Shift, Alt и Control. Когда мы нажимаем, например, Ctrl+Alt+Del - мы вообще нажимаем три кнопки одновременно и ничего :-)
no subject
Date: 2008-01-10 01:54 pm (UTC)В таком случае, обработается та, которая была нажата на несколько микросекунд раньше. :)))
no subject
Date: 2008-01-10 02:30 pm (UTC)no subject
Date: 2008-01-11 05:49 am (UTC)no subject
Date: 2008-01-10 02:04 pm (UTC)no subject
Date: 2008-01-10 10:56 pm (UTC)no subject
Date: 2008-01-10 03:26 pm (UTC)no subject
Date: 2008-01-12 10:29 pm (UTC)