Настройка времени повтора нажатия клавиш в Linux

Последнее обновление: 23/04/2026
Автор: Исаак
  • В Linux настройку времени повторения клавиш и скорости можно производить как через графический интерфейс, так и с помощью консольных инструментов.
  • Система преобразует скан-коды в коды клавиш, а затем в символы, используя раскладки клавиатуры, модификаторы и различные режимы консоли.
  • Такие утилиты, как kbdrate, setkeycodes, loadkeys и dumpkeys, позволяют в значительной степени настраивать поведение клавиатуры и специальные клавиши.
  • Постоянная конфигурация основана на загрузочных скриптах, картах в /usr/share/kbd и базе данных terminfo для модели терминала.

Настройка повтора нажатия клавиш в Linux

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

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

Графическая настройка времени повтора нажатия клавиши в Linux

В большинстве современных операционных систем Linux (например, GNOME, KDE Plasma, Cinnamon и т. д.) первое место для настройки поведения клавиш — это панель системных настроек. В этих средах предусмотрен специальный раздел клавиатуры, где можно регулировать задержку и частоту повторения. без борьбы с консолью.

В среде типа GNOME обычно делают следующее: «Системные настройки → Клавиатура → Повтор нажатия клавиш»Есть два основных регулятора: задержка перед началом повторного нажатия клавиши и частота повторения (количество символов, генерируемых в секунду).

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

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

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

Отрегулируйте задержку повтора нажатия клавиши и скорость.

Управление с клавиатуры из системы: скан-коды, коды клавиш и BIOS.

Под графическим слоем Linux обрабатывает клавиатуру гораздо детальнее, чем может показаться на первый взгляд. При нажатии клавиши устройство отправляет не букву напрямую, а... сканкодЭтот скан-код достигает ядра, которое преобразует его в... ключевой кодЗатем применяется комбинация клавиш, которая в конечном итоге приводит к выбору персонажа или выполнению действия.

Традиционно обработка клавиатуры осуществлялась с помощью прерывания BIOS № 9 (что типично для систем типа MS-DOS), но в Linux это происходит иначе. Ядро устанавливает собственную подпрограмму обработки прерывания по клавиатуре.Данная процедура основана на схеме, аналогичной классической, хотя и с отличиями в интерпретации скан-кодов и в способе заполнения внутренних буферов.

Большинство клавиш генерируют два кода: один при нажатии (генерация кода) и другой при отпускании (взлом кода). На практике ядро ​​обычно игнорирует коды прерывания для упрощения обработки.За исключением особых случаев, таких как переключающие клавиши (Shift, Ctrl, Alt и т. д.). Кроме того, некоторые специальные клавиши генерируют двойные последовательности: сначала префиксный байт (например, 0xE0), а затем код клавиши.

Для скан-кодов в диапазоне 0x01-0x58 (от 1 до 88 в десятичной системе) Linux по умолчанию применяет очень простое правило: keycode = scancodeВ других диапазонах (например, 0x59-0x7F или последовательностях, начинающихся с 0xE0) взаимосвязь не столь тривиальна, и используется внутренняя таблица ядра, определяющая, какой код клавиши соответствует каждой комбинации скан-кодов.

С такими инструментами, как Showkey y получить коды ключей Вы можете точно увидеть, какие коды генерирует ваша клавиатура. Например, запустив команду... showkey -k В виртуальной консоли (не в графическом терминале) вы увидите коды клавиш, генерируемые каждым нажатием клавиши, и с помощью showkey -s Вы можете просмотреть исходные скан-коды, отправляемые оборудованием, и это помогает в устранении неполадок, например, когда клавиатура ноутбука не работает.

  Как восстановить Windows Server в случае сбоя: полное и подробное руководство для любой версии

Изменить назначение клавиш: команда setkeycodes

В ситуациях, когда специальная клавиша (например, колесико регулировки громкости, мультимедийные клавиши или дополнительные клавиши на клавиатуре) интерпретируется некорректно, ее можно использовать. установить коды ключей для корректировки связи между скан-кодом и кодом клавиши. Эта команда позволяет указать ядру: «Когда вы видите этот скан-код, обрабатывайте его так, как если бы это был код клавиши»..

Базовый синтаксис:

setkeycodes scancode keycode

El сканкод Оно выражается в шестнадцатеричной системе счисления (например). e049) И ключевой код в десятичной системе счисления (например) 112Таким образом, вы можете переназначать нестандартные клавиши, чтобы система воспринимала их как стандартные клавиши или другие клавиши, которые вас интересуют.

Представьте, что ваша клавиатура генерирует последовательность 0xE0 0x49 при нажатии физической клавиши "Page Up". Согласно таблице значений по умолчанию ядра, это может соответствовать коду клавиши 104. Если вы предпочитаете, чтобы эта клавиша работала как другая, вы можете выполнить следующую команду:

setkeycodes e049 112

После этого изменения нажатие этой клавиши будет генерировать код 112 вместо 104. Важно отметить, что Это переназначение выполняется на уровне ядра, до того, как карта клавиатуры преобразует код клавиши в конкретное действие.Затем на карте вы можете выбрать, для чего нужен код 112.

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

Раскладка клавиатуры и расширенные настройки в Linux

режимы работы консоли Linux

В текстовых консолях (обычные TTY, к которым вы получаете доступ с помощью...) Ctrl+Alt+F1…F6Драйвер клавиатуры и консоли Linux может работать в нескольких режимах, которые точно определяют, что получает приложение. Эти режимы влияют на то, как интерпретируются скан-коды, коды клавиш и символы..

Основные режимы:

Режим RAW (режим сканирования)Драйвер ничего не преобразует; он отправляет скан-коды в приложение в неизменном виде. Это самый низкоуровневый режим, обычно используемый, когда графическая система или специализированное приложение хотят получить полный контроль над клавиатурой.

Режим MEDIUMRAW (режим кодовых клавиш)Ядро преобразует скан-коды в коды клавиш, но дальше этого не делает. Приложение получает коды активации и принимает решение о дальнейших действиях.Этот подход полезен для программ, которые реализуют собственную систему сочетаний клавиш и перевода.

Режим XLATE (режим ASCII)Это традиционный режим по умолчанию в текстовых консолях. В нём скан-коды преобразуются в коды клавиш, а затем в символы в соответствии с 8-битной картой клавиатуры (обычно на основе ISO-8859-1). Это наиболее распространенный способ при работе непосредственно в TTY с использованием командной оболочки..

Режим UNICODE (UTF-8)Аналогично предыдущему режиму, но с использованием набора символов Unicode, отправляющего в ядро ​​последовательности UTF-8 для представления символов размером более одного байта. Этот режим является ключевым в современных системах, которые хотят поддерживать различные алфавиты или расширенные символы.

Эффективный режим работы консоли зависит от переменной среды. СРОКЕсли вы это сделаете printenv TERMВ виртуальной консоли вы обычно увидите "linux", а в графическом терминале в X или Wayland — "xterm", "xterm-256color" или что-то подобное. Когда X-сервер запущен, X-сервер сам управляет клавиатурой. И ядро ​​обычно оставляет консоль в режиме RAW, делегируя интерпретацию графическому серверу.

Ключ другой В этом контексте она известна как клавиша «Мета», а комбинация Alt+X обычно записывается как MetaX. Поведение этих нажатий клавиши «Мета» можно настроить с помощью утилиты. установитьметамодЭто позволяет выбрать, будет ли нажатие Alt+X отправлять последовательность действий. ESC X (удар, за которым следует символ) или символ, значение которого равно X плюс 128, то есть с активированным битом 7.

База данных моделей терминалов и информации о терминалах.

Linux унаследовал классическую концепцию от UNIX: Система рассматривает каждую сессию как своего рода терминал.которая обладает рядом хорошо известных характеристик (специальные клавиши, цветовые возможности, управление курсором и т. д.). Даже если у вас есть только монитор и клавиатура, ядро ​​распознает вас как подключенного через определенную модель терминала.

Функциональные возможности каждой модели терминала описаны в базе данных. TERMINFOобычно расположен в /usr/share/terminfo/Эта база данных содержит файлы, организованные в подкаталоги по первой букве (например, файл vt100 находится в подкаталоге, имя которого начинается с первой буквы названия терминала).

  Что я могу сделать, чтобы заблокировать доступ к Facebook? Как убрать ограниченный доступ на Facebook?

Каждый файл terminfo описывает имя терминала, псевдоним и огромный список его возможностей: какие последовательности выхода соответствуют функциональные клавишикак перемещается курсор, как очищаются строкии т. д. Типичным примером классического заголовка терминала является что-то вроде «vt100|vt100-am|dec vt100 (w/advanced video) …».

Для взаимодействия с функциями терминала из командной строки доступно несколько инструментов:

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

SettermЭта команда позволяет изменять параметры консоли, такие как поведение видео, мерцание, цвета и многое другое. При запуске без аргументов она обычно выводит список всех параметров, которые можно настроить в текущем терминале.

