Постійно встановлені параметри розкладки клавіатури за допомогою setxkbmap в gnome / unit


28

Ubuntu 13.10 1 (і, можливо, вгору за течією gnome) представив дуже докучливу помилку : натискання комбінації клавіш розмикання клавіатури змушує фокус відійти в якесь системне вікно, а потім назад у вікно, де натискали ярлик. Деякі програми мають деякі дії, пов'язані зі зміною фокусу, наприклад, twitter (у браузері) закриває поле для введення тексту відповіді при втраті фокусу і т. Д. Тож рідний перемикач клавіатури ubuntu не підходить для мене, поки не буде виправлено.

X має вбудований механізм комутації, і це набагато краще, окрім того, що він не передбачає перемикання фокусу, він перемикається негайно (гном-комутатор також іноді відстає).

Як я можу налаштувати параметри 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 config:

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

введіть тут опис зображення

У мене є 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

введіть тут опис зображення

Налаштування org.gnome.settings-daemon.peripherals.keyboardтакож не працює для мене. Нічого не змінюється.

Оновлення 1 : Існує дискусія, яка рекомендує видалити /usr/lib/gnome-settings-daemon-3.0/libkeyboard.so. Принаймні, це виправляє деякі скидання xkbmap (тобто після блокування екрана).

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


Ви намагалися правильно встановити макет у gnome, а потім додали дві setxkbmapкоманди до свого ~/.profile? Таким чином, вони будуть запускатися щоразу, коли ви входите в систему, і оскільки ті самі налаштування є в Gnome, він не повинен нічого змінювати, якщо він буде скинутий.
terdon

1
@terdon він скидається навіть після блокування екрана. І він скидає стан "тільки для нас, без переключення", не для налаштувань, визначених у org.gnome.desktop.input-sources.
Колен

Дивно. Ви впевнені , що використовуєте Gnome, а не Unity? Ви намагалися змінити налаштування через звичайний графічний інтерфейс замість dconf-editor?
тердон

@terdon так, це єдність, але він використовує втрачені речі gnome, як-от gnome-settings-daemon, який, можливо, скидає ключову карту.
колен

Отже, ви спробували встановити правильні налаштування з GUI Unity?
тердон

Відповіді:


19

Для запобігання скидання налаштувань клавіатури gnome в X я використовую цю команду:

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

Це працює для мене.


4
Я спробував це на Ubuntu 14.04, і він нічого не робить. Чи є у вас пояснення: як це має працювати?
Микола Лещів

2
Працює для мене в 14.04
ndemou

2
Працює для мене в 16.04, після того як спробувати все інше.
Леонардо Кастро

1
Єдиний метод, який я знайшов, працюючи в 17.04.
Cnly

1
Майте на увазі, що Ubuntu фактично створив демон-параметри єдності протягом певного періоду часу, але тепер, коли вони знову повертаються до Gnome, це може продовжувати працювати.
dragon788

6

Я над цим вийшов, як і ви, але з Ubuntu 14.04 (LTS), Xubuntu, xfce 4.12 та xkbd (від xfce goodies). 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, щоб змінити розкладку клавіатури.


1
Чому ви рекомендуєте використовувати xfce4-keyboard-settingsу питанні запитання про допомогу з гномом / єдністю, зокрема?
Микола Лещів

2

Я просто прочитав цю статтю про блокування екрана, яка може бути пов’язана. Згідно зі статтею, блокування екрана має передбачуваний наслідок блокування пристроїв введення та маніпулювання локалями. Здається, у вас є кілька варіантів:

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

Існує цікава дискусія щодо цього та пов’язаних з ним подій, які можна знайти у списку розсилки ubuntu-dev: https://lists.ubuntu.com/archives/ubuntu-devel/2013-November/037768.html


1

Обхід користувачем wof в трекер помилок Ubuntu, для Ubuntu 14.10 за допомогою gxkb :

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

це рішення працювало для ubuntu 14.10:

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

ps нова версія gxkb має додаток для ubuntu. можна встановити через ppa: zen-root / gxkb-stable


(Ще не пробував)
колен

E: Неможливо знайти пакет gxkb
e18r

0

По-перше, просто виконавши setxkbmap:

setxkbmap -layout "us, ru" setxkbmap -option "grp: caps_toggle, grp_led: прокрутка, складання: ralt"

Але це працює лише:

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

Що ж, наскільки Gnome "скидає" це я не знаю. Я знаю, як ви можете зупинитися на кожному перезавантаженні, хоча, як і мені довелося робити той самий тип речей для своєї миші 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

далі ви збережете це як завгодно ім'я та перемістіть його в якесь місце, наприклад, у домашній каталог. він повинен залишитися там "назавжди".

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.