1

Я пользуюсь ноутбуком с альтернативной международной (ранее американской) раскладкой в США и USB-клавиатурой Microsoft Curve с бразильской раскладкой, когда я за столом.

Что я хотел бы, так это переключать раскладки автоматически при обнаружении USB-клавиатуры вместо того, чтобы переходить к настройкам вручную каждый раз, когда я покидаю рабочий стол. Есть ли такой способ в Ubuntu 9.04?

3 ответа3

2

В решении есть три компонента, которые позволят вам менять раскладку клавиатуры:

  1. Определите, когда клавиатура подключена
  2. Определить раскладку на клавиатуре
  3. Установите макет вашей системы в соответствии с раскладкой клавиатуры.

1. Определите, когда клавиатура подключена

Все аппаратные изменения отправляются демону шины сообщений D-Bus.

D-Bus - это система шин сообщений, простой способ для приложений общаться друг с другом. В дополнение к межпроцессному взаимодействию, D-Bus помогает координировать жизненный цикл процесса; это делает его простым и надежным для кодирования приложения или демона "одного экземпляра", а также для запуска приложений и демонов по требованию, когда требуются их сервисы.

D-Bus предоставляет как системный демон (для таких событий, как "добавлено новое аппаратное устройство" или "очередь принтера изменена"), так и демон для сеанса входа в систему для пользователя (для общих потребностей IPC среди пользовательских приложений).

Вы можете отслеживать события, отправленные по шине D-Bus, с помощью команды dbus-monitor :

dbus-monitor --system #show all events
dbus-monitor --system --profile 'interface=org.freedesktop.Hal.Manager' # filter: only events sent by Hal
dbus-monitor --system --profile 'interface=org.freedesktop.Hal.Manager, member=DeviceAdded' # filter: only DeviceAdded events sent by Hal

Подключите клавиатуру и следите за сообщениями. Это должно дать вам представление о фильтре, который вам необходим для обнаружения подключенной или отключенной клавиатуры. Вам также необходимо более подробно ознакомиться с использованием dbus-монитора .

2. Определить раскладку клавиатуры

Как только клавиатура подключена к системе, HAL (Уровень аппаратной абстракции) настраивает ее. Вы можете получить эту информацию, используя команду hal-get-property, как только вы определили ключ, который вам нужен. Например, в моей системе:

$ hal-get-property --udi /org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port_logicaldev_input --key "input.xkb.layout"
gb
$ hal-get-property --udi /org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port_logicaldev_input --key "input.xkb.model"
pc105

Посмотрите на этот ответ для подробного объяснения того, как получить значения из HAL: настройка профилей процессов в Ubuntu. Я думаю, что сообщение D-Bus может дать вам настроенный узел HAL для подключенного устройства, но я не уверен. Если нет, вы знаете, что он будет в любом из двух мест - в соответствии с одной из двух клавиатур.

3. Выберите раскладку вашей системы в соответствии с раскладкой клавиатуры

Джо уже указал, как вы можете сделать это с помощью xmodmap.

0

Я не знаю об этом. Но это моя работа, которую я использовал, чтобы решить (переключиться с нас на Великобританию)

sudo xmodmap /usr/share/xmodmap/xmodmap.uk
0

Я предполагаю, что это может быть возможно с использованием некоторых HAL-директив.

Однако вам не нужно заходить в "Настройки" каждый раз, когда вы хотите переключить макеты. Почему бы вам просто не добавить апплет "Индикатор клавиатуры" на свою панель? Это всего лишь один щелчок мышью.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .