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:10fatal errorX11/Xlib.hNo 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.

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

#!/bin/sh

IP="10.20.0.77"

# change password

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

KEY="Wru"

while [ ]
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 
--"http://${IP}/MOTO?hash=${hash}&pin 2 1"
        
else
            
wget --"http://${IP}/MOTO?hash=${hash}&pin 2 0"
        
fi
    fi
    sleep 0.1
done
?>


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

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