it-roy-ru.com

Постоянно устанавливать параметры раскладки клавиатуры с помощью setxkbmap в gnome / unity

Ubuntu 13.101 (и, возможно, вышестоящий гном) введен очень досадная ошибка : нажатие сочетания клавиш на клавиатуре приводит к тому, что фокус перемещается в какое-то системное окно, а затем обратно в окно, где был нажат ярлык. Некоторые приложения имеют некоторые действия, связанные с изменением фокуса, например, Twitter (в браузере) закрывает поле ввода текста ответа при потере фокуса и т.д. Поэтому встроенный переключатель клавиатуры в Ubuntu мне не подходит, пока не исправлено.

X имеет встроенный механизм переключения, и он намного лучше, к тому же он не включает переключение фокуса, он переключается немедленно (переключатель gnome также иногда отстает).

Как настроить параметры xkbmap, чтобы параметры сохранялись после перезагрузки и не были сброшены Gnome?

Что я пробовал:

Во-первых, просто выполните setxkbmap:

setxkbmap -layout "us,ru"
setxkbmap -option "grp:caps_toggle,grp_led:scroll,compose:ralt"

Но это работает только:

  1. Для текущей сессии
  2. Пока Gnome не перезапишет его (например, прикосновение к чему-либо в сбросе триггеров org.gnome.desktop.input-sources gconf).

Во-вторых, добавив параметры xkb в конфигурацию Xorg:

Другой вариант - добавить следующее в конфигурацию xorg:

Section "InputClass"
        Identifier "system-keyboard"
        MatchIsKeyboard "on"
        Option "XkbLayout" "us,ru"
        Option "XkbModel" "pc105"
        Option "XkbVariant" "pc105"
        Option "XkbOptions" "grp:rctrl_toggle,grp_led:scroll"
EndSection

Xorg понимает, что во время запуска:

[    33.791] (**) Option "xkb_rules" "evdev"
[    33.791] (**) Option "xkb_model" "pc105"
[    33.791] (**) Option "xkb_layout" "us,ru"
[    33.791] (**) Option "xkb_variant" "pc105"
[    33.791] (**) Option "xkb_options" "grp:rctrl_toggle,grp_led:scroll"

Но конфигурация переключения все еще сбрасывается позже, вероятно, по Gnome.

В-третьих, gconf

enter image description here

У меня xkb-options и sources установлены в org.gnome.desktop.input-sources, но Gnome по-прежнему устанавливает xkb в единый английский макет:

$ setxkbmap -print -verbose 10
Setting verbose level to 10
locale is C
Trying to load rules file ./rules/evdev...
Trying to load rules file /usr/share/X11/xkb/rules/evdev...
Success.
Applied rules from evdev:
rules:      evdev
model:      pc105
layout:     us
options:    grp_led:scroll
Trying to build keymap using the following components:
keycodes:   evdev+aliases(qwerty)
types:      complete
compat:     complete+ledscroll(group_lock)
symbols:    pc+us+inet(evdev)
geometry:   pc(pc105)
xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete+ledscroll(group_lock)"    };
    xkb_symbols   { include "pc+us+inet(evdev)" };
    xkb_geometry  { include "pc(pc105)" };
};

В-четвертых, еще один вариант в gconf

enter image description here

Установка org.gnome.settings-daemon.peripherals.keyboard также не работает для меня. Ничего не меняется.

Upd 1 : есть обсуждение рекомендует удалить /usr/lib/gnome-settings-daemon-3.0/libkeyboard.so. По крайней мере, это исправляет некоторые сбросы xkbmap (то есть после блокировки экрана).

1 Я использую 14.04, но проблема с потерей фокуса все еще не устранена. ( Неподтвержденный отчет в вышестоящем Gnome )

26
kolen

Чтобы предотвратить сброс настроек клавиатуры в X, я использую эту команду:

gsettings set org.gnome.settings-daemon.plugins.keyboard active false

Это работает для меня.

17
Iasha102

Я сходил с ума по этому поводу, как и вы, но с Ubuntu 14.04 (LTS), Xubuntu, xfce 4.12 и xkbd (из положительных героев xfce). Ctrl + Пробел для изменения раскладки клавиатуры работал, а Alt + Shift - нет (клавиши только для модификаторов).

Наконец-то удалось заставить вещи работать

1. Run ibus-setup (Keyboard Input Methods application).
2. Goto Advanced tab.
3. Check 'Use system keyboard layout'.
4. Click 'Close'

5. Run xfce4-keyboard-settings (Keyboard application).
6. Goto Layout tab.
7. Uncheck 'Use system defaults'
8. Select 'Keyboard model' (typically 'Generic 105-key (Intl) PC' will do)
9. Set 'Change layout option' to your required switching keys combination (typically Alt+Shift will do).
10. Add languages to 'Keyboard layout'.
11. Click 'Close'.
12. Restart the computer

Вы сделали! Используйте Alt + Shift, чтобы изменить раскладку клавиатуры.

5
Oron Port

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

  1. Прекратите блокировку экрана, возможно, это относится и к экрану приветствия, который выполняет аналогичную функцию
  2. Используйте разные инструменты управления питанием
  3. Прекратите использовать ibus для им-переключения (возможно, FCITX?)
  4. Создайте ловушку для событий разблокировки экрана, как описано здесь .

Существует интересное обсуждение этого и связанных событий, которое можно найти в списке рассылки ubuntu-dev: https://lists.ubuntu.com/archives/ubuntu-devel/2013-November/037768.html

2
Hawk

Временное решение для пользователя wof в системе отслеживания ошибок Ubuntu, для Ubuntu 14.10 с помощью gxkb :

https://bugs.launchpad.net/gnome-settings-daemon/+bug/1244090/comments/39

этот обходной путь работал для Ubuntu 14.10:

  • в Настройки-> Ввод текста удали все источники ввода, оставь только английский
  • установить gxkb (переключатель компоновки): Sudo apt-get установить gxkb
  • добавить gxkb для запуска приложений через gnome-Tweak-tool
  • установить горячие клавиши gxkb в ~/.config/gxkb (по умолчанию alt_shift, но в 14.10 он не работает. ctrl_shift работает нормально)

постскриптум новая версия gxkb имеет аппендикатор для Ubuntu. можно установить через ppa: zen-root/gxkb-stable

1
kolen

Во-первых, просто выполните setxkbmap:

setxkbmap -layout "us, ru" setxkbmap -option "grp: caps_toggle, grp_led: scroll, compose: ralt"

Но это работает только:

For current session
Until Gnome will overwrite it (for example touching something in gconf's org.gnome.desktop.input-sources triggers reset).

Ну, насколько Гном "сбросить" это я не знаю. Я знаю, как можно избежать каждой перезагрузки, хотя мне приходилось делать то же самое для моей мыши Logitech. Он имеет несколько кнопок, которые я хотел переназначить определенным образом, и я должен был установить этот набор при перезапуске.

Итак, для этого вы создаете текстовый файл. Затем в этом текстовом типе файла:

#!/bin/bash

и прямо под этим положите в ваших командах. В качестве примера моя мышь выглядит так:

#!/bin/bash
xinput set-button-map "Logitech USB-PS/2 Optical Mouse" 1 2 3 4 5 8 9 6 7 10 11 12 13 14 15 16

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

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

0
David