0
<< предыдущая заметка 
28 сентября 2022
Делаем лампочку на клавиатуре

Досталась мне беспроводная клавиатура, на которой слева сверху нет лампочек. Ну нет блять лампочек! А у меня мозг привык, что я краем глаза вижу светящиеся лампочки (на нормальных клавиатурах все три) и понимаю, что сейчас включена русская раскладка.

Вообще у меня строгие настройки переключения раскладки: отрубить всё лишнее говно в Убунте, вывести клавиатурные задержки в привычный мне высокоскоростной режим и установить кнопку смены раскладки CAPS. Сама раскладка - вариант winkews, ну и конечно зажигание всех трех светодиодов (caps,scroll,num) при русской раскладке. Это у меня исторически делается так:

sudo pkill -f -9 lxqt-globalkeysd
sudo killall /usr/bin/lxqt-globalkeysd

/usr/bin/xset r rate 200 80
/usr/bin/setxkbmap -option terminate:ctrl_alt_bksp
/usr/bin/setxkbmap -variant ,winkeys -layout us,ru
/usr/bin/setxkbmap -option grp:caps_toggle,grp_led:caps,grp_led:scroll,grp_led:num,grp:switch

Но светодиодов у нас больше нет. Что же делать?! Пришлось доработать клавиатуру, поставив допонительную беспроводную лампочку с питанием от USB.

Для начала по совету Кирилла мы берем утилиту, которая позволяет читать состояние раскладки:
https://github.com/nonpop/xkblayout-state Она конечно сразу не соберется, поэтому надо установить библиотеку, тогда соберется:

<?php
XKeyboard
.h:20:10: fatal error: X11/Xlib.h: No such file or directory

20 | #include <X11/Xlib.h>

| ^~~~~~~~~~~~
compilation terminated.

> sudo apt-get install libx11-dev
?>

Итак, утилита готова и считывает состояние раскладки:

xkblayout-state print "%s"

Теперь нужна управляемая лампочка. Проще всего взять чип ESP12 и накатить на него мой фреймворк для поливальных станций и прочих управляемых девайсов. Нужна прошивка нового поколения MERA. Как она работает с поливальными станциями, я пока не тестировал, но в ней есть передача парольного хэша в командной строке, что облегчает дистанционное исполнение скриптов из командной строки компьютера (раньше было можно давать авторизацию только в куках). Берем последнюю на сегодняшний день версию: https://lleo.me/ESP8266/firmware.new/firmware12_113.08.bin Как описано в языке cfaq в самом конце, мы можем делать парольные обращения. По шнуру USB чип не управляется - в ESP12 почему-то не работают входящие сигналы от Serial, так что управлять будем по WIFI.

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

<?php
#!/bin/sh

IP="10.20.0.77"

# change password

hash=`wget -q -O - "http://${IP}/FM?a=login&password=gluki"`
echo
"Hash=$hash"
wget -q -O - "http://${IP}/MOTO?hash=${hash}&set MAINLOOP = |pinmode 2 OUTPUT|pin 2 1"

KEY="Wru"

while [ 1 ]
do

K=`/home/lleo/wifi/xkblayout-state print "%s"`

if [ "K"${K} != "K"${KEY} ] ; then

echo "New Layout = ${K}"

KEY=${K}

if [ "K"${K} = "Kus" ] ; then

wget -q -O - "http://${IP}/MOTO?hash=${hash}&pin 2 1"

else

wget -q -O - "http://${IP}/MOTO?hash=${hash}&pin 2 0"

fi

fi

sleep 0.1
done
?>

Приматывем девайс изолентой в нужный угол клавиатуры и наслаждаемся:

<< предыдущая заметка  
пожаловаться на эту публикацию администрации портала
архив понравившихся мне ссылок
Оставить комментарий