Мои ноутбучные клавиши (добавление яркости экрана, почта и т д) не работали в Kubuntu Gutsy (а с Feisty работали) и я решил, что проще будет реализовать это самому.
ВНИМАНИЕ: у вас должны быть установлены пакеты acpi, acpid и acpi-support.
у меня не было никакого желания выяснять почему скрипт работает неправильно при некоторых значениях, поэтому я просто жестко прописал эти значения в скрипте. Да, это по-ламерски, я знаю, возможно, кто то предложит универсальное решение.
Вам, возможно, придется изменить под себя эти скрипты, если вы хотите использовать их на своем ноутбуке!
1. Где все скрипты?
Скрипты, которые вызываются ACPI лежат в /etc/acpi. Имена могут меняться в зависимости от системы.
2. Что мне нужно знать?
Для начала, нужно узнать где находится процесс, отвечающий за подсветку.
more /usr/lib/hal/scripts/linux/hal-system-lcd-get-brightness-linux
Просмотрите файл и найдите нужный путь к процессу - ищите по фирме-производителе ноутбука. Например, у меня ноутбук фирмы ASUS, а в файле есть вот такая секция:
elif [ "$HAL_PROP_LAPTOP_PANEL_ACCESS_METHOD" = "asus" ]; then
# cat /proc/acpi/asus/brn
# 5
value="`cat $HAL_PROP_LINUX_ACPI_PATH`"
отсюда мы узнаем, что путь к моему процессу подсветки - /proc/acpi/asus/brn.
Далее, вам может понадобиться знать какие значения может принимать этот процесс. Чтобы найти максимальное значение, вам надо ввести какое нибудь большое число в процесс:
echo 999 > /proc/acpi/asus/brn (замените путь на нужный вам)
и проверить какое значение принял процесс:
cat /proc/acpi/asus/brn (заменить путь на нужный вам)
мой процесс принял значение 15, так что это и есть максимальное значение для моего процесса. Минимальное значение скорее всего равно нулю, но проверить это не помешает - просто введите вместо 999 число 0 и проверьте значение.
3. Скрипты
Этот поднимает уровень подсветки:
#!/bin/bash
FILENAME='/proc/acpi/asus/brn'
read line < $FILENAME
elif [ "$line" -eq 9 ]; then
echo 10 > /proc/acpi/asus/brn
else
line=$(expr $line + 1)
echo $line > $FILENAME
fi
Этот его опускает:
#!/bin/bash
FILENAME='/proc/acpi/asus/brn'
read line < $FILENAME
# if [ "$line" -eq МИНИМУМ ]; then только если минимальное значение НЕ равно нулю!
# echo МИНИМУМ > $FILENAME заменить МИНИМУМ на ваше значение
elif [ "$line" -eq 10 ]; then
echo 9 > $FILENAME
else
line=$(expr $line - 1)
echo $line > $FILENAME
fi
Я не так уж хорошо владею bash, так что если кто нибудь поймет ПОЧЕМУ скрипт не работает при смене значений с 9 на 10 и отредактирует как надо - что ж, тем лучше.
4. Назначение скриптов кнопкам
Чтобы найти какой скрипт используется кнопкой - вам нужно нажать эту кнопку (например Fn+F6 для усиления подсветки на моем ноутбуке) и затем набрать в консоли
tail /var/log/acpid
Результат будет примерно такой:
[Fri Apr 11 13:55:00 2008] received event "video LCDD 00000086 00000000"
[Fri Apr 11 13:55:00 2008] notifying client 5206[103:116]
[Fri Apr 11 13:55:00 2008] notifying client 5791[0:0]
[Fri Apr 11 13:55:00 2008] executing action "/etc/acpi/video_brightnessup.sh"
[Fri Apr 11 13:55:00 2008] BEGIN HANDLER MESSAGES
[Fri Apr 11 13:55:00 2008] END HANDLER MESSAGES
[Fri Apr 11 13:55:00 2008] action exited with status 0
[Fri Apr 11 13:55:00 2008] completed event "video LCDD 00000086 00000000
точность может отличаться, но самое главное здесь - ИМЯ ФАЙЛА. В данном случае имя файла - "/etc/acpi/video_brightnessup.sh" (помните я вам говорил, что все скрипты лежат в /etc/acpi?). Вам нужно заменить этот файл (сохраните оригинал на всякий случай).
P. S.
на основе этого скрипта можно назначить что угодно на какую угодно кнопку.
P. P. S. может работать и в других дистрибутивах, я проверял только на Kubuntu 7.10.