Включите подсветку клавиатуры на поддерживаемом Lenovo (например, Carbon X1) с помощью команды


18

Некоторые ноутбуки Lenovo имеют подсветку клавиатуры, и их можно включить с помощью Fn+ Space. Есть три состояния: выключено, нормальное и яркое.

Когда я запускаю Ubuntu, эти ноутбуки по умолчанию всегда возвращают яркость солнечного экрана, а клавиатура выключается.

Мне нужна средняя яркость и подсветка клавиатуры по умолчанию, потому что я обычно использую этот ноутбук в темноте.

Подсветка проста. Интернет наполнен информацией об этом.
echo 10 > /sys/class/backlight/acpi_video0/brightness

Но как включить подсветку клавиатуры командой? Я искал здесь, но, кажется, ничего не делает:
/sys/class/leds/tpacpi\:\:thinklight


Обновления

Я пытался, for i in {1..32}; do xset led $i; doneно ничего не меняется. Возможно, подсветка клавиатуры для ноутбуков Lenovo имеет собственный драйвер и управляется только через нее tpacpi?

Также пытался for i in $(find /sys/devices/platform/thinkpad_acpi/leds/ | grep /brightness\); do echo 255 > $i; doneбезрезультатно.


Либо xset led (это почти 100% вероятность Caps Lock и т. Д., Но я все равно добавлю его) или setleds. Изменить: Найдено это
Уилф

Не работает Я пытался, for i in {1..32}; do xset led $i; doneно ничего не меняется.
Редсандро

Ответы:


8

Похоже, что это было обновлено, мой X1C с UbuntuMATE 16.04 LTS имеет

/sys/class/leds/tpacpi\:\:kbd_backlight/brightness

который работает как ожидалось, т.е.

# echo 2 > /sys/class/leds/tpacpi\:\:kbd_backlight/brightness

Приносит это в полный свет :)


Эй, да, действительно! Спасибо, что нашли время, чтобы поделиться этим на старый вопрос. :)
Redsandro

1
Нет Probs, это был первый удар , когда я смотрел, думал , что это не может быть , что трудно, так , что я должен обновить этот с моими выводами :)
wuxmedia

14

Это действительно нужно исправить!

Я думаю, что это распространенная ошибка в новых ThinkPad. Если вы зажгли клавиатуру вручную, fn + spaceто выполните:

echo 0 > /sys/class/leds/tpacpi\:\:thinklight/brightness

клавиатура исчезнет. Пожалуйста, смотрите следующую ссылку, если это поможет:

http://www.spinics.net/lists/ibm-acpi-devel/msg03090.html


Эй, ты прав, я не знал. Так как мы можем отключить его, создается впечатление, что для разработчиков это было бы несложно. Есть ли еще отчет об ошибке?
Redsandro

В электронном письме предлагался этот обходной путь: gist.github.com/hadess/6847281 Есть идеи, как мы можем это реализовать?
Рашад

4

Это скрипт bash, который я использую:

https://gist.github.com/vzaliva/0adba7bc40e2f31a0b5f802af2a63267

Работает на IBM ThinkPad X260 с Ubuntu 16.04.


IBM? Этому ноутбуку должно быть не менее 10 лет! Но это работает и на моем Carbon X1! Честно говоря, код от hadess, на который ответил rashad, сделал то же самое, но я не хочу делать 5 шагов и устанавливать компиляторы. Я искал простую команду bash. И это то, что я могу использовать. Спасибо за ответ на мой трехлетний вопрос. Принятый.
Redsandro

Рад, что вы нашли это полезным. Конечно, я имел в виду Lenovo Thinkpad, и мой X260 совершенно новый. У меня была та же проблема, и я нашел этот ответ, но мне не понравилась программа на C, которая также требует ручного modprobe, поэтому я переписал ее как скрипт. Авторы оригинальной программы на Си делали всю тяжелую работу.
крокодил

3

Хорошо, со мной это нормально работает:

https://gist.github.com/hadess/6847281

  • Прежде всего, загрузите суть выше, я переименовал его ThinkLight.cвместо tmp.c.
  • Убедитесь, что у вас установлен glib-2.0:

    sudo apt-get install libglib2.0-dev
    
  • Скомпилируйте ThinkLight.cкак следующее:

    gcc -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include ThinkLight.c -o ThinkLight -lglib-2.0
    
  • Загрузить ec_sysмодуль (это можно добавить /etc/modulesпри загрузке):

    sudo modprobe ec_sys
    
  • Наконец, выполните ThinkLightс аргументом уровня (0, 1 или 2):

     sudo ./ThinkLight 0
     sudo ./ThinkLight 1
     sudo ./ThinkLight 2
    

Отдельное спасибо Хэдесс за то, что это произошло!


Есть идеи, как запустить это без sudo? Попытка запустить это в другом скрипте, и он запускается как мой пользователь.
zsquare

Я попробовал это и получил несколько ошибок :( ThinkLight.c: В функции 'main': ThinkLight.c: 56: 6: предупреждение: неявное объявление функции 'lseek' [-Wimplicit-function-объявление] if (lseek (fd, 0xd, SEEK_CUR) <0) {^ ~~~~ ThinkLight.c: 60: 6: предупреждение: неявное объявление функции 'write' [-Wimplicit-function-объявление] if (write (fd, & levels [level], 1 ) <0) {^ ~~~~
Хериберто Хуарес,

@HeribertoJuarez - это старый ответ, вы можете манипулировать этим напрямую с новыми ядрами Linux. Проверьте ответ
wuxmedia

1

Мой T450s не включит подсветку клавиатуры после возобновления работы с ядрами старше 4.6. FWIW, с 4.6 теперь, подсветка клавиатуры установлена ​​на яркость, которую она имела до приостановки.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.