如何使键盘背光 Fn 按钮在三星 9 系列中工作?

如何使键盘背光 Fn 按钮在三星 9 系列中工作?

我刚刚在三星 900X4C 上安装了 Ubuntu 12.10。但是,我无法让键盘背光工作。

我按照以下方式添加了键盘映射社区文档 - 三星 9 系列(功能键部分)。但无论按 Fn+F9 还是 F10(背光减少/增加),我都会得到:

  1. 键盘无灯
  2. 右上角的切换器总是弹出最大值(即“全亮”)

如何修复键盘背光?风扇按钮 (Fn+F11) 也不起作用,如果你也知道这个就太好了。

答案1

几天前我购买了完全相同的型号(900X4C),并且我成功看到 F9/F10 键工作,我甚至不必安装 Voria/samsung-tools包 - 我只是摆弄了/lib/udev/keymaps/samsung-other文件和相应的强制释放文件。

不幸的是,我搞砸了安装过程(我没有在 UEFI 模式下运行 Ubuntu 并且我有交换)并且我决定重新安装,从那时起我就无法复制工作的键盘背光。

我只是觉得这或许可以帮助其他更有知识的人找到解决方案。


以下是我遇到的一些(可能有用的)资源:

此外,还有一些实验和结果......


正在做:

cat /sys/class/dmi/id/product_name

返回:

900X3C/900X3D/900X3E/900X4C/900X4D (matched by samsung-other)

全新安装 Ubuntu 13.04 并更新后,我得到了以下结果:

  • F1(设置) -不起作用
  • F2(- 屏幕亮度)
  • F3(+ 屏幕亮度)
  • F4(切换视频模式)
  • F5(切换点击板)
  • F6(沉默的)
  • F7(- 体积)
  • F8(+ 音量)
  • F9(键盘背光)不起作用
  • F10(+ 键盘背光) -不起作用
  • F11(风扇/切换 CPU 速度) -不起作用
  • F12(切换 WiFi) -不起作用

当我按下+组合键时,我还通过执行/lib/udev/keymap -i input/event3并收集输出设法获得了此精确型号的正确键盘映射代码:FNFx

0xCE    prog1           # F1
0x89    brightnessdown  # F2
0x88    brightnessup    # F3
0x82    switchvideomode # F4
0xF7    f22             # F5
0xF9    f23             # F5
0xA0    mute            # F6
0xAE    volumedown      # F7
0xB0    volumeup        # F8
0x97    kbdillumdown    # F9
0x96    kbdillumup      # F10
0xB3    prog3           # F11, "silent" isn't recognized
0xD5    wlan            # F12

您可以使用showkey来获取十进制所按下组合的代码表示。

请记住随后调用以下命令:

sudo udevadm control --reload-rules
sudo /lib/udev/keymap input/event3 /lib/udev/keymaps/samsung-other

我现在已经放弃了,但是如果有人做对了,请告诉我!


PS:实验过程中,我注意到了两件有趣的事情:

  1. 如果您注释并重新加载所有默认的键盘映射规则,一切仍然有效(为什么?)
  2. 如果你使用我喜欢的 github 规则,一旦你按下F9/F10你就不能再在任何地方输入内容

第 2 点让我怀疑按键没有被释放。

# Set model specific atkbd force_release quirk
#
# Several laptops have hotkeys which don't generate release events,
# which can cause problems with software key repeat.
# The atkbd driver has a quirk handler for generating synthetic
# release events, which can be configured via sysfs since 2.6.32.
# Simply add a file with a list of scancodes for your laptop model
# in /usr/lib/udev/keymaps, and add a rule here.
# If the hotkeys also need a keymap assignment you can copy the
# scancodes from the keymap file, otherwise you can run
# /usr/lib/udev/keymap -i /dev/input/eventX
# on a Linux vt to find out.

以上内容摘自/lib/udev/rules.d/95-keyboard-force-release.rules

答案2

是否有针对灯光和风扇的 BIOS 选项/设置?

只需在 Google 上搜索您的笔记本电脑型号,就会显示结果,其中包括显示您的笔记本电脑需要黑暗的房间才能打开键盘背光的页面,因为有一个传感器可以根据可用的光线水平自动切换键盘背光。这可能是指示灯显示亮度级别而背光似乎不起作用的原因。安装 Easy Settings 后,可通过 Windows 进行这些设置。 9 系列简易设置

您可以从下载 Easy Settings制造商网站确保您拥有确切的型号或位于特定型号的正确页面上。也就是说,如果您有 Windows 可用来至少确认一切按预期工作。

社区文档确认扫描码至少对于 9 系列是相同的,并包括您的型号在配置(即安装内核模块和编辑两个文件)后确认可以正常工作。
以下是引自https://help.ubuntu.com/community/SamsungSeries9

问题的解答

尝试有条不紊地阅读给出的已发布链接。尝试其他选项。即替代指令通过它有链接上一篇这些都按时间顺序倒序排列,因此可能值得尝试按以下顺序阅读链接:

  1. 上一篇

  2. 替代指令

  3. https://help.ubuntu.com/community/SamsungSeries9

    也许去火上浇油是件好事发射台

