LINUX.ORG.RU

вытаскиваю свои волосы: xkb

 , ,


0

1

Здравствуйте!

Вернулся в Дебиан (12) после перерыва на Астра несколько лет. Много изменилось! Короче, использовал Компас на Виндовс на другом немощном ящике, а не вижу перспектива Виндовса на РФ. Однако, Вайн из Этерсофта, который понадобится, чтобы Компас работал под Линуксом, не поддерживается на Астра. Поэтому перешел из Астра на Дебиан. Вайн работает, и Компас работает сейчас; могу продать ящик Виндовса.

При инсталляции Дебиана я назначил фишку левого альта поменять язык клавиатуры, так как не было варианта правого альта. А сейчас Скрол-лок указывает раскладку, поэтому при работе в таблицах на английском языке получается, что не могу использовать клавиши со стрелками, так как с включенным Скрол-лок целая таблица перемещается. Тоже попытался менять фишку, которая поменяет раскладку, но не сработалось.

Прочитал несколько веб-страниц об этих проблемах, но не помогают. Вот такой файл /etc/default/keyboard:

XKBMODEL="pc105"
XKBLAYOUT="us,ru"
XKBVARIANT="dvorak,"
XKBOPTIONS="grp:ralt_toggle"
BACKSPACE="guess"

Дальше:

# gsettings get org.gnome.desktop.input-sources xkb-options
@as []

Хотел бы видеть простой контроль в «настройках» под «Клавиатурой», но его нет. И смущает, что только «настройки» отражывают настройки, и кажется, что gsettings или /etc/default/keyboard разве не работают.

Попробовал X вместе Wayland (в /etc/gdm3/daemon.conf), но кажется, что ничто не изменилось.

Пожалуйста, помогите, так как страницы как вот так ( https://www.reddit.com/r/linuxquestions/comments/ruhse5/i_cant_enable_scroll_lock_to_turn_keyboards_led/ ) не очень полезный.



Последнее исправление: robosvark (всего исправлений: 3)

Мой вариант для Xorg, без использования специфик DE. И даже без systemd.
/etc/X11/xorg.conf.d/00-keyboard.conf

#
# 01-keyboard-layout.conf: how to set the keyboard layout via X (FIXME: couldbe
# done by udev instead, but I don't know how)
Section "InputClass"
   Identifier "Keyboard Defaults"
   MatchIsKeyboard "yes"
   Option "XkbLayout" "us,ru(winkeys)"
  Option "XkbOptions" "terminate:ctrl_alt_bksp,grp:alt_shift_toggle,compose:rwin"
  Option "XkbModel" "pc105"
  Option "GrabDevice" "True"
EndSection
#
# END of 01-keyboard-layout.conf
#

Поперчить по своему вкусу. =)

Atlant ★★★★★
()

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

Я не понимаю, почему дистростроители или DE-строители в Linux постоянно корёжат адекватные дефолты?

Объясните мне, какому «уникиму» со школьническим какерским мозгом пришла в голову «отличная» идея поставить Scroll Lock свистоперделочку-переключатель языков в дефолт, несмотря на то что он корёжит и ломает ОЖИДАЕМУЮ работу программ.

Не первый тред уже на ЛОРе про эти глюки: Инициатива по исправлению бага #112876 в Libreoffice

Очередной школьник собирающий пакеты решил что если он переключает язык Scroll Lock’ом, то и все должны. А то что это ломает программы – пох.

EXL ★★★★★
()
Ответ на: комментарий от EXL

и ломает ОЖИДАЕМУЮ работу программ.

Дак, может разработчикам программ сначала корректировать свои ожидания с реальностью? Эта штука — ScrollLock Led как индикатор раскладки, появилась в нулевых. ЕМНИП, сначала была куча советов как это накостылить, потом оформилась в виде ledscroll(group_lock). И народ включал это сам, без помощи мантенеров. Где тогда был LibreOffice?

LO-шнки, сначала бы, поправили раскладку X-ов, вернули ″modifiers= ScrollLock″, а не лезли бы к состоянию Led-индикатора. Завтра, что, разработчики LO додумаются сами определять регистр по состоянию индикатора CapsLock Led, игнорируя модификаторы и keysym, отдаваемые X-ами?

