Повтор клавиатуры / задержка сбрасывается при подключении USB-клавиатуры в Ubuntu 12.10 xfce

Каждый раз, когда я подключаю внешнюю клавиатуру к своему ноутбуку, повтор клавиатуры и задержка устанавливаются по умолчанию. Мой текущий способ - открыть диалоговое окно настроек клавиатуры и слегка переместить ползунок задержки. Это раздражает и случается со мной каждый день, поэтому я хотел бы найти лучшее / более быстрое решение.

Этот отчет об ошибке от Karmic именно то, что происходит со мной, но я запускаю xfce4 12.10, а не gnome на Karmic.

Можно ли написать скрипт для перезагрузки настроек xfce4 при каждом подключении USB-клавиатуры? (Правило udev?)

Любая помощь в решении этой проблемы приветствуется.

2
задан 8 May 2013 в 17:18

1 ответ

Я знаю, что это - датированная проблема, но она ВСЕ ЕЩЕ существует до сегодня. Посмотрите, например.

https://bugs.launchpad.net/ubuntu / + source/xfce4-settings / + ошибка/1180120

Пока xfce парни не могут получить это прямо, вот некоторые демонстрационные сценарии, которые могли использоваться для решения проблемы. Это относится к single-xfce4-session виду ситуаций (который покрывает большинство пользовательского случая), т.е. никакие два или три одновременных X сессий.

Первым является файл /etc/udev/rules.d/50-external-keyboard.rules, который вызывает другой сценарий на вставку конкретной клавиатуры USB (необходимо будет скорректировать idVendor и idProduct числа):

SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="071d", RUN+="/etc/udev/_Actions/x-keyboard-rates-launcher.sh"

Сценарий средства запуска является средством запуска прокси, которое отбрасывает полномочие к уровню пользователя из соображений безопасности. Сохраните это как /etc/udev/_Actions/x-keyboard-rates-launcher.sh и скорректируйте X_USER к своему имени:

#!/bin/sh
# Adapted from http://unix.stackexchange.com/questions/65891/how-to-execute-a-shellscript-when-i-plug-in-a-usb-device

# Set DEBUG to something non-null string if we want to debug the script.
DEBUG=
X_USER=wirawan
export DISPLAY=:0
export XAUTHORITY="/home/$X_USER/.Xauthority"

Log () {
  if [ -n "$DEBUG" ]; then
    echo "$*" >> /tmp/udev_test_action.log
  fi
}

Log "$ACTION : $(date)"

if [ "${ACTION}" = "add" ]
then
  if [ -n "$DEBUG" ]; then
    export
    su -c "/bin/sh /etc/udev/_Actions/x-keyboard-rates-user.sh $DISPLAY $X_USER >> /tmp/udev_test_action.$X_USER.log 2> /tmp/udev_test_action.$X_USER.err" $X_USER &
  else
    su -c "/bin/sh /etc/udev/_Actions/x-keyboard-rates-user.sh $DISPLAY $X_USER > /dev/null 2>&1" $X_USER &
  fi
fi

Затем это - реальный сценарий, которые повторно применяют Ваши параметры клавиатуры на основе Ваших собственных xfce настроек. Сохраните это как /etc/udev/_Actions/x-keyboard-rates-user.sh:

#!/bin/sh
# 20150318
# This script is supposed to run on the user level, not as the root.

if [ -n "$DEBUG" ]; then
  set -x
fi

X_USER=${2:-wirawan}
export DISPLAY=${1:-:0}
export XAUTHORITY=${3:-/home/$X_USER/.Xauthority}

is_x_running () {
# Detects whether the X server is up and running on the
# given display
  xdpyinfo > /dev/null 2>&1
}

is_user_session_up () {
# Detects whether the X session of interest is up
  pgrep xfce4-session -u $X_USER  > /dev/null 2>&1
}

get_keyboard_settings () {
  /usr/bin/xfconf-query -c keyboards -p /Default/KeyRepeat/Delay  \
    && /usr/bin/xfconf-query -c keyboards -p /Default/KeyRepeat/Rate 
}

apply_keyboard_settings () {
  if [ $# -eq 2 ]; then
    /usr/bin/xset r rate $1 $2
  else
    return 2
  fi
}

Log () {
  if [ -n "$DEBUG" ]; then
    echo "$*"
  fi
}

Log "$ACTION :user: $(date)"

if [ "${ACTION}" = "add" ]
then
  sleep 1s
  if is_x_running; then
    if is_user_session_up; then
      KB_SETTINGS=$(get_keyboard_settings) || {
        Log "Error: cannot get keyboard settings"
        exit 1
      }
      apply_keyboard_settings $KB_SETTINGS || {
        Log "Error: cannot apply keyboard settings"
        exit 1
      }
    else
      Log "Warning: target user session is not up; quitting"
    fi
  else
    Log "Warning: X is not running; quitting"
  fi
fi

Удачи!

Wirawan

1
ответ дан 8 May 2013 в 17:18

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

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