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

22

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

Патрик
источник
Уже поздно, но не могли бы вы подробнее рассказать о функциональности, которую вы хотели бы реализовать для Ubuntu.?
Harshit
1
@Harshit, конечно: с помощью клавиатуры Google на Android можно выбрать возможность удерживать клавиши на клавиатуре -oft для ввода знаков пунктуации, не переходя в отдельное меню. В идеале это было бы реализовано как опция в Ubuntu, при которой нажатие, скажем, клавиши «2» для 100 мс набирает «@», удерживание «-» типов «_» и так далее.
Патрик

Ответы:

2

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

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

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

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

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

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

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

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

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

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

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

Несколько определений могут быть полезны здесь:

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

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

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

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

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

dbkeys
источник
0

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

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

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

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

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

WinEunuuchs2Unix
источник
Чувствую ли я сарказм или это правда?
Амит Голд
Я думаю, это отличная идея. Привнесение некоторых преимуществ смартфона домой на рабочий стол.
WinEunuuchs2Unix