mky ★★★★★
()
Ответ на: комментарий от mky

а не лезли бы к состоянию Led-индикатора

Читать состояние LED-индикатора вместо состояния кнопки это именно что адекватное решение. Ты же тем же Caps Lock’ом фиксируешь регистр глобально, а не отдельно в каждой программе. Как и Num Lock’ом.

Более того, Scroll Lock может быть активирован до запуска программы и использоваться не только в LO.

Я понимаю если кто-то там вешает эти LED-свистоперделки на переключение и ему это удобно, бога ради, пусть пользуется. Но нахрена это в дефолт пихать и ломать ожидаемое поведение программ, тех же табличных процессоров?

Кто это говно в дистрибутивы завозит, ломая программы? Опять какерская идиотия «иксовой экосистемы» просачивается? LO’шники в багтрекере полностью правы – фиксите свои кривые дистрибутивы убирая эти школьные мигающие свистоперделки с дефолтов и всё будет работать так как надо и ожидаемо.

EXL ★★★★★
()
Ответ на: комментарий от EXL

Состояние CapsLock и NumLock получают через модификаторы, а не через индикаторы. Как и Ctrl, и Alt, и Shift, для которых нет индикаторов.

Когда-то ScrollLock был mod3, но нигде не использовался. Его спокойно выкинули и отдали mod3 под ISO_Level5_Shift. То, что без ledscroll(group_lock) клавиша ScrollLock переключает светодиод, скорее, неодработка, так как нет модификатора, значит никакой не Lock, а просто клавиша, не должна светодиодом управлять.

«какерская идиотия», как раз, у LO-шников. Программа не должна читать состояние NumLock, и сама решать, если светиться, значит получаем цифры, а иначе — движение курсора. Состояние клавиатуры контролируют X-ы, есть NumLock — получаете keysym цифры, нет — получаете keysym стрелочки. И не лезете к keycode.

И это действует на все программы. Хотите, чтобы ScrollLock менял поведение программ, делайте, чтобы при нажатом ScrollLock приходили другие символы.

Или делайте обработку нажатий клавиши ScrollLock, всё одно, кроме LO calc эта клавиша нигде не используется. Когда-то язык переключался глобально для всех окон, а после win95 все привыкли, что у каждого окна своя раскладка. Будет у каждого окна LO cacl своё состояни ScrollLock, — ничего страшного.

фиксите свои кривые дистрибутивы

LO-шники сделали эту мегаудобную фичу в 2017 году, до этого не было. Как-то в 4.3 и ранее работали без неё. Их просили просто сделать её отключаемой, чтобы переключение раскладки не мешало работать. И чтобы поведение версии 5.3 было ожидаемое — такое же, как у 4.3. Но ламерам, не понимающим как работает XKB, проще встать в позу, чем что-то сделать. Могли бы, хотя бы работчикам xorg написать, чтобы зафиксировать текущее оведение ScrollLock.

mky ★★★★★
()
Последнее исправление: mky (всего исправлений: 1)
Ответ на: комментарий от mky

Спасибо за интерес! Результаты:

a@bcd:~$ setxkbmap -print
xkb_keymap {
	xkb_keycodes  { include "evdev+aliases(qwerty)"	};
	xkb_types     { include "complete"	};
	xkb_compat    { include "complete+ledscroll(group_lock)"	};
	xkb_symbols   { include "pc+ru+us(dvorak):2+gr(polytonic):3+ru:4+inet(evdev)+group(lalt_toggle)"	};
	xkb_geometry  { include "pc(pc105)"	};
};
a@bcd:~$ localectl
System Locale: LANG=ru_RU.UTF-8
    VC Keymap: (unset)         
   X11 Layout: us,ru
    X11 Model: pc105
  X11 Variant: dvorak,
  X11 Options: grp:ralt_toggle
