LinuxForum.Fans
Тема

Помогите с написанием скрипта

Автор: sharamega 1 сообщений 2739 просмотров
#363785

Добрый день уважаемые пользователи форума.
купил себе роутер и решил перепрошить в openwrt, все получилось с косяками но я их решил, подключил я к нему клавиатуру, она определилась как hid девайс, но тут же возникла проблема, что на кнопки не прописаны действия, и похоже им можно приписать любое действие. Собственно помогите написать скрипт который бы задавал действия кнопкам, к примеру выключал светодиод нам лока кнопкой капс лок (код кнопки 58). Так как я полный ноль в скриптах *DONT_KNOW* , я нашел один похожий скрипт под openwrt http://etherelay.googlecode.com/files/ctlrelay который включает/выключает светодиод из терминала, но как я понял он расчитан на запись в файл клавиатуры, а не на чтение *NO* :

text
#!/bin/sh

KB_LEDS=/dev/input/event0 EV_LED="\x00\x11" LED_NUML="\x00\x00" LED_CAPSL="\x00\x01" LED_SCROLLL="\x00\x02" TURN_ON="\x00\x00\x00\x01" TURN_OFF="\x00\x00\x00\x00" DT_DUMMY="\x00\x00\x00\x00\x00\x00\x00\x00"

#формируем 16-байтовые посылки для отсылки в файл клавиатуры NUM_ON=$DT_DUMMY$EV_LED$LED_NUML$TURN_ON NUM_OFF=$DT_DUMMY$EV_LED$LED_NUML$TURN_OFF CAPS_ON=$DT_DUMMY$EV_LED$LED_CAPSL$TURN_ON CAPS_OFF=$DT_DUMMY$EV_LED$LED_CAPSL$TURN_OFF SCROLL_ON=$DT_DUMMY$EV_LED$LED_SCROLLL$TURN_ON SCROLL_OFF=$DT_DUMMY$EV_LED$LED_SCROLLL$TURN_OFF

#"костыль", обеспечивающий чтение файла клавиатуры на время записи if ! ps | grep -qe "[c]at $KB_LEDS"; then cat $KB_LEDS > /dev/null & fi

#берем команду из "переменной" command GET-запроса #если эапроса нет - берем команду из первого аргумента if [ -z "$QUERY_STRING" ]; then COMMAND=$1; else COMMAND=`echo "$QUERY_STRING" | sed -n 's/^.*command=\([^&]*\).*$/\1/p'` printf "Content-type: text/plain\r\n\r\n" fi

#посылка события в файл обработчика case $COMMAND in num_on) printf $NUM_ON > $KB_LEDS;; num_off) printf $NUM_OFF > $KB_LEDS;; caps_on) printf caps_on > /var/rrr printf $CAPS_ON > $KB_LEDS;; caps_off) printf caps_off > /var/rrr printf $CAPS_OFF > $KB_LEDS;; scroll_on) printf $SCROLL_ON > $KB_LEDS;; scroll_off) printf $SCROLL_OFF > $KB_LEDS;; num_pulse) printf $NUM_ON > $KB_LEDS sleep 1 printf $NUM_OFF > $KB_LEDS ;; caps_pulse) printf $CAPS_ON > $KB_LEDS sleep 1 printf $CAPS_OFF > $KB_LEDS ;; scroll_pulse) printf $SCROLL_ON > $KB_LEDS sleep 1 printf $SCROLL_OFF > $KB_LEDS ;; *) WRONG_ARG=1;; esac

#обновляем информацию в файле текущего состояния светодиодов if [ -z $WRONG_ARG ] then STATE_FILE=/var/ledstate DEFAULT_STATE={\"num\":false,\"caps\":false,\"scroll\":false} if ! [ -e $STATE_FILE ]; then echo $DEFAULT_STATE > $STATE_FILE; fi AFFECTED_LED=`echo $COMMAND | sed -r -e 's/_[a-z]+$//'` NEW_STATE=`echo $COMMAND | sed -r -e 's/^[a-z]+_//' -e 's/on/true/' -e 's/off|pulse/false/'` sed -i -r 's/"'"$AFFECTED_LED"'":[a-z]+/"'"$AFFECTED_LED"'":'"$NEW_STATE"'/' $STATE_FILE fi

затем нашел питоновский скрипт для linux, но не для openwrt, немного директории не совпадают, что он делает непонимаю, но тут написаны все значения кнопок. https://code.google.com/p/pycopia/source/browse/trunk/core/pycopia/OS/Linux/event.py

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

С ув. Дмитрий. *DRINK*

Войдите или зарегистрируйтесь, чтобы ответить.