kbdd icon indicating copy to clipboard operation
kbdd copied to clipboard

Некорректное переключение раскладок

Open spijet opened this issue 8 years ago • 12 comments

Прежде всего хочу сказать спасибо за эту утилиту, без неё уже давно как без рук. :)

Использую git-версию kbdd. Сразу после запуска всё работает как положено, раскладки запоминает верно. Через какое-то время (два-три часа, иногда больше) раскладка начинает сбрасываться на русскую при каждом (или почти каждом, но реже) переключении окон. Т.е. состояние такое:

  • Открываю терминал -- раскладка английская;
  • Открываю ещё один -- переключается на русскую;
  • Переключаюсь обратно на английскую, после чего перехожу на первый терминал -- раскладка снова русская;
  • Rinse and repeat.

Версия демона и пакета, собранного из git, конфиг клавиатуры в Xorg:

~ kbdd -v
kbdd 0.7.1, see -h/--help for brief info                                                                                                                                                                                                                                                                                                                            
~ yaourt -Q | grep kbdd              
local/kbdd-git 0.7.1.r8.g0e1056f-1
~ cat /etc/X11/xorg.conf.d/00-keyboard.conf
Section "InputClass"
        Identifier "system-keyboard"
        MatchIsKeyboard "on"
        Option "XkbLayout" "us,ru"
        Option "XkbModel" "pc105"
        Option "XkbVariant" ","
        Option "XkbOptions" "grp:alt_shift_toggle,grp_led:caps,ctrl:nocaps"
EndSection

Дистрибутив Arch Linux x86_64, WM -- herbstluftwm 0.7.0-1 из реп дистрибутива. К сожалению, на данный момент я только что перезапустил демона, поэтому ошибка не проявляется. Как только повторится -- пришлю лог Dbus-monitor сюда.

spijet avatar Apr 10 '17 11:04 spijet

Как обещал, лог dbus-monitor:

# Переключился на открытый терминал, в котором писал по-английски
signal time=1492081595.432501 sender=:1.4 -> destination=(null destination) serial=754 path=/ru/gentoo/KbddService; interface=ru.gentoo.kbdd; member=layoutChanged
   uint32 1
signal time=1492081595.432555 sender=:1.4 -> destination=(null destination) serial=755 path=/ru/gentoo/KbddService; interface=ru.gentoo.kbdd; member=layoutNameChanged
   string "Russian"

# Alt+Shift
signal time=1492081599.034721 sender=:1.4 -> destination=(null destination) serial=756 path=/ru/gentoo/KbddService; interface=ru.gentoo.kbdd; member=layoutChanged
   uint32 0
signal time=1492081599.034740 sender=:1.4 -> destination=(null destination) serial=757 path=/ru/gentoo/KbddService; interface=ru.gentoo.kbdd; member=layoutNameChanged
   string "English (US)"

# Переключаю фокус обратно (первый терминал с En-раскладкой)
signal time=1492081600.085153 sender=:1.4 -> destination=(null destination) serial=758 path=/ru/gentoo/KbddService; interface=ru.gentoo.kbdd; member=layoutChanged
   uint32 1
signal time=1492081600.085219 sender=:1.4 -> destination=(null destination) serial=759 path=/ru/gentoo/KbddService; interface=ru.gentoo.kbdd; member=layoutNameChanged
   string "Russian"

# Alt+Shift
signal time=1492081600.858977 sender=:1.4 -> destination=(null destination) serial=760 path=/ru/gentoo/KbddService; interface=ru.gentoo.kbdd; member=layoutChanged
   uint32 0
signal time=1492081600.858998 sender=:1.4 -> destination=(null destination) serial=761 path=/ru/gentoo/KbddService; interface=ru.gentoo.kbdd; member=layoutNameChanged
   string "English (US)"

# Опять переключаюсь на второй терминал
signal time=1492081601.715590 sender=:1.4 -> destination=(null destination) serial=762 path=/ru/gentoo/KbddService; interface=ru.gentoo.kbdd; member=layoutChanged
   uint32 1
signal time=1492081601.715613 sender=:1.4 -> destination=(null destination) serial=763 path=/ru/gentoo/KbddService; interface=ru.gentoo.kbdd; member=layoutNameChanged
   string "Russian"

spijet avatar Apr 13 '17 11:04 spijet

Тоже столкнулся с подобной проблемой, и пытаюсь разобраться. Подскажите, каким именно образом у вас запускается kbdd?

wiedzmin avatar Jun 06 '17 14:06 wiedzmin

@wiedzmin, запускаю его через autostart-скрипт своего WM (по сути -- обычный bash-скрипт). Когда начинается подобное поведение -- перезапускаю его с помощью pkill kbdd && kbdd в консоли.

Сейчас смигрировал на Gentoo, проблема повторяется на версии kbdd из дерева:

❯ kbdd -v
kbdd 0.7, see -h/--help for brief info

~
❯ eix kbdd   
[I] x11-misc/kbdd
     Доступные версии:      (~)0.7.1 {dbus}
     Установленные версии:  0.7.1(18:21:43 02.06.2017)(dbus)
     Домашняя страница:     https://github.com/qnikst/kbdd
     Описание:              Very simple layout switcher

spijet avatar Jun 07 '17 04:06 spijet

У меня тоже самое и уже достаточно давно

sprnza avatar Jul 13 '17 05:07 sprnza

Проблема наблюдается и на 0.7.1

brestows avatar Apr 16 '18 08:04 brestows

Аналогичная проблема.

4ban avatar Apr 16 '18 16:04 4ban

Вот эта штука работает на отлично. Забыл kbdd как страшный сон.

sprnza avatar Apr 16 '18 19:04 sprnza

@sprnza Спасибо! Но можно ли с этой штукой сделать такой же виджет как для awesome wm?

4ban avatar Apr 16 '18 20:04 4ban

@4ban Такой же- это какой же? У меня awesomewm 4.2, он раскладку по Dbus получает, никакие костыли теперь не нужны. Для perwindowlayoud в AUR есть PKGBUILD, если что.

sprnza avatar Apr 16 '18 20:04 sprnza

@sprnza да самый обычный, готовое, древнее решение индикатора раскладки. Вы виджет индикатора сами писали?

4ban avatar Apr 16 '18 20:04 4ban

@4ban Нет, в awesomewm 4.2 не нужен самописный виджет- родной получает раскладку по Dbus и работает "из коробки".

sprnza avatar Apr 17 '18 02:04 sprnza

@sprnza Спасибо, попробую

4ban avatar Apr 17 '18 17:04 4ban