'''
robosvark
() автор топика
Ответ на: комментарий от EXL

Спасибо за сочувствие!

Думаю, что много смотрят на клавиатуру, когда работают. Поэтому девелоперы подумали, о, есть такая лампочка можем использовать, чтобы все знали, какая раскладка активизирована!

Но, как полиглот, иногда у меня до 7 раскладок, и я редко смотру на клавиатуру; в таком случае лучше смотреть на экране, где написано «ru», «en», «fr», «gr» и т.д.

Кстати, почему все на английских буквах? Должно быть «ру», «en», «fr», «ἔλ» …

robosvark
() автор топика
Ответ на: комментарий от robosvark

Помощи от меня особо не будет, я заморочек Дебиана и Гнома не знаю.

Так, ваша проблема в ledscroll(group_lock) (в выводе setxkbmap -print). Непонятно, откуда туда эта опция пролазит, если её (или grp_led:scroll) нет /etc/default/keyboard, нет в gsettings, нет в localectl.

Но, ещё непонятно откуда вылазит gr(polytonic) (греческий), если его нет в /etc/default/keyboard. Через xkeyboard-config добавили, что-ли?

Я бы тупо сделал ″grep scroll -r /etc″ и там все файлы, содержащие ledscroll или grp_led:scroll, поизучал. Если в /etc нет, тогда /home...

mky ★★★★★
()
Ответ на: комментарий от robosvark

Тем не менее обнаружил, что при переименовании файла в «Файлы» 43.2, невозможно менять раскладку. Мне надо прекратить действие, поменять раскладку, а потом начать действие еще раз.

Подсказывает мне, что лучше бы возвращался во старь, во командную строку…

robosvark
() автор топика
Ответ на: комментарий от robosvark

Поэтому девелоперы подумали, о, есть такая лампочка можем использовать, чтобы все знали, какая раскладка активизирована!

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

Категорически рекомендую Таппер. Именно так всё должно было быть, но история случилась иная.

papin-aziat ★★★★★
()
Ответ на: комментарий от papin-aziat

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

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

V1KT0P ★★
()
Ответ на: комментарий от papin-aziat

И тебе тоже та же рекомендация :-)

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

V1KT0P ★★
()
Ответ на: комментарий от V1KT0P

Ты б почитал про Таппер и достиг уже просветления :-)

Ничего делать и думать не надо. Просто когда собрался писать, то перед этим тапнул одну клавишу один раз, всё, и ты гарантированно получаешь требуемую раскладку.

papin-aziat ★★★★★
()
Ответ на: комментарий от papin-aziat

Ты б почитал про Таппер и достиг уже просветления :-)

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

V1KT0P ★★
()
Ответ на: комментарий от V1KT0P

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

papin-aziat ★★★★★
()
Ответ на: комментарий от EXL

какому «уникиму» со школьническим какерским мозгом пришла в голову «отличная» идея поставить Scroll Lock свистоперделочку-переключатель языков в дефолт, несмотря на то что он корёжит и ломает ОЖИДАЕМУЮ работу программ.

Как раз «ожидаемая» работа программ это никому не интересный стандарт 80-какого-то-года, в котором поведение софта зависит от состояния лампочки на клавиатуре (а не состояния переключателя scroll lock!). При этом историческим ожидаемым пользователями дефолтом является индикация языка этой самой лампочкой! Что упрощает юзеркейс двуязычного ввода для всех, кто печатает неслепыми методами. Т.е. для большинства и примерно всегда.

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

kirill_rrr ★★★★★
()
Последнее исправление: kirill_rrr (всего исправлений: 3)
Ответ на: комментарий от V1KT0P

будет перед глазами

Если набираешь текст из книги/газеты, то глаза там, какое всплывающее меню в бумажной книге?

А ещё пароли не положено отображать при вводе, и, так как, пароли обычно на English, то там как раз удобно, что не светится ScrollLock, значит пароль вводишь в нужной раскладке. Ну, и иногда пароли вводишь глядя на клаву, так как там что-то непроизносимое/незапоминаемое, типа 3 клавиши вверх, потом 5 влево, потом по диагонали..., как раз удобно, что ScrollLock на клавиатуре.

mky ★★★★★
()