tputОна использует terminfo для отправки стандартных управляющих последовательностей на терминал, таких как очистка экрана, перемещение курсора или изменение атрибутов, без необходимости вручную записывать последовательности ANSI.

Настройка клавиатуры при запуске системы

Согласно техническим условиям Стандартная база Linux (LSB)Скрипты запуска системы находятся в /etc/инит.д/ и запускаются прямо или косвенно / sbin / initЭтот процесс является родительским для всех остальных. В рамках этой структуры определены шаги по инициализации оборудования, сетей, консолей и, конечно же, клавиатуры.

Как правило, выполняются скрипты, расположенные в последовательности загрузки. /etc/init.d/boot.d/ или эквивалентные маршруты в зависимости от дистрибутива. Эти скрипты обрабатывают такие элементы, как... последовательные порты, сетевые карты, тактовый генератор CMOS, логические тома и другие основные компоненты. В конечном итоге, обычно выполняется скрипт. /etc/init.d/boot.local для индивидуальных заказов у ​​администратора.

Что касается текстовой консольной клавиатуры, во многих дистрибутивах используется конфигурационный файл, например, такой: / и т. д. / sysconfig / клавиатураВ нем задаются ключевые параметры, включая карту клавиатуры, загружаемую при запуске, и настройки повтора.

Этот файл содержит такие директивы, как:

КЛЮЧЕВОЙ СТОЛ: указывает на файл сопоставления клавиш клавиатуры, обычно расположенный в /usr/share/kbd/keymaps/Типичным значением может быть «es.map.gz», указывающее на карту для испанской клавиатуры.

KBD_RATE y KBD_DELAY: задать частоту повторения (например, от 2.0 до 30.0 символов в секунду) и начальную задержку в миллисекундах (250, 500, 750, 1000 и т. д.). Если вы хотите, чтобы система запускала команду KBDrate при загрузке, необходимо установить оба значения..

Кроме того, существуют начальные настройки состояния клавиш, такие как NumLock, ScrollLock и CapsLockЭти параметры можно установить на «да», «нет» или «BIOS» (соблюдайте конфигурацию BIOS). Есть даже возможность отключить функцию Caps Lock и заменить клавишу Caps Lock на обычную клавишу Shift.

Наиболее важная строка для общего поведения клавиатуры — это та, которая определяет карту клавиш, примерно такая:

KEYTABLE="es.map.gz"

Эта карта определяет, что делает каждый код клавиши, то есть какой символ или действие будет сгенерировано при нажатии каждой клавиши в сочетании с модификаторами (Shift, AltGr, Control и т. д.). После этого вы можете настраивать поведение на лету с помощью таких инструментов, как loadkeys, dumpkeys, showkey и KBDrate..

Основные утилиты: showkey, loadkeys, dumpkeys и KBDrate.

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

ShowkeyЭто используется для проверки того, какие коды фактически генерирует клавиатура. showkey -s Вы видите скан-коды именно в том виде, в котором они поступают от оборудования; showkey -k Показаны коды клавиш, сгенерированные подпрограммой ядра после первого преобразования.

ключи загрузкиЗагружает новую раскладку клавиатуры в виртуальные консоли. Требует прав root и должна использоваться с осторожностью, так как Это затрагивает все TTY, включая TTY для входа в систему.Неправильно настроенная карта может значительно затруднить ввод пароля или даже вход в систему.

свалкиЭто позволяет проверить текущую раскладку клавиатуры и другие связанные детали, такие как определения функций, состав символов и символьные эквиваленты. С помощью таких опций, как... dumpkeys –long-info, dumpkeys –funcs-only o dumpkeys –compose-only Вы можете получить очень подробные списки того, как устроена ваша карта.

kbdrateЭто прямой инструмент для изменения частота повторения и начальная задержка клавиатурыНа многих системах значения по умолчанию имитируют стандарт клавиатуры IBM: около 10 символов в секунду и задержка около 250 мс. С помощью kbdrate можно изменить эти параметры без перезапуска, и это полезно для понимания таких параметров специальных возможностей, как... фильтрация ключей в Windows.

Например, для очень короткой задержки и быстрого повторения можно использовать что-то вроде:

kbdrate -d 200 -r 30

где -d Отметьте задержку (в миллисекундах) и -r Частота повторения (символов в секунду). Если вы хотите добиться более низкой производительности, увеличьте задержку или уменьшите частоту.А если вам нужно практически мгновенное выполнение, вы можете уменьшить задержку до 200 мс или даже меньше, в зависимости от возможностей вашего оборудования.

  8 финансовых экспертов, которые являются очень успешными женщинами