因此,由于 Windows 已按照上述第 1 步预安装了 UEFI,因此

UEFI 和 Grub2

我知道我的笔记本电脑有一个支持 UEFI 固件的选项,所以我打开了它,因为 UEFI 很酷,对吧?然后我发现,如果使用 UEFI 子系统,fedora 会回退到使用 grub-0.9x 而不是 grub2,据我所知,存在一些兼容性问题,所以我选择了旧版 BIOS 选项,因为我真的希望 grub2 启动我的操作系统。

以及@MrNice 的回答这里引用;

您需要停止加载 samsung_laptop 内核模块。此模块在 efi 模式下无法工作,因为它会写入部分内存,导致内核抛出检查异常并崩溃。arch 也有同样的问题。但随后您会失去键盘背光。恕我直言,如果您需要这样做,则必须在 bios 模式下重新安装 windows 和 ubuntu。

或者尝试不同的内核参数来加载三星笔记本电脑模块。引用自http://www.mjmwired.net/kernel/Documentation/kernel-parameters.txt

内核参数
2 ~~~~~~~~~~~~~~~~~
3
4 以下是内核参数的综合列表,这些参数
大部分由 __setup() 宏实现,并按英语词典顺序排序
6(定义为忽略所有标点符号并以
不区分大小写的方式将数字排在字母之前),并附带已知的描述。
8
9 可加载模块的模块参数仅指定为
10 参数名称,并根据需要带有可选的 '=' 和值,例如:
11
12 modprobe usbcore blinkenlights=1
13
14 内置于内核映像中的模块的模块参数
在内核命令行中以模块名称加
16 '.' 加参数名称指定,如果合适,带有 '=' 和值,例如:
17
18 usbcore.blinkenlights=1

它们之间没有关系,但是发现它们的时候觉得很有趣!

意味着是时候做出决定了!UEFI 还是键盘背光?

使用 UEFI 选项将允许安装 Ubuntu 的最新版本。

samsung-laptop 模块仅在以传统模式安装时与 12.04 3.2 内核或安装 <=3.2 内核的早期版本兼容。(来源:https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1170885) 另一个错误报告 (https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1012284)说

此错误已在软件包 linux - 3.2.0-27.43 中修复

答案3

为了使键盘背光功能键在搭载 Ubuntu 14.04(Trusty Tahr)的三星 9 系列 NP900X4B 型号上工作,请从 shell 提示符运行以下命令:

sudo setkeycodes e017 229
sudo setkeycodes e016 230

如果这些命令对您有用,那么您可能希望将它们放入 init 脚本中。我在 /etc/init 中有一个文件 set-kbdillum-keycodes.conf,内容如下:

# set-kbdillum-keycodes - set keycodes for keyboard illumination up/down keys
#
# This task is a workaround for a key mapping bug 
# in the Samsung Series 9 notebook model NP900X4B

description "set keycodes for keyboard illumination up/down keys"

start on (startup 
          and started udev)

task
script
    /usr/bin/setkeycodes e017 229
    /usr/bin/setkeycodes e016 230
end script

以上方法解决了 NP900X4B 上的问题。如果您有其他型号,并且此解决方案不适用于您的笔记本电脑,您可能想知道我如何获得 NP900X4B 的解决方案,并可能将其调整为您的笔记本电脑型号。

在发出两个 setkeycode 之前,如果我查看内核日志(通过在 shell 窗口中输入“tail -f /var/log/kernel.log”)并按下键盘背光功能键,我将看到如下消息

Aug  5 20:24:59 ubuntu kernel: [  152.458145] atkbd serio0: Unknown key pressed (translated set 2, code 0x97 on isa0060/serio0).
Aug  5 20:24:59 ubuntu kernel: [  152.458158] atkbd serio0: Use 'setkeycodes e017 <keycode>' to make it known.
Aug  5 20:25:01 ubuntu kernel: [  154.248439] atkbd serio0: Unknown key pressed (translated set 2, code 0x96 on isa0060/serio0).
Aug  5 20:25:01 ubuntu kernel: [  154.248452] atkbd serio0: Use 'setkeycodes e016 <keycode>' to make it known.

当我按下键盘背光降低键时,出现了第一对消息。当我按下键盘背光升高键时,出现了第二对消息。这就是我获得“使用 setkeycodes”提示以及扫描码值 e017 和 e017 的方式。这些扫描码值需要映射到键码值。我从 /usr/include/linux/input.h 中获得了相应的键码:

#define KEY_KBDILLUMDOWN        229
#define KEY_KBDILLUMUP          230

如果您有其他型号的笔记本电脑,则可能需要使用其他扫描码值。相应的键码值应该仍然相同,因为这些是 Linux 内核所知道的值。

答案4

终于找到解决这个问题的方法了!

诀窍是使用 CMS 模式而不是 UEFI 模式重新安装 Ubuntu。您可以在 BIOS 中更改此设置。我的设置为“UEFI 和 CMS”。但我将其更改为仅“CMS”并重新安装了 Ubuntu。现在我的键盘背光及其指示灯工作正常。

欢呼!

相关内容