javascript — отправляет сообщение из chrome-браузера в bash-скрипт в Ubuntu для управления клавиатурными светодиодами

Возможно ли для веб-страницы HTML5 / JavaScript в google-chrome на Ubuntu 16 управлять индикаторами клавиатуры?

У меня есть NUC5PCYH с пользовательской клавиатурой, которая принимает сигналы CapsLock, ScrollLock и NumLock в качестве входов для функциональных действий и веб-приложение для управления им.

Мне не удалось заставить работать два разных тестовых примера расширения Native Messaging Google Chrome просто потому, что я не понимаю половину инструкций.

Несколько примеров PHP показывают, что запуск XSET из сценария BASH, запускаемого PHP, возможен, но у меня нулевой опыт работы с PHP и ограниченные знания BASH.

Использование SQLite3 для чтения «переменных» локального хранилища chrome показалось мне достаточно простым, но я не могу понять, как писать сценарии SQLite, и ни один из файлов в кеше google-chrome не распознается как действительная база данных.

Если бы я знал какие-либо языки программирования Linux, я бы написал один, чтобы отслеживать верхнюю строку в клиентской области окна браузера Chrome и активировать светодиоды в соответствии с бинарным шаблоном в черном и почти черном пикселях.

Может кто-нибудь указать мне на установку с нулевым знанием возможных решений в PHP, SQLite или Native Message Extensions?

Кроме того, где лучшее место, чтобы нанять программиста для решения?

0

Решение

Мне удалось решить проблему самостоятельно, используя вторую идею, PHP.

Установите Apache2 и PHP для настройки локального хоста

sudo apt-get update
sudo apt-get установить apache2
sudo apt-get установить php libapache2-mod-php

Удалить /var/www/html/index.html

Создайте два файла в / var / www / html /

index.php

<?php
$var=$_GET['data'];
exec("sh /var/www/html/simple.sh $var", $output);
echo var_dump($output);
?>

simple.sh

#!bin/bash
sudo echo $1 > file.txt
echo $1

Потому что имя пользователя для Apache WWW-данные:

php -r «echo exec (‘whoami’);»

папка нуждается в смене владельца на apache

sudo chown -R www-data: www-data / var / www / html

Последний файл, который нужно создать, на рабочем столе на данный момент, но может пойти куда угодно:

monitor.sh

data=`cat /var/www/html/file.txt`
if [ $data -eq 1 ]
then
xset led named "Caps Lock"else
xset -led named "Caps Lock"fi

Отредактируйте некоторые настройки и разрешения:

sudo visudo

Добавьте следующее в конец файла:

www-data ALL=NOPASSWD: ALL

Включить изменение индикатора CapsLock:

sudo gedit / usr / share / X11 / xkb / compat / ledcaps

заменить: !allowExplicit; с: allowExplicit;


Финальная последовательность:

Откройте браузер и введите URL:

http://localhost/index.php?data=1

index.php получит значение данных из URL и выполнит simple.sh с этим значением в качестве первого аргумента.

simple.sh использует echo для записи значения аргумента в $ 1 в текстовый файл с именем file.txt.

ш монитор.ш

Значение, сохраненное в file.txt, помещается в переменную данные по команде оболочки cat,

Если значение в переменной данные равен 1, то CapsLock включен и выключен, если значение равно чему-либо еще.

Сохранение значения данных в file.txt и чтение из другого места с помощью monitor.sh вызвано ошибкой xset в /var/log/apache2/error.log:

xset: невозможно открыть дисплей «»

Мое предположение заключается в том, что xset требует отображения, несмотря ни на что, а запуск из PHP файла оболочки без отображения по умолчанию. Документация по X и xset для -display настолько смутила меня, что я использовал этот подход после того, как попробовал различные предложения. Случайное преимущество заключается в том, что я могу разместить файл monitor.sh на сетевом устройстве NAS, а не блокировать его внутри / var / www / html /

PS: Простите, если я что-то пропустил или забыл некоторые подробности, так как я очень плохо знаком с этими инструментами в этой среде.

0

Другие решения

Других решений пока нет …