Копирование моего старого ответа на вопрос:Специальные клавиши XF86MonBrightnessUp/XF86MonBrightnessDown не работают
Редактировать:Как указано ниже, для их работы на вашем компьютере должен быть установлен acpi
:)
Редактировать 2:Этот код увеличивает/уменьшает значения яркости на 1, но некоторые модели будут иметь значения, исчисляемые тысячами, поэтому измените изменение соответствующим образом.
Это старый вопрос, но ответ может помочь другим. Я столкнулся с проблемой при новой установке i3wm
на моем ноутбуке, где по какой-то причине мои ключи XF86MonBrightnessUp/Down
не регистрировались (. Я проверил с помощьюxev
). В итоге я создал acpi
действий и событий, которые соответствовали нажатым клавишам.
Ниже приведены действия/события, которые я определил в /etc/acpi/actions
и /etc/acpi/events
, соответственно:
/etc/acpi/actions/bl -down.sh
#!/bin/sh
bl_device=/sys/class/backlight/acpi_video0/brightness
echo $(($(cat $bl_device)-1)) | sudo tee $bl_device
/etc/acpi/actions/bl -up.sh
#!/bin/sh
bl_device=/sys/class/backlight/acpi_video0/brightness
echo $(($(cat $bl_device)+1)) | sudo tee $bl_device
/etc/acpi/events/bl -вниз
event=video/brightnessdown BRTDN 00000087 00000000
action=/etc/acpi/actions/bl-down.sh
/etc/acpi/events/bl -вверх
event=video/brightnessup BRTUP 00000086 00000000
action=/etc/acpi/actions/bl-up.sh
Вы можете проверить коды событий acpi для увеличения/уменьшения яркости, используя acpi_listen
в своем терминале, а затем нажав соответствующую комбинацию клавиш (, например, для меня это Fn + стрелка вниз для уменьшения яркости ).
Наконец,не забудьте перезапустить acpid
с помощьюsudo /etc/init.d/acpid reload
Примечание.:Ваше устройство подсветки может быть определено в другом месте, чем/sys/class/backlight/acpi_video0
-именно там, где оказалось мое. Поковыряйтесь.
Короткая замена будет дополнена нулевыми значениями, а более длинная будет обрезана, что предотвратит случайное повреждение файла.
Если вам действительно нужно заменить ее на более длинную строку, нет другого способа, кроме как перекомпилировать (или использовать некоторые специальные -хакерские приемы, такие как захват другой более длинной строки из файла и изменение все ссылки на старую строку указывать туда ). Файлы ELF не являются архивами, такими как apks для Android.
perl -0777 -pe 's/PATTERN/substr q{REPLACEMENT}."\0"x length$&,0,length$&/e or die "pattern not found"' -i file
Измените PATTERN
и REPLACEMENT
на то, что вам нужно. Будьте осторожны, чтобы не совпадать с NUL(\0
)в PATTERN
.
Вероятно, это можно было бы сделать проще.
Пример:
$ cp /bin/sh /tmp/sh
$ /tmp/sh -c 'exec 7</tmp/jeg'
/tmp/sh: 1: cannot open /tmp/jeg: No such file
$ perl -0777 -pe 's/No such file/substr q{BLA BLA WHATEVER}."\0"x length($&),0,length$&/e' -i /tmp/sh
$ /tmp/sh -c 'exec 7</tmp/jeg'
/tmp/sh: 1: cannot open /tmp/jeg: BLA BLA WHAT