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 / 问题 / 3899
Accepted
ændrük
ændrük
Asked: 2010-09-09 21:27:19 +0800 CST2010-09-09 21:27:19 +0800 CST 2010-09-09 21:27:19 +0800 CST

如何使 USB 鼠标的 xinput 鼠标设置持久化?

  • 772

我xinput用来更改 USB 鼠标的设置:

xinput set-ptr-feedback 'USB Optical Mouse' 4 1 1

拔下鼠标或重新启动后,如何使这些设置保持不变?

configuration mouse usb input-devices
  • 2 2 个回答
  • 9157 Views

2 个回答

  • Voted
  1. Best Answer
    Oli
    2010-09-10T00:51:41+08:002010-09-10T00:51:41+08:00

    您可以cron命令或将其添加到您的启动中,但都不是特别优雅。如果我是你,我会把它添加到我的 udev 规则中,让系统检测事件并在需要时触发命令。

    首先,我们需要鼠标供应商和产品字符串。您可以通过lsusb. 寻找你的鼠标。这是我的鼠标出现:

    Bus 004 Device 012: ID 1532:000f Razer USA, Ltd 
    

    在零件1532:000f中,1532是供应商并且000f是产品。

    那么我们给 udev 添加一个规则。udev 规则位于/lib/udev/rules.d/. 你可以自己写,也可以厚颜无耻地编辑另一个。里面还有一个有用的小自述文件,我建议你仔细阅读(cat /lib/udev/rules.d/README)。

    无论你想添加这样的规则。请注意,我使用之前的 ID 来完成这项工作。

    BUS=="usb", SYSFS{idVendor}=="1532", SYSFS{idProduct}=="000f", ACTION=="add",
    RUN+="/usr/bin/xinput set-ptr-feedback 'USB Optical Mouse' 4 1 1"
    

    udev应该立即拿起它。

    注意 udev 在配置设备时可以自己做一些非常聪明的事情。你可能根本不需要xinput。这是鼠标的自定义配置示例。

    • 7
  2. Riccardo Murri
    2010-09-10T00:49:36+08:002010-09-10T00:49:36+08:00

    除了启动一个小守护程序之外,我想不出其他解决方案,xinput --list它会在插入或移除设备时定期轮询并运行命令。

    示例代码:

    #! /bin/sh -x
    #
    # xievd [INTERVAL]
    #
    # Poll `xinput` device list every INTERVAL seconds (default: 10)
    # and run script in ~/.xievd/${device_name}.sh when a device is
    # plugged-in (or pulled out).
    #
    # The device name is the same as given by `xinput --list`, with
    # the following transformations applied:
    #   * any non-alphanumeric character is deleted (except: space, `_` and `-`)
    #   * leading and trailing spaces are removed
    #   * any sequence of 1 or more space chars is converted to a single `_`
    #
    
    interval=${1:-10}
    
    scripts_dir="$HOME/.xievd"
    if [ ! -d "$scripts_dir" ]; then
      echo 1>&2 "xievd: No scripts directory -- exiting."
      exit 1
    fi
    
    state_dir="$(mktemp -t -d xievd.XXXXXX)" \
      || { echo 1>&2 "xievd: Cannot create state directory -- exiting."; exit 1; }
    trap "rm -rf $state_dir; exit;" TERM QUIT INT ABRT
    
    process_xinput_device_list() {
      touch "${state_dir}/.timestamp"
    
      # find new devices and run "start" script
      xinput --list --short \
        | fgrep slave \
        | sed -r -e 's/id=[0-9]+.+//;s/[^a-z0-9 _-]//ig;s/^ +//;s/ *$//;s/ +/_/g;' \
        | (while read device; do 
            if [ ! -e "${state_dir}/${device}" ]; then
              # new device, run plug-in script
              [ -x "${scripts_dir}/${device}" ] && "${scripts_dir}/${device}" start
            fi
            touch "${state_dir}/${device}"
          done)
    
      # find removed devices and run "stop" script
      for d in "$state_dir"/*; do
        if [ "${state_dir}/.timestamp" -nt "$d" ]; then
          # device removed, run "stop" script
          device="$(basename $d)"
          [ -x "${scripts_dir}/${device}" ] && "${scripts_dir}/${device}" stop
          rm -f "$d"
        fi
      done
    }
    
    # main loop
    while true; do
          process_xinput_device_list
          sleep $interval
          sleep 1
    done
    
    # cleanup
    rm -rf "$state_dir"
    

    将上面的代码保存在xievdPATH 中某处的可执行文件中,将其添加到启动应用程序中,然后创建一个 ~/.xievd/USB_Optical_Mouseshell 脚本:

    #! /bin/sh
    if [ "$1" = "start" ]; then
      xinput set-ptr-feedback 'USB Optical Mouse' 4 1 1
    fi
    
    • 2

相关问题

  • 如何从命令行重置 USB 设备?

  • 如何在键盘上映射未映射的键?[关闭]

  • Ubuntu 和交互式媒体安装

  • 保持多个工作站同步

  • 什么可能会阻止 xrandr 屏幕之间的鼠标移动?[关闭]

Sidebar

Stats

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

    如何安装 .run 文件?

    • 7 个回答
  • Marko Smith

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

    • 24 个回答
  • Marko Smith

    如何获得 CPU 温度?

    • 21 个回答
  • Marko Smith

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

    • 25 个回答
  • Marko Smith

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

    • 7 个回答
  • Marko Smith

    更改文件夹权限和所有权

    • 9 个回答
  • Marko Smith

    你如何重新启动Apache?

    • 13 个回答
  • Marko Smith

    如何卸载软件?

    • 11 个回答
  • Marko Smith

    如何删除 PPA?

    • 26 个回答
  • Martin Hope
    NES 如何启用或禁用服务? 2010-12-30 13:03:32 +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
    Olivier Lalonde 如何在结束 ssh 会话后保持进程运行? 2010-10-22 04:09:13 +0800 CST
  • Martin Hope
    David B 如何使用命令行将用户添加为新的 sudoer? 2010-10-16 04:02:45 +0800 CST
  • Martin Hope
    Hans 如何删除旧内核版本以清理启动菜单? 2010-08-21 19:37:01 +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