LINUX.ORG.RU

История изменений

Исправление q11q11, (текущая версия) :

Последний раз эту теорию я читал пару лет назад и для моих запросов этого хватает, но возможно уже есть методы и посвежее.
Если кратко - матрица ROWSxCOLS, кнопки в колонках соединены последовательно, в рядах на каждой кнопке диод (ориентированный «от кнопки») и за диодом идёт последовательно (фотка для наглядности), один ряд/колонка = одна нога контроллера (в моём случае 12 + 4 заняло 16 доступных ног на ProMicro, но не все ноги можно использовать во всех софтинах, например PCINT6 нельзя в EasyAVR, а RX/TX можно), с некоторой частотой идёт опрос всех ног на предмет замыканий, диоды предотвращают ghosting и masking, NKRO делается софтом, насколько я знаю используется 3 буффера (прошлое, настоящее, будущее) которые постоянно циклично обновляются с частотой опроса, в usb уходят данные из «настоящего», «будущее» это точто ты нажал, но оно ещё не ушло, «прошлое» вроде как надо только для сравнения состояний, USB не поддерживает больше чем 6KRO, но при правильном использовании частоты можно просто выдавать «настоящее» кусками по 6 кейкодов, для пользователя такое разделение будет в общем-то незаметно, особенно если учесть что для подавляющего большинства людей не возникает необходимости нажимать так много кнопок одновременно.

На тему софта - https://www.reddit.com/r/MechanicalKeyboards/wiki/firmware

Ну и если по вопросам :)

как вы в самопалах решаете проблему с NKRO?

используем готовый фирмварь

Сколько одновременно нажатых клавиш может оно обрабатывать?

в теории - все, по крайней мере на том что я тут показал пробовал нажимать смартфоном (маленький, htc200), покрыло кусок в 6x3 кнопки (qwerty на qaz) - напечатались все 18 различных букв, но не по порядку.

Можно как-то запилить, что бы при нажатых одновременно «а» и «о» (например) писалось не «аооооооооооо» как в обычных клавах, а «аоаоаоаоаоаоао»?

в теории можно, но надо софт переделывать

Как ведет себя ардуина с этим?

даже не знаю что тут ответить, софт заточен для ATmega32U4, проблем не возникает даже с дешёвыми китайскими клонами

Исходная версия q11q11, :

Последний раз эту теорию я читал пару лет назад и для моих запросов этого хватает, но возможно уже есть методы и посвежее.
Если кратко - матрица ROWSxCOLS, кнопки в колонках соединены последовательно, в рядах на каждой кнопке диод (ориентированный «от кнопки»), один ряд/колонка = одна нога контроллера (в моём случае 12 + 4 заняло 16 доступных ног на ProMicro, но не все ноги можно использовать во всех софтинах, например PCINT6 нельзя в EasyAVR, а RX/TX можно), с некоторой частотой идёт опрос всех ног на предмет замыканий, диоды предотвращают ghosting и masking, NKRO делается софтом, насколько я знаю используется 3 буффера (прошлое, настоящее, будущее) которые постоянно циклично обновляются с частотой опроса, в usb уходят данные из «настоящего», «будущее» это точто ты нажал, но оно ещё не ушло, «прошлое» вроде как надо только для сравнения состояний, USB не поддерживает больше чем 6KRO, но при правильном использовании частоты можно просто выдавать «настоящее» кусками по 6 кейкодов, для пользователя такое разделение будет в общем-то незаметно, особенно если учесть что для подавляющего большинства людей не возникает необходимости нажимать так много кнопок одновременно.

На тему софта - https://www.reddit.com/r/MechanicalKeyboards/wiki/firmware

Ну и если по вопросам :)

как вы в самопалах решаете проблему с NKRO?

используем готовый фирмварь

Сколько одновременно нажатых клавиш может оно обрабатывать?

в теории - все, по крайней мере на том что я тут показал пробовал нажимать смартфоном (маленький, htc200), покрыло кусок в 6x3 кнопки (qwerty на qaz) - напечатались все 18 различных букв, но не по порядку.

Можно как-то запилить, что бы при нажатых одновременно «а» и «о» (например) писалось не «аооооооооооо» как в обычных клавах, а «аоаоаоаоаоаоао»?

в теории можно, но надо софт переделывать

Как ведет себя ардуина с этим?

даже не знаю что тут ответить, софт заточен для ATmega32U4, проблем не возникает даже с дешёвыми китайскими клонами