使键盘背光在三星上工作

Tom*_*Cho 7 keyboard linux-mint samsung keyboard-backlight

我最近买了一台三星 NP900X3N,我正在尝试使背光工作(在 UEFI 上使用 Linux Mint 18.1 和 Kernel 4.10)。我已经阅读了很多关于它的内容,我知道有很多关于该主题的页面,但它们都是旧的(3 年以上),我无法让它们中的任何一个对我有用(可能是因为这个版本的笔记本电脑比较新)。

我尝试过的一些事情是:

  • 我已经下载并安装了该samsung-tools软件包,但是在大约 2 分钟没有输出后运行它会给我一个错误。
  • 我试图samsung::kbd_backlight/brightness根据这个简单的答案找到一个文件,但显然没有(我只能找到一个phy0-led/brightness,我不知道它是什么,但已经设置为 1)。
  • 我试图以非常手动的方法遵循本指南,但老实说我无法走得太远(可能是因为我缺乏知识,但我必须有一个不那么复杂的方法)
  • 按照此答案的建议,通过检查内核日志来检查密钥的扫描代码。

最后一个是最接近的一个,也是我想进一步追求的一个。当按下fn+f9(切换键盘背光)时,我得到e02c分配给该键的扫描码。所以我做了

sudo setkeycodes e02c 230
Run Code Online (Sandbox Code Playgroud)

正如答案所建议的那样。因此,当我按下此键时,会收到一条显示键盘指示灯符号的通知,我认为这是一个好兆头,但没有任何反应。

正如问题所述,键码值 230 用于增加 kbdlight,但我的笔记本电脑没有:它只有切换 kbdlight 键。所以我认为这可能是问题所在,但我找不到“切换”键码(这可能是由于我无法/usr/include/linux/input.h完全理解)。

我试图xmodmap -pke | less找到“切换键盘背光”,它被列为键码 236,但显然该列表上的数字并没有真正起作用。

有什么建议?

编辑

的输出ll /sys/class/backlight/

lrwxrwxrwx  1 root root 0 Apr 28 07:16 intel_backlight -> ../../devices/pci0000:00/0000:00:02.0/drm/card0/card0-eDP-1/intel_backlight/
Run Code Online (Sandbox Code Playgroud)

我已经尝试更改 处的值/sys/class/backlight/brightness,但这只能控制显示亮度。

的输出ll /sys/class/leds/

lrwxrwxrwx  1 root root 0 Apr 28 07:19 input3::capslock -> ../../devices/platform/i8042/serio0/input/input3/input3::capslock/
lrwxrwxrwx  1 root root 0 Apr 28 07:19 input3::numlock -> ../../devices/platform/i8042/serio0/input/input3/input3::numlock/
lrwxrwxrwx  1 root root 0 Apr 28 07:19 input3::scrolllock -> ../../devices/platform/i8042/serio0/input/input3/input3::scrolllock/
lrwxrwxrwx  1 root root 0 Apr 28 07:19 phy0-led -> ../../devices/pci0000:00/0000:00:1c.0/0000:01:00.0/leds/phy0-led/
Run Code Online (Sandbox Code Playgroud)

大写锁定就是它所说的(我已经测试过)。numlock 似乎没有做任何事情,因为我将值从 0 更改为最大值并且什么也没发生(我的键盘没有 numlock。scrolllock 似乎也没有做任何事情。我也不知道what phy0-led. 它已经设置为 1,而放入 0 似乎没有任何作用。

编辑2

这样做modprobe samsung-laptop给了我以下错误

modprobe: ERROR: could not insert 'samsung_laptop': No such device
Run Code Online (Sandbox Code Playgroud)

这似乎是一个旧错误

dir*_*rkt 4

使用键盘上的特殊键控制背光有两个部分:

  • 了解按下按键时产生的事件
  • 实际上改变背光强度

您需要一个程序(例如窗口管理器)来对事件做出反应,然后更改强度。

第一部分没问题,您会收到一个事件,我们稍后可以整理必要的翻译。至于第二部分,您需要一些知道如何控制背光强度的驱动程序,然后需要一些与该驱动程序的接口。

通常这些可以在/sys, 层次结构中找到,所以尝试

ll /sys/class/backlight
ll /sys/class/led
Run Code Online (Sandbox Code Playgroud)

并用输出编辑你的问题。这些目录应包含指向其他目录的链接,其中包含一个名为 的文件brightness和一个名为 的文件max_brightness。如果您无法从名称中找出它是什么,请查看 的内容max_brightness,并以 root 身份尝试向每个文件写入 0 到最大值之间的数字,例如

echo 0 > /sys/class/led/phy0-led/brightness
Run Code Online (Sandbox Code Playgroud)

看看你是否能识别出它控制的是什么。

编辑

好吧,看起来键盘背光没有控件,您需要特定的驱动程序。phy0-led很可能是一个 WLAN LED 连接器,它实际上可能连接到任何东西,也可能不连接到任何东西。您可以在 处检查lspci并查找该设备00:1c.0

这些控件由使用 WMI 接口的华硕笔记本电脑的asus-wmisamsung::kbd_backlight驱动程序提供。三星有类似的东西,即samsung-laptop,它提供了,并且还有一个更直接访问的界面。leds/samsung::kbd_backlightdebugfs

不知道这是否适用于您的模型。尝试

modprobe samsung-laptop
Run Code Online (Sandbox Code Playgroud)

作为 root,验证lsmod是否已加载,查看dmesg是否有任何问题或其他消息,并查看是否出现问题。

  • 看起来是这样。作为参考,这里是引入检查的[commit](https://github.com/torvalds/linux/commit/e0094244e41c4d0c7ad69920681972fc45d8ce34)。 (2认同)