Как я могу ускорить мою мышь?

У меня есть трекбол, и мне требуется 4 удара большим пальцем, чтобы перейти с одной стороны экрана на другую, даже если скорость установлена ​​на макс. Я добавил xset m 200 1 в свои приложения автозагрузки, но недавно он перестал запускаться автоматически. Я должен вручную ввести эту команду в Терминале Можно ли установить эту скорость без этого обходного пути?

Спасибо за помощь

2
задан 11 January 2013 в 05:55

2 ответа

Чтобы исправить проблему с приостановкой / возобновлением, я наконец-то прибег к использованию crontab:

$ crontab -e

* * * * * DISPLAY=:0 xset m 2 2

Я знаю, что это не красиво, но это работает.

0
ответ дан 11 January 2013 в 05:55

Не «Есть ли способ установить эту скорость без этого обходного пути?» - ответ. Но, возможно, некоторая помощь. Вы можете найти решение с помощью комментария @ RickGreen-Turbo , но добавьте его.

Для идентификации мыши используйте:

$ xinput list
# or
$ xinput --list --short
    # Should give you something like:
    ⎡ Virtual core pointer                      id=2    [master pointer  (3)]
    ⎜   ↳ Virtual core XTEST pointer            id=4    [slave  pointer  (2)]
    ⎜   ↳ Logitech USB-PS/2 Optical Mouse       id=8    [slave  pointer  (2)]
    ⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
        ↳ Virtual core XTEST keyboard           id=5    [slave  keyboard (3)]
        ↳ Power Button                          id=6    [slave  keyboard (3)]
        ↳ Power Button                          id=7    [slave  keyboard (3)]
        ↳ AT Translated Set 2 keyboard          id=9    [slave  keyboard (3)]
        ↳ HP WMI hotkeys                        id=10   [slave  keyboard (3)]

В вашем случае это может быть что-то вроде Logitech USB Trackball.

Чтобы перечислить текущие настройки, скажите:

xinput --list-props [<id_number> | "String Identifier"]

Например. (в моем случае):

$ xinput --list-props 8
Or
$ xinput --list-props "Logitech USB-PS/2 Optical Mouse"

Не уверен насчет этого, но я предполагаю, что id может меняться между ботинками. Как указано здесь :

" Идентификатор - это число в диапазоне 0-128, которое однозначно идентифицирует устройство. Он назначается устройству при его инициализации сервером. "

Так что в скрипте при модификации используйте строковый вариант. (Возможно, это то, что не так с вашей старой конфигурацией?)

Это дает (для меня):


    Device 'Logitech USB-PS/2 Optical Mouse':
        Device Enabled (132):   1
        Coordinate Transformation Matrix (134): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        Device Accel Profile (261): 0
        Device Accel Constant Deceleration (262):   1.000000
        Device Accel Adaptive Deceleration (263):   1.000000
        Device Accel Velocity Scaling (264):    10.000000
        Device Product ID (251):    1133, 49181
        Device Node (252):  "/dev/input/event3"
        Evdev Axis Inversion (265): 0, 0
        Evdev Axes Swap (267):  0
        Axis Labels (268):  "Rel X" (142), "Rel Y" (143), "Rel Vert Wheel" (260)
        Button Labels (269):    "Button Left" (135), "Button Middle" (136), "Button Right" (137), "Button Wheel Up" (138), "Button Wheel Down" (139), "Button Horiz Wheel Left" (140), "Button Horiz Wheel Right" (141), "Button Side" (255), "Button Extra" (256), "Button Forward" (257), "Button Back" (258), "Button Task" (259), "Button Unknown" (254), "Button Unknown" (254), "Button Unknown" (254), "Button Unknown" (254)
        Evdev Middle Button Emulation (270):    0
        Evdev Middle Button Timeout (271):  50
        Evdev Third Button Emulation (272): 0
        Evdev Third Button Emulation Timeout (273): 1000
        Evdev Third Button Emulation Button (274):  3
        Evdev Third Button Emulation Threshold (275):   20
        Evdev Wheel Emulation (276):    0
        Evdev Wheel Emulation Axes (277):   0, 0, 4, 5
        Evdev Wheel Emulation Inertia (278):    10
        Evdev Wheel Emulation Timeout (279):    200
        Evdev Wheel Emulation Button (280): 4
        Evdev Drag Lock Buttons (281):  0

