Никакой индикатор Caps Lock?

С тех пор, как я сначала загруженная двойным образом Ubuntu 16.04 на моей Surface Pro 3, мой индикатор Caps Lock Вовлек мою клавиатуру, не работал. Я решил попытаться делать с этим что-то недавно. Когда я ввожу команду

echo 1 | sudo tee /sys/class/leds/input45\:\:capslock/brightness

Свет продвигается, таким образом, это, по крайней мере, доступно. Я не уверен, что сделать, чтобы заставить свет продолжиться или прочь в зависимости от состояния Caps Lock все же. Любая справка значительно ценилась бы.

2
задан 19 November 2016 в 01:00

1 ответ

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

#!/usr/bin/env python3
import subprocess
import time

led = "/sys/class/leds/input45::capslock/brightness"

while True:
    time.sleep(1)
    ledstate = open(led).read().strip() == "1"
    capstate = "Caps Lock:   on" in \
            subprocess.check_output(["xset", "-q"]).decode("utf-8")
    if ledstate != capstate:
        newled = "0" if capstate == False else "1"
        open(led, "wt").write(newled)

Как использовать:

  • Скопируйте сценарий в пустой файл, сохраните его как fix_led (никакое расширение) в /usr/local/bin и сделайте это исполняемым файлом.
  • Так как необходимо отредактировать файл /sys/class/leds/input45::capslock/brightness необходимо добавить сценарий к sudoers файлу, как объяснено, например, здесь.
  • Тестовый прогон сценарий путем выполнения

    sudo /usr/local/bin/fix_led
    

    в терминале протестируйте свою клавишу Caps Lock.

  • Теперь добавьте сценарий к своим приложениям запуска: Тире> Приложения Запуска> Добавляет. Добавьте команду:

    /bin/bash -c "sleep 10 && sudo /usr/local/bin/fix_led"
    

Именно. На следующем перезапуске (входят в систему), он должен работать.

Примечания

  • Конечно, патч должен работать во всех ситуациях, где ведомый не функционирует. точное местоположение файла capslock/brightness может варьироваться как бы то ни было. Набор, при необходимости, местоположение в строке:

    led = "/sys/class/leds/input45::capslock/brightness"
    

    в заголовке сценария (не выходят : в python). Я протестировал сценарий, заставив это установить ведомый неправильный путь :) (уведенный, когда Caps Lock шла, на том, когда это было выключено).

  • Дополнительная загрузка сценария не ни один.

Объяснение

Информация о текущем состоянии Caps Lock может быть выбрана командой:

xset -q

Однажды в секунду, сценарий проверяет если Caps Lock: on находится в выводе. Сценарий также проверяет, соответствует ли текущее состояние состоянию светодиода (или 1 или 0), как считано из capslock/brightness файл.

Если эти два не соответствуют, сценарий устанавливает состояние светодиода согласно реальному состоянию Caps Lock.

2
ответ дан 2 December 2019 в 03:43

Другие вопросы по тегам:

Похожие вопросы: