AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 33038
In Process
Martin Ueding
Martin Ueding
Asked: 2011-04-02 12:47:50 +0800 CST2011-04-02 12:47:50 +0800 CST 2011-04-02 12:47:50 +0800 CST

如何让 Microsoft Natural Ergonomic Keyboard 4000 的缩放滑块(和其他按钮)工作?

  • 772

我在 Ubuntu 10.10 上使用 Microsoft Natural Ergonomic Keyboard 4000。多媒体键(音量、播放/暂停)、邮件和计算器按钮也有效。

现在我很想使用缩放滑块,如果可能的话,我想使用页面滚动。有什么方法可以实现吗?

microsoft-keyboard
  • 5 5 个回答
  • 23216 Views

5 个回答

  • Voted
  1. Kees Cook
    2013-04-17T08:55:51+08:002013-04-17T08:55:51+08:00

    /etc/udev/rules.d/98-ms-ergo.rules使用以下内容创建文件:

    ACTION=="remove", GOTO="keyboard_end"
    KERNEL!="event*", GOTO="keyboard_end"
    ENV{ID_INPUT_KEY}=="", GOTO="keyboard_end"
    SUBSYSTEMS!="usb", GOTO="keyboard_end"
    
    SUBSYSTEMS=="usb", IMPORT{builtin}="usb_id"
    
    ENV{ID_VENDOR}=="Microsoft", ENV{ID_MODEL_ID}=="00db", RUN+="keymap $name 0xc022d pageup 0xc022e pagedown"
    
    GOTO="keyboard_end"
    

    这会将缩放键映射到向上/向下翻页,而无需更改/lib/udev.

    添加后,您只需拔下并重新插入键盘即可开始工作。

    • 18
  2. Konstantin K.
    2013-11-05T00:34:15+08:002013-11-05T00:34:15+08:00

    在 Xubuntu 13.10 上(也许在 Ubuntu 13.10 上也是如此)可以按如下方式执行相同的操作:

    编辑键映射/lib/udev/hwdb.d/60-keyboard.hwdb:

    ###########################################################
    # Microsoft
    ###########################################################
    
    # Microsoft Natural Ergonomic Keyboard 4000
    keyboard:usb:v045Ep00DB*
     KEYBOARD_KEY_c022d=pageup
     KEYBOARD_KEY_c022e=pagedown
    

    跑 sudo udevadm hwdb --update

    重启。

    • 10
  3. Kobayashi
    2016-08-27T04:24:26+08:002016-08-27T04:24:26+08:00

    为了配置Microsoft 人体工学键盘 4000,我们必须创建一个配置文件,其中包含键盘声明和映射键的记录。

    为此,我们需要确定三种类型的信息:

    • 键盘类型
    • 键scancode是键盘上的实际键
    • 将name所需功能分配给所选键的键

    首先找到键盘类型:

    在终端中运行以下命令:

    lsusb 
    

    输出确定键盘类型:

    ...
    Bus 004 Device 022: ID 045e:00db Microsoft Corp. Natural Ergonomic Keyboard 4000 V1.0
    ...    
    

    它出现在 之后ID。在这种情况下045e:00db

    其次找到扫描码和密钥的名称。

    为了确定它们,我们使用evtest在终端上注销特定设备的事件信息的程序:

    evtest
    

    如果您没有该程序,请运行以下命令来安装它:

    sudo apt-get install evtest
    

    通过运行evtest程序,我们得到以下输出:

    No device specified, trying to scan all of /dev/input/event* Available devices: 
    /dev/input/event0:    Power Button     
    /dev/input/event1:    Power Button     
    /dev/input/event2:    PixArt USB Optical Mouse   
    /dev/input/event3:    Microsoft Natural® Ergonomic Keyboard 4000   
    /dev/input/event4:    Microsoft Natural® Ergonomic Keyboard 4000   
    /dev/input/event5:    HDA Intel Front Headphone     
    /dev/input/event6:    HDA Intel Line Out     
    /dev/input/event7:    HDA Intel Line   
    /dev/input/event8:    HDA Intel Rear Mic     
    /dev/input/event9:    HDA Intel Front Mic     
    /dev/input/event10:   HDA ATI HDMI HDMI/DP,pcm=3
    Select the device event number [0-10]:
    

    输出几乎是不言自明的,为键盘插入适当的数字,这里是数字,3然后按 Enter:

    这样做会在终端上输出大量信息,并以以下几行结尾:

    ... 
    
    Testing ... (interrupt to exit)
    Event: time 1472203902.240594, type 17 (EV_LED), code 0 (LED_NUML), value 0
    Event: time 1472203902.240594, -------------- SYN_REPORT ------------
    Event: time 1472203902.281456, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70058
    Event: time 1472203902.281456, type 1 (EV_KEY), code 96 (KEY_KPENTER), value 0
    Event: time 1472203902.281456, -------------- SYN_REPORT ------------
    

    现在,随着键盘上的每一次按键,它都会输出关键信息。例如,右 Shift 旁边的斜杠键显示:

    Event: time 1472205062.294078, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70038
    Event: time 1472205062.294078, type 1 (EV_KEY), code 12 (KEY_SLASH), value 0
    Event: time 1472205062.294078, -------------- SYN_REPORT ------------
    

    日志的第一行包含有关键盘上实际键的信息,例如scancode值之后的键。在这种情况下,它是70038

    第二行包含分配的功能信息,例如键名。在这种情况下,它是SLASH。检查其他键以找到它们的适当名称。

    简而言之:

    • 我们的键盘类型是:045e:00db
    • Slash 键的扫描码是:70038
    • 分配的键名是SLASH

    收集必要信息后,我们创建配置文件:

    sudoedit /etc/udev/hwdb.d/61-keyboard-local.hwdb
    

    点击i以激活插入模式并键入以下内容:

    keyboard:usb:v045Ep00DB*
     KEYBOARD_KEY_70038=minus      
    

    按escape然后键入:wq并按回车键保存并退出。

    然后运行以下两条命令使配置生效:

    sudo udevadm hwdb --update
    sudo udevadm control --reload
    

    最后拔掉键盘,重新插上。

    关于配置文件的一些注意事项:

    • 文件的格式应该完全如图所示,映射记录前的空间很关键。
    • 除了sudoedit您可以使用任何其他文本编辑器外,您只需记住遵循上述文件的确切格式即可。
    • 键盘类型中添加了两个字符:分别代表供应商v和p产品。它们也很重要。
    • 键盘类型在配置文件中是大写的。我们的键盘类型是045e:00db但在配置中我们插入v045Ep00DB*
    • 密钥的扫描码紧随其后KEYBOARD_KEY_
    • 键名在配置文件中以小写形式出现
    • 按照本教程,您几乎可以自定义键盘上的每个键。
    • 5
  4. desgua
    2011-04-02T17:54:14+08:002011-04-02T17:54:14+08:00

    问题是evdev 驱动程序忽略了keycodes > 255。
    感谢Marco Chiappero的解决方案:

    1)你必须定义你需要的所有重新映射(以
    “扫描码键码”列表)并将它们放在“/lib/udev/keymaps/”下的文件中
    (例如,我在那里创建了 logitech-lx710-cordless)。你可以找到
    使用 evtest 扫描代码(“sudo evtest /dev/input/eventX”,其中 X 是您的
    键盘设备。小心,有时这些额外的密钥会通过
    不同的设备或您的鼠标界面:例如。事件3--> kbd,事件4-->
    鼠标和额外的键)。这里有一些示例输出:
    
    事件:时间 1294153475.909379,类型 4(Misc),代码 4(ScanCode),值 c1028
    "c1028" 是您要放置在键盘映射文件中的扫描码值,然后
    如前所述,从 input.h 中提取一个数字并将其转换为
    十六进制。然后在您的文件中写入重映射对,可能带有描述性
    评论,像这样:
    
    0xC1028 0x9a # 旋转按钮
    
    迭代每个 > 255 的键。
    
    2) 你必须告诉 udev 每次遇到这个重映射文件时都应用它
    你的键盘,所以编辑“/lib/udev/rules.d/95-keymap.rules”文件添加
    与您的硬件匹配的 udev 规则。请不要让我定义规则
    你。
    注意:您可以通过自己键入立即应用您的键盘映射文件
    “sudo /lib/udev/keymap /dev/input/eventX /lib/udev/keymaps/$YOUR_FILE”和
    再次使用 evtest 进行验证。
    
    现在,您可以使用 Gnome 快捷方式编辑器查看按键现在
    可在 X 中使用并创建新的快捷方式。然而,它可能会发生,没有
    keysym 分配给该键码(因此您将看到 0xXY 而不是 XF86Foo)。
    您可以通过 xmodmap -pke 查看当前映射,将输出保存到
    文件并在需要时对其进行编辑(完整的键符代码列表可在
    “/usr/lib/X11/XKeysymDB”)。
    将键符添加到重新映射的键后,您可以保存此文件
    作为 ~/.Xmodmap (或 /etc/X11/Xmodmap 如果您希望应用于每个用户)。
    • 3
  5. niclas
    2012-02-21T00:25:28+08:002012-02-21T00:25:28+08:00

    在我的机器上,额外的键(主页、搜索、计算等)和缩放输入是通过 /dev/input/event5 发送的,而普通键是通过 /dev/input/event4 发送的。缩放键值与 queueoverflow 一致。

    • 0

相关问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    我需要什么命令来解压缩/提取 .tar.gz 文件?

    • 8 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Marko Smith

    如何使用命令行将用户添加为新的 sudoer?

    • 7 个回答
  • Marko Smith

    更改文件夹权限和所有权

    • 9 个回答
  • Martin Hope
    EmmyS 我需要什么命令来解压缩/提取 .tar.gz 文件? 2011-02-09 14:50:41 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve