我购买了三星新系列 9 超极本 (NP900X3C)。我安装了 ubuntu 12.04 和主线 3.5 内核。几乎一切都运行良好,除了一些重要的功能键不起作用。
屏幕亮度和键盘背光的按键不起作用,这非常烦人。我手动添加了此笔记本电脑型号所需的新键盘映射(指南:http://jablonskis.org/2012/linux-and-samsung-series-laptop-9-fn-keys/),但系统不会加载它们。
我在 udev 规则中添加了以下几行:
# /lib/udev/rules.d/95-keymap.rules
ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="*900X3*", RUN+="keymap $name samsung-900x3c"
# /lib/udev/rules.d/95-keyboard-force-release.rules
ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="*900X3*", RUN+="keyboard-force-release.sh $devpath samsung-900x3c"
系统无法加载选择正确的键盘映射所需的 dmi 信息 (是吗?)。工具 dmidecode 返回以下信息:
# dmidecode 2.11
# SMBIOS entry point at 0xdac66000
SMBIOS 2.7 present.
64 structures occupying 2917 bytes.
Table at 0x000E0840.
Invalid entry length (0). DMI table is broken! Stop.
有人知道我该如何修复 dmi 问题(如果这是个问题的话)或者我该如何强制 udev 加载我的自定义键盘映射吗?
答案1
为了让 fn 键正常工作,我首先必须更新 BIOS(安装 Windows、更新 BIOS、再次安装 ubuntu -> 非常有趣!)因为 ubuntu 无法读取加载供应商特定配置和模块所需的 dmi 数据。您可以使用“dmidecode”工具检查 dmi 数据是否可访问,该工具应该会返回大量数据(参见其他答案):
$ sudo dmidecode
我将内核更新为版本 3.5.3因为它已经编译了一些必需的三星模块。
我还创建了两个键盘映射文件,并添加了两个 udev 规则,如博客中所述Linux 和三星 9 系列笔记本电脑 Fn 键。您必须替换一些模块特定的字符串(90X3A > 900X3C*、90x3a > 900x3c),如下所述。
# /lib/udev/keymaps/samsung-900x3c
0x96 kbdillumup # Fn+F8 keyboard backlit up
0x97 kbdillumdown # Fn+F7 keyboard backlit down
0xD5 wlan # Fn+F12 wifi on/off
0xCE prog1 # Fn+F1 performance mode (?)
0x8D prog2 # Fn+F6 battery life extender
#/lib/udev/keymaps/force-release/samsung-900x3c
# forces key release
0xCE # Fn+F8 keyboard backlit up
0x8D # Fn+F7 keyboard backlit down
0x97 # Fn+F12 wifi on/off
0x96 # Fn+F1 performance mode (?)
0xD5 # Fn+F6 battery life extender
在其他与三星相关的行下面添加这一行
# /lib/udev/rules.d/95-keymap.rules
ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="900X3C*", RUN+="keymap $name samsung-900x3c"
在其他与三星相关的行下面添加这一行
# /lib/udev/rules.d/95-keyboard-force-release.rules
ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="900X3C*", RUN+="keyboard-force-release.sh $devpath samsung-900x3c"
键盘背光和屏幕亮度的 fn 键现在可以使用了。wifi 和性能模式键仍然不起作用。您可能需要按照上述博客中的说明进行操作。
答案2
也许是因为 3.5 内核。我有一台同样的计算机,内核是 3.2.0-29(建议的内核),dmidecode 没问题:
$ sudo dmidecode
SMBIOS 2.7 present.
64 structures occupying 2917 bytes.
Table at 0x000E0840.
Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
Vendor: Phoenix Technologies Ltd.
Version: P02AAC
Release Date: 06/01/2012
Address: 0xE0000
Runtime Size: 128 kB
ROM Size: 3072 kB
Characteristics:
PCI is supported
BIOS is upgradeable
BIOS shadowing is allowed
Boot from CD is supported
Selectable boot is supported
EDD is supported
Print screen service is supported (int 5h)
8042 keyboard services are supported (int 9h)
...