Как выполнить свою команду по нажатию Fn+<...> в OpenSUSE 11.2

Имеется ноутбук ASUS K40AB, на котором нет (по крайней мере, я не обнаружил) специальной кнопки или сочетания Fn+<что-то> для отключения тачпада.
Скрипт для отключения/включения площадки я написал. Он работает из консоли, можно вытащить плазмоид на рабочий стол.
Но дело в том, что у меня есть несколько сочетаний Fn+<…>, которые ни я не использую, ни в системе они вроде ничего не делают. Например, Fn+C, которое, судя по пиктограмме, должно переключать ASUS Splendid.

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

Т.к. у меня не synaptics, а elantech, руководствовался частью этой статьи](http://openkazan.info/node/3206).
Вот эта часть:

Способ №3: Для тех, у кого есть специальная кнопка управления тачпадом.

Мало чем отличается от способа №2, кроме того, что вместо хоткея пользователь будет пользоваться специализированной клавишей, а значит, настройка будет происходить через ACPI.

Это способ ориентирован на Asusоводов, в первую очередь.

Пункт 1: Из способа №2 вам понадобятся пункты 2, а вот четвертый будет несколько усложнен.

Пункт 2: Устанавливаем нужные пакеты.
После того, как вы их выполните, поставьте еще и пакет acpitool - пригодится:

sudo apt-get acpi acpid acpitool

Пункт 3: Определяем код нужной кнопки.
В консоли от имени root выполняем команду:

acpi_listen

и зажимаем кнопку управления тачпадом.

Таким образом, на выходе, мы получаем код кнопки приблизительно такого типа (ноутбук Asus x50n):

hotkey ATKD 0000006b 00000000

Из это строчки нам нужна только череда цифр, которая следует за абривеатурой ATKD (0000006b), вторая группа цифр - игнорируется.

Пункт 4: Нам необходимо найти этот код в /etc/acpi/events.

99% что там уже есть файлик содержащий код со ссылкой на абсолютно нерабочий скрипт или прочую ерунду. Выполняем:

grep 0000006b events/*

Далее действия будут рассматриваться на примере Asus x50n, но они могут отличаться только названиями файлов и кодом кнопки, в остальном - достаточно универсальны.

events/asus-touchpad:event=hotkey ATKD 0000005c

cat events/ asus-touchpad

Перед нами перед нами предстает содержимое файлика. Правим значение кода и приводим содержание к такому виду:

/etc/acpi/events/asus-touchpad

This is called when the user presses the touchpad button and calls

/etc/acpi/asus-touchpad.sh for further processing.

event=hotkey (ATKD|HOTK) 0000006b
action=/etc/acpi/asus-touchpad.sh

Сохраняемся, выходим.

Пункт 5: Приводим скрипт в нормальное состояние.
Для этого идем и открываем файл /etc/acpi/asus-touchpad.sh для редактирования и приводим к такому виду:

#!/bin/sh
-f /usr/share/acpi-support/state-funcs ] || exit 0.

get the current state of the touchpad

TPSTATUS=synclient -l | awk ‘/TouchpadOff/ {print $3}’

if getting the status failed, exit

test -z $TPSTATUS && exit 1

if $TPSTATUS = 0 ]; then
synclient TouchpadOff=1
else
synclient TouchpadOff=0
fi

Сохраняемся, выходим.

Однако реакции на сочетание нет. Пробовал и acpid перезапустить и перезагружался.

А не могли бы исходники показать?

Пожалуйста. Переключает состояние вкл-выкл, выкл-вкл.

#!/bin/bash
# get the current state of the touchpad
TPSTATUS=`xinput list-props 3 | awk '/Device Enabled/ {print $4}'`
# if getting the status failed, exit
test -z "$TPSTATUS" && exit 1
# if getting status ok, change touchpad status
if  "$TPSTATUS" = 0 ]; then
  xinput set-int-prop 3 'Device Enabled' 8 1
  echo Touchpad enabled
else
  xinput set-int-prop 3 'Device Enabled' 8 0
  echo Touchpad disabled
fi

Кстати, сочетание Fn+C назначилось с помощью KDE.

Немного не понравилось приведенное решение. Начальный файл с опознанием изменил и прописал обращение в /usr/lib/acpid/asus-touchpad
А там уже сам скрипт разместил. Потом выполнил

chmod 744 asus-touchpad

Собственно пока не работает.

А с двумя видео картами кто разобрался в SuSE 11.3?

Начальный файл с опознанием изменил и прописал обращение в /usr/lib/acpid/asus-touchpad
А там уже сам скрипт разместил.

#!/bin/bash

if !  "$1" ] ; then
xinput list-props 'ImPS/2 Logitech Wheel Mouse' | grep -q -P "Device Enabled.*::space:]]+1$"
TRIGGER=$?
else
TRIGGER=$1
fi
xinput set-int-prop 'ImPS/2 Logitech Wheel Mouse' 'Device Enabled' 8 $TRIGGER

Потом выполнил

chmod 755 asus-touchpad

Добавил комбинацию в

KDE - Параметры системы - Комбинации клавиш - Спец действия - Fn + C

И указал ссылку на скрипт. Все работает замечательно, надеюсь в будущем научат систему определять правильно эти Elantech.

Осталось научиться выключать устройства для энергосбережения. Никто не видел нигде подобных тем по SuSE ?

Это мы с вами вчера решали проблему в IRC?

Не совсем понял вопрос об энергосбережении.