Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Сохранить состояние подсветки клавиатуры  (Прочитано 5057 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн damix

  • Автор темы
  • Активист
  • *
  • Сообщений: 664
    • Просмотр профиля
Есть клавиатура с подсветкой Qcyber Technic. На ней можно регулировать яркость (3 уровня: выключено, тускло горит, ярко горит) и цвет (синий, красный, малиновый) специальными сочетаниями клавиш с fn. Возможно ли сохранить эти настройки чтобы после перезагрузки цвет и яркость были такие же как прошлый раз, а не сбрасывались к дефолтным? Другими словами, можно ли как-то задать состояние подсветки с компьютера под linux? И как сделать то же самое с состоянием Num lock?

$ screenfetch
                          ./+o+-       homa@ryzen
                  yyyyy- -yyyyyy+      OS: Ubuntu 18.04 bionic
               ://+//////-yyyyyyo      Kernel: x86_64 Linux 4.19.0-rc3-ubuntu
           .++ .:/++++++/-.+sss/`      Uptime: 12h 28m
         .:++o:  /++++++++/:--:/-      Packages: 2999
        o:+o+:++.`..```.-/oo+++++/     Shell: bash
       .:+o:+o/.          `+sssoo+/    Resolution: 1920x1080
  .++/+:+oo+o:`             /sssooo.   DE: KDE 5.44.0 / Plasma 5.12.6
 /+++//+:`oo+o               /::--:.   WM: KWin
 \+/+o+++`o++o               ++////.   WM Theme: Breeze
  .++.o+++oo+:`             /dddhhh.   GTK Theme: Breeze [GTK2/3]
       .+.o+oo:.          `oddhhhh+    Icon Theme: breeze
        \+.++o+o``-````.:ohdhhhhh+     Font: Noto Sans Regular
         `:o+++ `ohhhhhhhhyo++os:      CPU: AMD Ryzen 3 2200G with Radeon Vega Graphics @ 4x 3.5GHz [37.0°C]
           .o:`.syhhhhhhh/.oo++o`      GPU: AMD RAVEN (DRM 3.27.0 / 4.19.0-rc3-ubuntu, LLVM 6.0.0)
               /osyyyyyyo++ooo+++/     RAM: 1887MiB / 3454MiB
                   ````` +oo+++o\:   
                          `oo++.     


Оффлайн zg_nico

  • Заслуженный пользователь
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3513
  • Nil mortalibus arduum est
    • Просмотр профиля
Re: Сохранить состояние подсветки клавиатуры
« Ответ #1 : 30 Октября 2018, 00:19:50 »
screenfetch
Ну от этого в контексте вопроса мало пользы будет :) Подсветка клавиатуры - штука весьма неоднозначная. Можете попробовать поискать вот здесь: /sys/class/leds/. Если повезет - найдете файл, в котором хранится состояние подсветки, её цвет. Хотя сразу скажу, что это маловероятно, и занятие достаточно неблагодарное (файла может и вовсе не быть). У себя, к примеру, я такого файла найти не могу. Поиски можно вести, к примеру, таким образом: создаете файл скрипта по пути ~/myscript.sh, наполняете его таким кодом:#!/bin/bash
soder=`cat $1`
if [ ! -z "$soder" ]; then
    echo -e "\nФайл:" `ls $1`
    echo "Содержимое:" `cat $1`
fi
Даете скрипту права на исполнение. Далее выполняете в терминале такую вот команду:
find -L /sys/class/ -maxdepth 5 -iname "*bright*" -exec ~/myscript.sh {} \; 2>/dev/nullФрагмент вывода в моем случае:
Цитировать
Файл: /sys/class/drm/card0/card0-eDP-1/intel_backlight/actual_brightness
Содержимое: 196

Файл: /sys/class/drm/card0/card0-eDP-1/intel_backlight/brightness
Содержимое: 196

Файл: /sys/class/drm/card0/card0-eDP-1/intel_backlight/max_brightness
Содержимое: 416
Всякие там CapsLock и прочие индикаторы данная методика отлично видит.
(Нажмите, чтобы показать/скрыть)
Методология: выполните такой поиск, поменяйте яркость подсветки - выполните поиск еще раз. Ручками (или через diff) сравните выводы между собой. В одном из файлов содержимое (если вообще эта методика в Вашем случае подходит) изменится. Имя этого файла - искомое Вами. Далее, как следствие, прямая запись соответствующего значения в соответствующий файл (потребуются полномочия root для этого действия) с высокой долей вероятности приведет к изменению яркости подсветки (если ее удалось отследить) или ее цвета (если удастся отследить его).
С Num Lock несколько легче. Вот ссылка.
Thunderobot G150-D2: Intel SkyLake Core i7-6700HQ 2.60GHz, 8Gb DDR4 2133 MHz, Intel HD530, NVidia GeForce GTX 960M 2Gb.  Ubuntu 16.04 64x [Unity], KUbuntu 18.04 64x.

Оффлайн damix

  • Автор темы
  • Активист
  • *
  • Сообщений: 664
    • Просмотр профиля
Re: Сохранить состояние подсветки клавиатуры
« Ответ #2 : 30 Октября 2018, 14:39:49 »
homa@ryzen:~$ find -L /sys/class/ -maxdepth 5 -iname "*bright*" -exec ./myscript.sh {} \; 2>/dev/null > file1.txt
# меняю настройки подсветки
homa@ryzen:~$ find -L /sys/class/ -maxdepth 5 -iname "*bright*" -exec ./myscript.sh {} \; 2>/dev/null > file2.txt
homa@ryzen:~$ diff file1.txt file2.txt
homa@ryzen:~$
homa@ryzen:~$
Разницы нет. И настройки яркости сбрасываются к дефолтным при отключении питания клавиатуры, а не при перезагрузке. Видимо, никакого запоминающего устройства у нее нет. А есть ли какой-то механизм в ядре для всяких таких настроек устройств ввода?

С Num Lock несколько легче. Вот ссылка.
А это работает, спасибо.

Оффлайн zg_nico

  • Заслуженный пользователь
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3513
  • Nil mortalibus arduum est
    • Просмотр профиля
Re: Сохранить состояние подсветки клавиатуры
« Ответ #3 : 30 Октября 2018, 15:17:20 »
damix, про подсветку: пожно попробовать поискать вообще все файлы, которые меняются при изменении подсветки. То же, что ранее, только цепочка команд для поиска будет такая (глубину поиска выставил по-минимуму, - опасаюсь что файлы шибко большими могут получиться):find -L /sys/class/ -maxdepth 3 -type f -exec ./myscript.sh {} \; 2>/dev/null > file1.txt
#меняем яркость
find -L /sys/class/ -maxdepth 3 -type f -exec ./myscript.sh {} \; 2>/dev/null > file2.txt
Файлы 1 и 2 сравниваем. Будет мусора много (та же температура, которая меняется, - будет отражена разница). Так что анализировать придется много. Простым diff вряд ли удастся что-то понять.
Ко всему - было бы неплохо найти устройство в дереве устройств linux, посмотреть на доступные для изменения свойства - может там что удастся выковырять. Для этого следует:
1. Переподключить клавиатуру.
2. Открыть терминал, выполнить, к примеру dmesg | grep "New USB device found"В выхлопе будет что-то вроде
Цитировать
[90280.035001] usb 1-9: New USB device found, idVendor=09da, idProduct=f613
Обратите внимание на idVendor и idProduct, - должны соответствовать индексам VID и PID Вашей клавиатуры из lsusb (она же там, я думаю, отображается?!). Нас здесь интересует выделенное жирным. Допустим, показало что и у меня: 1-9. Тогда по аналогии с вышеприведенным начинаем искать все доступные текстовые файлы в данном направлении, и сравнивать их содержимое:
find -L /sys/bus/usb/devices/1-9 -maxdepth 3 -type f -exec ./myscript.sh {} \; 2>/dev/null > file1.txt
#меняем яркость
find -L /sys/bus/usb/devices/1-9 -maxdepth 3 -type f -exec ./myscript.sh {} \; 2>/dev/null > file2.txt
Если найдется файл - можно будет управлять. Останется только продумать правило для udev, чтобы при каждом подключении клавиатура в новое место не скакала (есть статья на арчвики, там все довольно просто), и в то же правило включить вызов скрипта, который бы сохраненное значение при подключении устройства выставлял в корректном файле, да при отключении устройства это значение из корректного файла бэкапил...

Пользователь добавил сообщение 30 Октября 2018, 15:19:11:
А есть ли какой-то механизм в ядре
За это не скажу, - скорее всего нет. Но управлять устройствами через текстовые файлы вполне себе получается. Вот пример такого управления: я костылил поведение встроенного модема, который не очень сдружился с новым ядром.
« Последнее редактирование: 30 Октября 2018, 15:20:49 от zg_nico »
Thunderobot G150-D2: Intel SkyLake Core i7-6700HQ 2.60GHz, 8Gb DDR4 2133 MHz, Intel HD530, NVidia GeForce GTX 960M 2Gb.  Ubuntu 16.04 64x [Unity], KUbuntu 18.04 64x.

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6912
    • Просмотр профиля
Re: Сохранить состояние подсветки клавиатуры
« Ответ #4 : 30 Октября 2018, 15:40:04 »
Цитировать
А есть ли какой-то механизм в ядре для всяких таких настроек устройств ввода?
Есть. И тебе его уже подсазали. Это каталог /sys.
Приведу конкретный пример. Смотрю с помощью MC.
/sys/class/leds/input3::capslock/brightness - думаю, это индикатор клавиатуры capslock.
Меняю значение на 1 - загорается capslock. Меняю на 0 - гаснет capslock.
Подключаю мышку. Появляется каталог /sys/class/leds/input26. В нем подкаталоги со вполне говорящими названиями.

Оффлайн damix

  • Автор темы
  • Активист
  • *
  • Сообщений: 664
    • Просмотр профиля
Re: Сохранить состояние подсветки клавиатуры
« Ответ #5 : 30 Октября 2018, 16:27:31 »
Обратите внимание на idVendor и idProduct, - должны соответствовать индексам VID и PID Вашей клавиатуры из lsusb (она же там, я думаю, отображается?!).
По lsusb она определяется так
Bus 001 Device 006: ID 0c45:8603 MicrodiaА в выводе dmesg вот так
[ 5523.742341] usb 1-8: New USB device found, idVendor=0c45, idProduct=8603, bcdDevice= 2.00
$ find -L /sys/bus/usb/devices/1-8 -maxdepth 3 -type f -exec ./myscript.sh {} \; 2>/dev/null > file1.txt
$ find -L /sys/bus/usb/devices/1-8 -maxdepth 3 -type f -exec ./myscript.sh {} \; 2>/dev/null > file2.txt
$ find -L /sys/bus/usb/devices/1-8 -maxdepth 3 -type f -exec ./myscript.sh {} \; 2>/dev/null > file3.txt
$
$ diff -c file1.txt file2.txt
*** file1.txt   2018-10-30 20:15:45.924061436 +0700
--- file2.txt   2018-10-30 20:16:00.725086682 +0700
***************
*** 147,153 ****
  Содержимое: \_SB_.PCI0.GPP1.PTXH.RHUB.PO12
 
  Файл: /sys/bus/usb/devices/1-8/port/power/runtime_active_time
! Содержимое: 6391844
 
  Файл: /sys/bus/usb/devices/1-8/port/power/runtime_active_kids
  Содержимое: 0
--- 147,153 ----
  Содержимое: \_SB_.PCI0.GPP1.PTXH.RHUB.PO12
 
  Файл: /sys/bus/usb/devices/1-8/port/power/runtime_active_time
! Содержимое: 6406364
 
  Файл: /sys/bus/usb/devices/1-8/port/power/runtime_active_kids
  Содержимое: 0
***************
*** 186,192 ****
  Содержимое: 2
 
  Файл: /sys/bus/usb/devices/1-8/power/runtime_active_time
! Содержимое: 868660
 
  Файл: /sys/bus/usb/devices/1-8/power/wakeup
  Содержимое: enabled
--- 186,192 ----
  Содержимое: 2
 
  Файл: /sys/bus/usb/devices/1-8/power/runtime_active_time
! Содержимое: 883176
 
  Файл: /sys/bus/usb/devices/1-8/power/wakeup
  Содержимое: enabled
***************
*** 195,201 ****
  Содержимое: 0
 
  Файл: /sys/bus/usb/devices/1-8/power/active_duration
! Содержимое: 869028
 
  Файл: /sys/bus/usb/devices/1-8/power/wakeup_abort_count
  Содержимое: 0
--- 195,201 ----
  Содержимое: 0
 
  Файл: /sys/bus/usb/devices/1-8/power/active_duration
! Содержимое: 883544
 
  Файл: /sys/bus/usb/devices/1-8/power/wakeup_abort_count
  Содержимое: 0
***************
*** 213,219 ****
  Содержимое: 0
 
  Файл: /sys/bus/usb/devices/1-8/power/connected_duration
! Содержимое: 869052
 
  Файл: /sys/bus/usb/devices/1-8/power/persist
  Содержимое: 1
--- 213,219 ----
  Содержимое: 0
 
  Файл: /sys/bus/usb/devices/1-8/power/connected_duration
! Содержимое: 883568
 
  Файл: /sys/bus/usb/devices/1-8/power/persist
  Содержимое: 1
***************
*** 279,285 ****
  Содержимое: 8603
 
  Файл: /sys/bus/usb/devices/1-8/urbnum
! Содержимое: 532
 
  Файл: /sys/bus/usb/devices/1-8/devnum
  Содержимое: 6
--- 279,285 ----
  Содержимое: 8603
 
  Файл: /sys/bus/usb/devices/1-8/urbnum
! Содержимое: 548
 
  Файл: /sys/bus/usb/devices/1-8/devnum
  Содержимое: 6
$ diff -c file1.txt file3.txt
*** file1.txt   2018-10-30 20:15:45.924061436 +0700
--- file3.txt   2018-10-30 20:16:13.305955299 +0700
***************
*** 147,153 ****
  Содержимое: \_SB_.PCI0.GPP1.PTXH.RHUB.PO12
 
  Файл: /sys/bus/usb/devices/1-8/port/power/runtime_active_time
! Содержимое: 6391844
 
  Файл: /sys/bus/usb/devices/1-8/port/power/runtime_active_kids
  Содержимое: 0
--- 147,153 ----
  Содержимое: \_SB_.PCI0.GPP1.PTXH.RHUB.PO12
 
  Файл: /sys/bus/usb/devices/1-8/port/power/runtime_active_time
! Содержимое: 6419240
 
  Файл: /sys/bus/usb/devices/1-8/port/power/runtime_active_kids
  Содержимое: 0
***************
*** 186,192 ****
  Содержимое: 2
 
  Файл: /sys/bus/usb/devices/1-8/power/runtime_active_time
! Содержимое: 868660
 
  Файл: /sys/bus/usb/devices/1-8/power/wakeup
  Содержимое: enabled
--- 186,192 ----
  Содержимое: 2
 
  Файл: /sys/bus/usb/devices/1-8/power/runtime_active_time
! Содержимое: 896052
 
  Файл: /sys/bus/usb/devices/1-8/power/wakeup
  Содержимое: enabled
***************
*** 195,201 ****
  Содержимое: 0
 
  Файл: /sys/bus/usb/devices/1-8/power/active_duration
! Содержимое: 869028
 
  Файл: /sys/bus/usb/devices/1-8/power/wakeup_abort_count
  Содержимое: 0
--- 195,201 ----
  Содержимое: 0
 
  Файл: /sys/bus/usb/devices/1-8/power/active_duration
! Содержимое: 896420
 
  Файл: /sys/bus/usb/devices/1-8/power/wakeup_abort_count
  Содержимое: 0
***************
*** 213,219 ****
  Содержимое: 0
 
  Файл: /sys/bus/usb/devices/1-8/power/connected_duration
! Содержимое: 869052
 
  Файл: /sys/bus/usb/devices/1-8/power/persist
  Содержимое: 1
--- 213,219 ----
  Содержимое: 0
 
  Файл: /sys/bus/usb/devices/1-8/power/connected_duration
! Содержимое: 896444
 
  Файл: /sys/bus/usb/devices/1-8/power/persist
  Содержимое: 1
***************
*** 279,285 ****
  Содержимое: 8603
 
  Файл: /sys/bus/usb/devices/1-8/urbnum
! Содержимое: 532
 
  Файл: /sys/bus/usb/devices/1-8/devnum
  Содержимое: 6
--- 279,285 ----
  Содержимое: 8603
 
  Файл: /sys/bus/usb/devices/1-8/urbnum
! Содержимое: 564
 
  Файл: /sys/bus/usb/devices/1-8/devnum
  Содержимое: 6
$


Пользователь добавил сообщение 30 Октября 2018, 16:34:10:
Не знаю, есть ли там что-то интересное.

Пользователь добавил сообщение 30 Октября 2018, 16:41:11:
$ diff -c1 file1.txt file3.txt
*** file1.txt   2018-10-30 20:15:45.924061436 +0700
--- file3.txt   2018-10-30 20:16:13.305955299 +0700
***************
*** 149,151 ****
  Файл: /sys/bus/usb/devices/1-8/port/power/runtime_active_time
! Содержимое: 6391844
 
--- 149,151 ----
  Файл: /sys/bus/usb/devices/1-8/port/power/runtime_active_time
! Содержимое: 6419240
 
***************
*** 188,190 ****
  Файл: /sys/bus/usb/devices/1-8/power/runtime_active_time
! Содержимое: 868660
 
--- 188,190 ----
  Файл: /sys/bus/usb/devices/1-8/power/runtime_active_time
! Содержимое: 896052
 
***************
*** 197,199 ****
  Файл: /sys/bus/usb/devices/1-8/power/active_duration
! Содержимое: 869028
 
--- 197,199 ----
  Файл: /sys/bus/usb/devices/1-8/power/active_duration
! Содержимое: 896420
 
***************
*** 215,217 ****
  Файл: /sys/bus/usb/devices/1-8/power/connected_duration
! Содержимое: 869052
 
--- 215,217 ----
  Файл: /sys/bus/usb/devices/1-8/power/connected_duration
! Содержимое: 896444
 
***************
*** 281,283 ****
  Файл: /sys/bus/usb/devices/1-8/urbnum
! Содержимое: 532
 
--- 281,283 ----
  Файл: /sys/bus/usb/devices/1-8/urbnum
! Содержимое: 564
 

И между первыми двумя тестами отличия в тех же файлах.
« Последнее редактирование: 30 Октября 2018, 16:41:11 от damix »

Оффлайн zg_nico

  • Заслуженный пользователь
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3513
  • Nil mortalibus arduum est
    • Просмотр профиля
Re: Сохранить состояние подсветки клавиатуры
« Ответ #6 : 30 Октября 2018, 17:18:48 »
damix, покажите
ls /sys/bus/usb/devices/1-8/
lsusb -v -d 0c45:8603
Пока грешу на /sys/bus/usb/devices/1-8/urbnum
Thunderobot G150-D2: Intel SkyLake Core i7-6700HQ 2.60GHz, 8Gb DDR4 2133 MHz, Intel HD530, NVidia GeForce GTX 960M 2Gb.  Ubuntu 16.04 64x [Unity], KUbuntu 18.04 64x.

Оффлайн damix

  • Автор темы
  • Активист
  • *
  • Сообщений: 664
    • Просмотр профиля
Re: Сохранить состояние подсветки клавиатуры
« Ответ #7 : 30 Октября 2018, 18:42:08 »
$ ls /sys/bus/usb/devices/1-8/
1-8:1.0            bConfigurationValue  bMaxPacketSize0     configuration  driver       manufacturer  quirks     subsystem
1-8:1.1            bDeviceClass         bMaxPower           descriptors    ep_00        maxchild      removable  tx_lanes
authorized         bDeviceProtocol      bNumConfigurations  dev            idProduct    port          remove     uevent
avoid_reset_quirk  bDeviceSubClass      bNumInterfaces      devnum         idVendor     power         rx_lanes   urbnum
bcdDevice          bmAttributes         busnum              devpath        ltm_capable  product       speed      version
$ lsusb -v -d 0c45:8603       

Bus 001 Device 006: ID 0c45:8603 Microdia
Couldn't open device, some information will be missing
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0         8
  idVendor           0x0c45 Microdia
  idProduct          0x8603
  bcdDevice            2.00
  iManufacturer           1
  iProduct                2
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           59
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      1 Keyboard
      iInterface              0
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      65
         Report Descriptors:
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval              10
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 No Subclass
      bInterfaceProtocol      0 None
      iInterface              0
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      52
         Report Descriptors:
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0003  1x 3 bytes
        bInterval              10

Оффлайн zg_nico

  • Заслуженный пользователь
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3513
  • Nil mortalibus arduum est
    • Просмотр профиля
Re: Сохранить состояние подсветки клавиатуры
« Ответ #8 : 30 Октября 2018, 19:03:06 »
damix, пока никаких идей не вырисовывается... Прошу Вас выполнить, как делали ранее find -L /sys/bus/usb/devices/1-9 -maxdepth 3 -type f -exec ./myscript.sh {} \; 2>/dev/null > file1.txt
#меняем яркость
find -L /sys/bus/usb/devices/1-9 -maxdepth 3 -type f -exec ./myscript.sh {} \; 2>/dev/null > file2.txt
и файлы file1.txt и file2.txt приложить к сообщению на форуме, - поковыряю их, может что в голову придет.
Thunderobot G150-D2: Intel SkyLake Core i7-6700HQ 2.60GHz, 8Gb DDR4 2133 MHz, Intel HD530, NVidia GeForce GTX 960M 2Gb.  Ubuntu 16.04 64x [Unity], KUbuntu 18.04 64x.

 

Страница сгенерирована за 0.033 секунд. Запросов: 25.