Ядро Linux, отбрасывающее пользовательские скэн-коды клавиатуры

Я предполагаю, в этом отношении truecrypt является Вашим лучшим другом.

16
14.07.2015, 04:28
2 ответа

В bash не «преобразовать аргумент в целое число для выполнения арифметики». В bash переменные обрабатываются как целое число или последовательность в зависимости от контекста.

Для выполнения арифметики необходимо вызвать оператор арифметического расширения $ (...) . Например:

$ a=2
$ echo "$a + 1"
2 + 1
$ echo "$(($a + 1))"
3

или обычно предпочтительно:

$ echo "$((a + 1))"
3

Следует иметь в виду, что bash (в отличие от ksh93, zsh или yash) выполняет только целочисленную арифметику. Если у вас есть числа с плавающей точки (числа с десятичными разрядами), то есть другие инструменты для помощи. Например, используйте bc :

$ b=3.14
$ echo "$(($b + 1))"
bash: 3.14 + 1: syntax error: invalid arithmetic operator (error token is ".14 + 1")
$ echo "$b + 1" | bc -l
4.14

или можно использовать оболочку с плавающей точки арифметической поддержкой вместо bash:

zsh> echo $((3.14 + 1))
4.14
-121--4891-

С помощью gnu datamash :

{ head -n 1; datamash -s -g 1 $(printf 'mean %s ' {2..54}); } <infile

, где 54 - количество столбцов. Это предполагает, что поля разделены табуляцией. Если они разделены пробелами, выполните

{ head -n 1; datamash -t ' ' -s -g 1 $(printf 'mean %s ' {2..54}); } <infile

или если они разделены несколькими пробелами (пробелами/вкладками):

{ head -n 1; datamash -W -s -g 1 $(printf 'mean %s ' {2..54}); } <infile

Обратите внимание, что выходные данные будут отсортированы по первому столбцу.

-121--126033-

Ядро видит странные коды сканирования и сбрасывает их. Я бы попытался получить эти значения кодов сканирования, а затем обновить индекс базы данных оборудования. Короче говоря, план таков:

  • получить коды из dmesg output - dmesg должен вывести что-то подобное, когда нажата неизвестная клавиша:

     Нажата неизвестная клавиша (преобразованный набор 2, код 0xa0 на isa0060/serio0)
    

a0 является значением кода.

  • создайте пользовательский файл отображения кодов ключей. Примеры и справка содержатся в файле по умолчанию
    (/usr/lib/udev/hwdb.d/60-keyboard.hwdb для Arch, он может отличаться в других дистрибутивах).

  • обновите и запустите аппаратную базу данных, выполнив команды:

     > udevadm hwdb --update
    > udevadm trigger/dev/input/eventXX
    

, где eventXX соответствует вашей клавиатуре (ее можно получить, запустив evtest ). Вместо запуска можно также перезагрузить компьютер.

Для получения более подробного описания см. Arch wiki и файл сопоставления ключевых кодов по умолчанию (или документацию по дистрибуции, если это не Arch).

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

1
27.01.2020, 19:49

Этот сайт предлагает пользовательские клавиатурные преобразования http://straypoetry.com/ibm-model-m-keyboard/

Основано на информации с этого сайта: http://deskthority.net/workshop-f7/xt-at-ps2-terminal-to-usb-converter-with-nkro-t2510.html

1
27.01.2020, 19:49

Теги

Похожие вопросы