Карта клавиатуры: внутреннее определение и модификаторы

«Карта клавиатуры» или «сопоставление клавиш» — это основа расширенной конфигурации. Эти карты могут быть скомпилированы в ядро ​​или сохранены в виде текстовых файлов. /usr/share/kbd/keymaps/с конфигурацией по умолчанию в таких файлах, как /etc/defkeymap.map. В каждый дистрибутив обычно входят коллекции карт для разных языков и форматов..

Клавиатурные карты определяют с помощью определенного синтаксиса, что делает каждый код клавиши в сочетании с различными модификаторами. В общем, до 256 различных действий для одной и той же клавиши, связанные с возможными комбинациями модификаторов (Shift, Alt, Control, AltGr и т. д.).

Файл карты содержит строки следующего вида:

Номер кода клавиши = символ символ символ …

El номер Это внутренний идентификатор ключа (код ключа), который может быть выражен в десятичной, восьмеричной или шестнадцатеричной системе счисления. символ (keysym) обозначает соответствующее действие, которое может представлять собой символ, последовательность символов или специальную функцию, например, Удалить, Загрузка, Консоль_15 и многие другие. Прямые числовые коды обычно не используются; вместо этого применяются символические константы, которые остаются стабильными в разных версиях ядра.

Модификаторы рассматриваются как биты октета, каждый из которых имеет определенный «вес». Например, Shift может иметь вес 1, AltGr — вес 2, Control — вес 4, Alt — вес 8 и так далее с Left Shift, Right Shift, Left Control и Right Control. При нажатии клавиши эффективное действие определяется путем суммирования весов активных модификаторов и сверки с соответствующим столбцом. в определении этого ключа.

Например, если вы нажмете клавишу Shift и Alt, сумма может быть равна 9, а значение в столбце 9 определяет, что будет сгенерировано. Без каких-либо модификаторов индекс равен 0, и берется первый символ, определенный в строке кода клавиши..

Существует также особый знак, обозначение. + Буквы, предшествующие некоторым символам, указывают на то, что их следует рассматривать как буквы, то есть они соответствуют клавишам Caps Lock и Shift. Типичный пример:

код 30 = +a

Это означает, что ключ генерирует строчную букву «a» без модификаторов, «A», если используется прописная буква, и т. д. Для более специфичного поведения столбец с прописными буквами можно явно определить, например:

код 30 = +a A

Если вы не хотите, чтобы определенная комбинация клавиш выполняла какие-либо действия, используйте ключевое слово. Символ пустотыНапример, чтобы клавиша генерировала только символ 'a' без модификаторов и ничего при использовании определенных комбинаций, можно использовать определения, в которых эти случаи помечаются как VoidSymbol. Кроме того, синтаксис допускает упрощения: Если определен единственный символ, который не является буквой ASCII, предполагается, что он повторяется во всех указанных столбцах..

Другие части карты: включения, раскладки клавиатуры, кодировка символов, функции и композиция.

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

Директива включают Это позволяет включать другие файлы, подобно операции «импорт». Это полезно для повторного использования общих элементов в нескольких картах, например, таблицы акцентов или набора стандартных функций.

Линия раскладки клавиатуры Определяет, какие столбцы (индексы модификаторов) указаны в карте. Вместо перечисления всех 256 возможных столбцов обычно указываются диапазоны, например: раскладка клавиатуры 0-2,4-5,8,12, что означает, что используются столбцы 0, 1, 2, 4, 5, 8 и 12 (обычный, Shift, AltGr, Control, Control+Shift, Alt и Control+Alt). Если эта строка отсутствует, предполагается, что существуют определения от 0 до M, где M — максимальный найденный индекс. в строках кода клавиши.

Лас- определения наборов символов Они выполнены линиями следующего типа:

charset «iso-8859-2»

и определить, к какой кодовой странице относятся числовые значения символов. По умолчанию обычно используется ISO-8859-1 (Latin-1), но могут использоваться и другие кодовые страницы, такие как ISO-8859-2 или ISO-8859-7. Это актуально для таких символов, как греческая буква мю или специальные символы, характерные для определенных языков..

Лас- определения строк Они используют следующий синтаксис:

string keysym = "text"

Они используются для сопоставления функциональных или специальных клавиш с определенными последовательностями символов. Например, можно указать, что клавиша F1 отправляет символ «ESC».