Возможно ли для веб-страницы 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?
Кроме того, где лучшее место, чтобы нанять программиста для решения?
Мне удалось решить проблему самостоятельно, используя вторую идею, 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: Простите, если я что-то пропустил или забыл некоторые подробности, так как я очень плохо знаком с этими инструментами в этой среде.
Других решений пока нет …