Найти значения Вы хотите изменить и добавить их в сценарий запуска.

Для тестирования, например:

$ xinput --set-prop 8 "Device Accel Velocity Scaling" 50
$ xinput --set-prop 8 "Device Accel Constant Deceleration" 1.5

Свойства (связанные):

  • Устройство Accel Adaptive Deceleration
  • Ускорение постоянного ускорения устройства
  • Профиль ускорения устройства
  • Масштабирование скорости ускорения устройства

равно ] задокументировано здесь . (Посмотрите на ту же страницу для получения дополнительной информации.)

Добавьте в файл хак, который работает для вашей мыши, и сохраните его, например, в. ~/.bin/my_mouse_hack

например:

#!/bin/bash
xinput --set-prop "Logitech USB Trackball" "Device Accel Velocity Scaling" 75
xinput --set-prop "Logitech USB Trackball" "Device Accel Constant Deceleration" 1.5

Сделать его исполняемым:

$ chmod 700 ~/.bin/my_mouse_hack

Сейчас: чтобы настроить его на запуск при запуске. Добавьте это к .bash_profile, как указано здесь . ( Я нахожусь в процессе работы, кодирования, компиляции и т. Д., Поэтому я не буду проверять это сейчас. Но я сделаю это позже и обновлю ответ. )

Или добавьте его, выбрав «Добавить» в (если вы используете GNOME):

Alt + F2 gnome-session-properties Enter .

Или с помощью конфигурации X11 или аналогичной.


РЕДАКТИРОВАТЬ 1: Приостановка причуда

У вас возникли проблемы с возобновлением после приостановки.

Когда компьютер входит или возобновляет режим ожидания / гибернации, он запускает сценарии, расположенные в /etc/pm/sleep.d и /usr/lib/pm-utils/sleep.d. man pm-action .

При переходе вниз сценарии запускаются с аргументом suspend или hibernate, при возобновлении аргумента равны resume и thaw соответственно - то есть: в вашем сценарии $ 1 является одним из четырех ]. [+1195]

Скрипты, иначе "hooks", в этих каталогах, AFAIK, делятся на два блока.

/usr/lib/pm-utils/sleep.d  Distribution / package provided hooks 
/etc/pm/sleep.d            Administrator provided hooks

Также; если вы хотите отключить скрипт, который находится в /usr/lib/pm-utils/sleep.d, создайте пустой файл в /etc/pm/sleep.d с тем же именем, а не сделайте его исполняемым.

Последний файл для упоминания - /var/log/pm-suspend.log. Этот файл содержит информацию о последних приостановках / спящем режиме и возобновлении / оттаивании - и по соглашению является хорошим местом для добавления вашей собственной регистрации. Это также хорошее место для поиска ошибок. Если скрипт завершается неудачно, он должен быть зарегистрирован здесь.

Простой скрипт 01_test:

#!/bin/bash

ts=$(date)

case "$1" in
"hibernate"|"suspend")
    printf "; %s: going down by \`%s'\n" "$ts" "$1" >> /var/log/pm-suspend.log
    ;;
"resume"|"thaw")
    printf "; %s: waking up by \`%s'\n" "$ts" "$1" >> /var/log/pm-suspend.log
    ;;
esac

Затем

$ sudo chmod 755 /etc/pm/sleep.d/01_test

Приостановите и проснитесь, войдите в журнал кошек и посмотрите:

$ cat /var/log/pm-suspend.log
; Sun Jan 13 06:38:14 CET 2013: going down by `suspend'.
...
; Sun Jan 13 06:38:19 CET 2013: waking up by `resume'.

OK. Это работает. Теперь вам нужно установить мышь с помощью xset и т. Д. Было бы заманчиво поверить, что простой строки, подобной

xset m 14/1 1

