У меня есть трекбол, и мне требуется 4 удара большим пальцем, чтобы перейти с одной стороны экрана на другую, даже если скорость установлена на макс. Я добавил xset m 200 1 в свои приложения автозагрузки, но недавно он перестал запускаться автоматически. Я должен вручную ввести эту команду в Терминале Можно ли установить эту скорость без этого обходного пути?
Спасибо за помощь
Чтобы исправить проблему с приостановкой / возобновлением, я наконец-то прибег к использованию crontab:
$ crontab -e
* * * * * DISPLAY=:0 xset m 2 2
Я знаю, что это не красиво, но это работает.
Не «Есть ли способ установить эту скорость без этого обходного пути?» - ответ. Но, возможно, некоторая помощь. Вы можете найти решение с помощью комментария @ 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, которое однозначно идентифицирует устройство. Он назначается устройству при его инициализации сервером. " i>
blockquote>Так что в скрипте при модификации используйте строковый вариант. (Возможно, это то, что не так с вашей старой конфигурацией?)
Это дает (для меня):
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 kbd>
gnome-session-properties
Enter kbd>.Или с помощью конфигурации 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
. Вы можете использовать более длительное время сна, чтобы быть уверенным.Изменено, чтобы скрипт в последний раз выполнялся, в соответствии с файлом журнала, но это не помогло - возможно, потому, что скрипты, кажется, выполняются в подоболочках - поэтому некоторый процесс из более раннего скрипта может выполняться после того, как последний скрипт выполняется.