Удерживать клавиши для модификатора

21

Я влюбился в возможность удерживать ключ на Android в течение примерно 100 мс, чтобы получить знак пунктуации «ниже» (в противном случае он найден в меню), и я хотел бы иметь такую ​​же способность для Ubuntu. Мне не нужно повторять символы, поэтому я ничего не пропущу. Возможно ли это, и если да, то как? Спасибо:)

    
задан Patrick 15.07.2016 в 15:16
источник

3 ответа

2

В настоящее время не существует быстрого и простого способа включения такого рода функций в настольную версию Ubuntu.

Лично я большой поклонник стандартных сочетаний клавиш ; Я нахожу их быстрее и гораздо более интуитивно понятными, чем выбор длинного нажатия на мобильный стиль (♥). Тем не менее, если у вас есть время и решимость, вы могли бы связать параметр slowkeys в стандартном ядре Universal Access для создания чего-то похожего на мобильный вариант.

Как и в самом себе, XKB , похоже, связан с контролем медленных клавиш. Вы можете использовать XKB для настройки и улучшения привязок клавиатуры Ubuntu, и насколько я могу судить, этот раздел имеет то, что вам нужно. Таким образом, не должно быть (относительно) трудно иметь альтернативный характер печати, когда ключ долго удерживается.

В сложной ситуации присваивается клавиша multiple к нажатию клавиши (пример: удерживайте «a» и выберите опции для ä, à, á, â и т. д.). Как вы переключаетесь между опциями? У вас есть символы, появляющиеся в диалоговом окне, а затем используйте мышь, вкладку или клавиши со стрелками, чтобы выбрать один? Похоже на трудоемкость.

Или вы можете назначить разные длины удержания для разных символов. 100 мс для à, 200 мс для á, 300 мс для â ... Но помните, сколько секунд, за которые персонажи могут стать хитрыми, не говоря уже о том, что назначение каждого из них индивидуально было бы головной болью. Плюс, когда вы попадаете в более длинные списки персонажей, вы можете сидеть там, удерживая ключ за хорошие 3-4 секунды. Кажется еще более трудоемким.

Вместо медленных клавиш вы можете попробовать опцию repeatkeys вместо того, чтобы иметь несколько кранов ключа, предоставить специальный символ: 3 ответвления «a» для à, например. Но тогда вы рискуете появляться нежелательные специальные символы, когда вы вводите что-либо вроде «хорошего» или «жуткий», или «aaaaaaahhh!»

Возможно, вы придумали какой-то другой, более эффективный метод реализации, о котором я не думаю, и в этом случае идти дальше и изменять! Но тем не менее я по-прежнему рекомендую составлять комбинации клавиш. ☺     

ответ дан Boxbot 27.10.2016 в 21:07
0

Я уверен, что это можно сделать, изменив процедуру обслуживания прерываний клавиатуры (ISR). Всякий раз, когда нажата клавиша, сигнал прерывания посылается в CPU. Затем ЦПУ будет обслуживать это прерывание, запустив ISR клавиатуры.

ISR - это низкоуровневые программы, обычно кодированные на языке ассемблера, поскольку они напрямую связаны с оборудованием и должны быть быстрыми. Здесь больше информации об аппаратных прерываниях на процессорах Intel и о том, как их использовать.

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

Здесь может быть полезно несколько определений:

Repeat Delay : время, прошедшее между нажатием клавиши и началом повтора.

Частота повторения . После нажатия клавиши клавиатура повторит эту клавишу. Скорость повторения повторяется. Иногда называется типовой скоростью.

Процедура ISR клавиатуры должна быть изменена, чтобы заменить функцию Repeat Delay для функции «Alternative Character». Суть его заключается в сроках нажатия и отпускания клавиш. Измеряя продолжительность нажатия клавиши, ISR (или обработчик прерываний) знал бы, что пройдет либо обычный символ альтернативного символа (клавиша «ниже»)

По существу, вы будете изменять или переписывать драйвер устройства для клавиатуры.

Это просто высокоуровневое представление о подходе, который, как мне кажется, понадобится для достижения того, чего вы хотите.     

ответ дан dbkeys 21.10.2016 в 09:10
0

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

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

Для программистов нужно добавить кусок кода для измерения длины нажатия и вызвать контекстно-зависимое меню для select , copy , paste и т. д., как это делают сегодня смартфоны .

Я думаю, что ваш вопрос - отличная идея, которая может превратить программное обеспечение и клавиатуры со встроенными сенсорными планшетами на совершенно новый уровень. Я должен отметить, что некоторые сенсорные панели, встроенные в клавиатуру, имеют цветной ЖК-экран, который может принять вашу идею еще дальше. т.е. выделенный экранный текст может быть отражен на ЖК-дисплее тачпада и увеличен для тонких движений.

Apple, Google, Microsoft и Linus могут быть в восторге от вашей идеи. Это, безусловно, вызвало мой интерес!

    
ответ дан WinEunuuchs2Unix 25.10.2016 в 03:55