в скрипте из /etc/pm/sleep.d, будет достаточно, но если вы попытаетесь (нет вред, пытаясь), вы увидите некоторые ошибки в файле журнала. Есть как минимум две проблемы. 1: xset требуется display 2: корень, скорее всего, не имеет Xsession.

Чтобы решить эту проблему, можно указать пользовательскую среду и т. Д., Добавив вместо этого строку, подобную этой:

su YOUR_USERNAME -c "xset -display :0 m 14/1 1"

, но, поскольку это глобальный сценарий, можно предположить, что он будет немного сложнее. Этот скрипт проверяет пользователей, которые вошли в систему и имеют отображение: 0, проверяет, есть ли у них исполняемый файл в /home/user/bin/ с именем .resume, который является исполняемым; если это так, то он выполняет

01_user_resume:

#!/bin/bash

# Time(stamp)
ts=$(date)
# Log file
log="/var/log/pm-suspend.log"
# Array of Users
#   Users (finger/who/w ... etc)
#   Having Xsession (:0)
#   Unique
declare -a users=($(/usr/bin/finger | \
        /bin/grep ':0'| \
        /bin/grep -o '^\w*' | \
        /usr/bin/uniq))
# Array of scritps to look for (using array as it is easy to extend)
declare -a user_scripts_resume=(".resume")

# Run resume script fo all users with X session
run_user_scripts_resume()
{
    local user  # Each user
    local home  # Users home
    local scr   # Script to check for and run
    for user in "${users[@]}"; do
        printf ";; For User: %s.\n" "$user" >> "$log"
        # Identify users home directory
        home=$(/usr/bin/getent passwd "$user" | cut -d: -f6)
        # If user has a file called $HOME/bin/<sctipt> and it is 
        # executable then run it
        for scr in "${user_scripts_resume[@]}"; do
            if [ -f "$home/bin/$scr" ] && [ -x "$home/bin/$scr" ]; then
                printf ";;   Executing: $home/bin/$scr\n" >> "$log"
                # DISPLAY is needed by e.g. xset
                /bin/su "$user" -c "export DISPLAY=:0; $home/bin/.resume"
            fi
        done
    done
}

case "$1" in
"hibernate"|"suspend")
    printf "; %s: going down by \`%s'.\n" "$ts" "$1" >> "$log"
# Nothing to do
    ;;
"resume"|"thaw")
    printf "; %s: waking up by \`%s'.\n" "$ts" "$1" >> "$log"
    printf "; Executing User resume scripts.\n" >> "$log"
    run_user_scripts_resume
    ;;
esac

Итак:

  • Добавить этот скрипт в файл в /etc/pm/sleep.d/01_user_resume .
  • Сделайте его исполняемым: sudo chmod 755 /etc/pm/sleep.d/01_user_resume

В вашем домашнем каталоге создайте файл bin/.resume - и добавьте, например, ( err , см. Редактирование 2 ниже):

#!bin/bash

sleep 3  # See note on EDIT 2: below    
xset m 15/1 1

Сделать его исполняемым: chmod 700 bin/.resume

Или, лучше, использовать тот же скрипт для загрузки и возобновления - aka re - запустить скрипт, который вы использовали для установки мыши при загрузке.

Приостановить и возобновить. Проверьте, изменились ли настройки с помощью:

xset q
# or
xset q | grep -A 1 Pointer

РЕДАКТИРОВАТЬ 2: перемещение мыши

При проверке этого кажется, что есть еще одна проблема. Команда xset q | grep -A 1 Pointer показывает, что настройки изменены, проблема в том, что, как только мышь используется, она возвращается. Для меня это было исправлено добавлением sleep 1 перед xset в скрипте .resume. Вы можете использовать более длительное время сна, чтобы быть уверенным.

Изменено, чтобы скрипт в последний раз выполнялся, в соответствии с файлом журнала, но это не помогло - возможно, потому, что скрипты, кажется, выполняются в подоболочках - поэтому некоторый процесс из более раннего скрипта может выполняться после того, как последний скрипт выполняется.

0
ответ дан 11 January 2013 в 05:55

Другие вопросы по тегам:

Похожие вопросы: