X Scroll Lock[РЕШЕНО]
С самого первого запуска системы в иксах не работает Scroll Lock. Всё откладывал да откладывал эту проблему в долгий ящик, пришло время разобраться. При нажатии не загорается даже led, не говоря уже о функции "заморозки" консоли(можно использовать и CTRL + {S,Q},но уж очень нравится настраивать свой Gentoo и хочется это сделать для раскладки).
xmodmap говорит :
/*
shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x42)
control Control_L (0x25), Control_R (0x6d)
mod1 Alt_L (0x40), Alt_R (0x71), Meta_L (0x9c)
mod2 Num_Lock (0x4d)
mod3
mod4 Super_L (0x7f), Hyper_L (0x80)
mod5 Mode_switch (0x5d), ISO_Level3_Shift (0x7c)
*/
В xorg.conf указана моя модель клавиатуры.
Пробовал так xmodmap -e 'add mod3 = Scroll_Lock' - SL стал загораться и только.
- Для комментирования войдите или зарегистрируйтесь

Никаких идей? Модель
Никаких идей?
Модель клавы:Option "XkbModel" "pc104"
Покажите хоть xmopmap -pm
Ну, у мну такой же вывод выдаёт
Scroll Lock нормально работает.
А WM какой? Версия xorg-server?
Что прописано в /etc/X11/xorg.conf
(в разделе InputDevice клавиатуры)?
Или там настроено через HAL?
Fluxbox или Gnome
xorg-server = 1.3.0.0-r6
Попробуйте убрать Option
Попробуйте убрать Option "XLeds" "1 2 3" (такой опции в man 5 xorg.conf нету!) и добавить Option "CoreKeyboard". Версия xorg-server у мну такая же. Переключалкой WM не должен управлять (т.е. оставить иксовое управление, WM-ное не задействовать). Возможно вместо "pc104" придётся подобрать более подходящую модель клавиатуры. Подробней смотрите на ВиКи.
Убрал "Xleds" "1 2 3"(этой
Убрал "Xleds" "1 2 3"(этой опции раньше и не было). Попробовал добавить "CoreKeyboard" - не помогло. В модели своей клавиатуры уверен, при установке иксов выяснял её модель. Стандартная 104 клавиши + 8 мультимедийный, но я ими не пользуюсь.
Если иксы собирались с
Если иксы собирались с USE=evdev, поддержка evdev имеется в ядре, может попробовать заменить pc104 на evdev? Если не пойдёт, попробовать другие модели с поддержкой ММ-кнопок...
1. в xev смотришь keycode
1. в xev смотришь keycode клавиши
2. ищешь этот keycode сначала в сопряжении с именем SCLK:
grep "SCLK.*ваш_кейкод" -HR /usr/share/X11/xkb/keycodes || grep "ваш_кейкод" -HR /usr/share/X11/xkb/keycodes3. Если соответствие "SCLK.*ваш_кейкод" найдено в файлах отличных от evdev и xfree86, то правите конфиг иксов (hal) в сторону вписывания модели. Если соответствие найдено в evdev и xfree86, правите свои руки в сторону их выпрямления.
4. Еслм соответствие "SCLK.*ваш_кейкод" не найдено, но для вашей модели этот кейкод определён и назван другой клавишей, то попробуйте отыскать упоминание этой клавиши
grep "имя_клавиши" -HR /usr/share/X11/xkb/symbols, если вы категорически не соласны, с тем как определена ваша клавиша, то делаете:xmodmap -e keycode ваш_кейкод = Scroll_Lockи добавляете
keycode ваш_кейкод = Scroll_Lockв /etc/X11/Xmodmap или ~/.Xmodmap в надеҗде, что скрипты X-сессий подхватат этот файл:)
2Ш
За совет и наводку - спасибо, а за подачу информации(а именно "прямоту рук") добрых слов не скажу, т.к. не приятно.
Забавно, стали появляться
Забавно, стали появляться новые подробности :).
Скан-код 78 - это у меня клавиша scroll lock.
Скан-код 66 - это у меня клавиша caps lock.
Результатов не даёт, зато
Заставляет клавишу Caps Lock включить SCROLL LED и прежний CAPS LED, а также выполнить функцию Caps Lock'a
PS: Дома нашёл 104-клавишную клавиатуру и попробал подключить её - эффект тот же, sl не работает в иксах.
Нашёл решение своей проблемы,
Нашёл решение своей проблемы, но только на половину. Если поменять строку
indicator "Group 2" { !allowExplicit; groups=All-Group1; };на
indicator "Scroll Lock" { !allowExplicit; groups=All-Group1; };:), то SL загорается на кириллице, но сама клавиша SLock по прежнему не работает.
PS: файл /usr/share/X11/xkd/compat/iso9995
Впрочем, можно считать
Впрочем, можно считать проблему решённой. Я получил что хотел и узнал про принцип работы xkb. Статья, написанная уважаемым Иваном Паскалем, за что ему огромное спасибо, помогла мне разобраться.
http://pascal.tsu.ru/other/xkb/
Сама ошибка была ужасно нелепой, а скрывалась она собственно в следующем: строки
видимо были мной скопированы и вследствии чего были в UTF кодировке. Поэтому модуль xkb не верно распознавал их.
И небольшой вопрос у меня остался для тех кто либо читал вышеприведённую статью либо знает как xkb работает, а может является одним из разработчиков xkb: 1) Где находится файл en_US, который относится к компоненту XkbSymbols ? (в папке symbols у меня его нет, да вот только через него всё работает и он во многих местах указан, а именно почти в каждом keymap). И сразу в догонку возник очередной интересный вопрос: 2) Можно ли разузнать на чём остановил свой выбор xkb(на каких компонентах:keycodes,types,compat,symbols,geometry) после применения правил XkbRules ?
Вопрос 1 (предположение): сделав
setxkbmap -printи пристально вглядевшись в xkb_symbols(а там:"pc+us+ru(winkeys):2+...")сделал вывод, что файл en_US уже давно не существует в пакете xkbcomp и скорее всего просто переопределён на us ;)Вопрос 2 разрешён:
man setxkbmap:), потом# setxkbmap -printНебольшая поправка:
setxkbmap -printможет распознать и вывести вам настройки модуля xkb только при условии что они были заданы через правила (Rules), т.е. в xorg.conf у вас есть такие строчки XkbRules "xorg" XkbModel "pc104" XkbLayout "us,ru" ... .Если конфигурация xkb будет задана через XkbKeycodes, XkbTypes, XkbCompat, XkbSymbols и XkbGeometry или через пресет XkbKeymap, то полноценного результата от
setxkbmap -printвы не получите. =)Наверно всё пока, спасибо за внимание.
текущий полный
текущий полный keymap:
xkbcomp $DISPLAY -:)
Один из разработчиков xkb
svu (Сергей Удальцов), он же - один из модераторов LOR'а.
"и вследствии чего были в UTF
"и вследствии чего были в UTF кодировке"
для латинских букв, цифр и стандартных символов ascii - они совпадают с utf-8 и это не могло вызвать проблемы, так что не стоит заморачиваться по этому поводу ))
-= Concordia victoriam gignit =-
Ну вот собственно и победил.
Вот собственно и победил. Вопрос №1 переходит в разряд "решено", так же как и главный вопрос. Файла en_US действительно нет, в этом можно убедиться набрав XkbSymbols "en_US+pc+ru(winkeys):2+group(ctrl_shift_toggle)" в xorg.conf, перезапустить сервер и после взглянуть на вывод
xkbcomp $DISPLAY - | grep "xkb_symbols". А вывод будет: xkb_symbols "unknown". Вместо en_US будет использован другой файл, какой мне определить не удалось, скорее всего это файл XKBROOT/symbols/us или скомпонованный файл.Сделал переключение по Scroll Lock'y и индикацию им же, так ради веселья и усвоения информации, если кому интересно могу поделиться. Можно сделать переключение по любому сочетанию или клавише с модификаторами или без. Вообщем целое поле для экспериментов.
Вдруг кому-нибудь пригодится: изначально Scroll Lock Led не горел во время нажатия по той простой причине что он не был объявлен как клавиша модификатор в XKBROOT/symbols/"filename"(зависит от используемых вами Layout), это можно проверить через
xmodmap -pm. Чтобы добавить его как клавишу модификатор нужно у1)xmodmap -e 'add mod{свободный} = Scroll_Lock, у2)так же SL не должен быть задействован в качестве индикатора раскладки. Соблюдая эти два условия(причём 1-ое приоритетней) вы получите Scroll_Lock такой же как и в консоли.Мне так кажется, что SL убрали из списка клавиш модификаторов в xkb с тех пор как его перестали использовать по назначению или по-просту в X он со своей изначальной функцией не нужен. SL объявлен как mod3 и mod5 в файлах:
/usr/share/X11/xkb/symbols/digital_vndr/lk: modifier_map Mod3 { Scroll_Lock }; /usr/share/X11/xkb/symbols/digital_vndr/pc: modifier_map Mod5 { Scroll_Lock };.
оекы
Спасибо за
У меня индикатором ScrollLock считается подсветка клавиатуры, поэтому и заинтересовался этим вопросом (-:Е
А как бы это правило прописать на уровне всей системы? ПРописывать в автозапуск каждому пользователю как-то неаккуратненько…
Покурю пока статью Паскаля, может, сам допру.
Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.
Рано радовался я. xmodmap -e
Рано радовался я.
xmodmap -e 'add mod{свободный} = Scroll_Lockмешает жить, потому что все клавиши после включения ScrollLock считаются нажатыми с модификатором. Например, в Psi никак не отправить сообщение. Думаем дальшеТекстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.
Немного не понимаю чего вы
Немного не понимаю чего вы хотите. После прочтения Паскаля всё понятно и предельно ясно. Если нужно всем пользователям засавить Scroll Lock Led отображать альтернативную раскладку или начальную, то просто /etc/X11/xorg.conf и всё.
А вот
Мне нужно, чтобы нажатие Scroll Lock включало Scroll LED (у меня это подсветка клавиатуры). Подсветка только во время набора кириллицы меня по очевидным причинам не устраивает. Вариант с назначением ScrollLock клавишей-модификатором, по описанной причине — тоже.
Честно сказать, приведённую статью Паскаля пока не осилил.
Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.
Цитата:потому что все клавиши
Каким образом ведут себя клавиши при нажатом SL ?
И xkbcomp $DISPLAY - | grep -e "xkb" следом
Насколько я понял вся эта затея нужна чтобы можно было экономить на электроэнергии при дневном свете ?
ы
То есть нажатие Enter (отправка сообщения) распознаётся как Shift(Alt)-Enter (новая строка). Не работает Backspace. Попробуйте сами.
Я сейчас на другой системе, но тут то же самое творится. Думаю, что если Вы попробуете, увидите то же самое.
% xmodmap -e 'add mod5 = Scroll_Lock' % xkbcomp $DISPLAY - | grep -e "xkb" xkb_keymap { xkb_keycodes "evdev+aliases(qwerty)" { xkb_types "complete" { xkb_compatibility "complete+ledcaps(group_lock)" { xkb_symbols "pc+us+ru(winkeys):2+inet(evdev)+capslock(grouplock)+compose(rctrl)" { xkb_geometry "pc(pc104)" {Чтобы ночью светом никому не мешать.
Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.
Ответ
Клавы, настройки одинаковые на обоих системах ?
Не могу попробовать тоже в psi, так как пользователь gtk(А для qt-core надо выкачивать 104МБ где-то). Интересные настройки xkb модуля у Вас. Переключение группы по caps, правый контрол как compose клавиша, мультимедийные действия для символьных имён скан-кодов, как видно из конфига - у Вас мультиклава. Я пробовал задавать у себя такую же конфигурацию - полный крах клавы. Не странно.
Одно меня интересует - это содержимое секции InputDevice файла /etc/X11/xorg.conf. Что-то мне подсказывает что там в XkbModel стоит evdev.
Нужно попробовать указать скан-коды(keycodes) брать из файла xfree86, и создать файл в папке XKBROOT/keycodes/{ваше имя на выбор} с содержимым, которое начинается со строки 184 и до 279 включительно файла XKBROOT/keycodes/evdev(эти строки главное(а может и единственное) различие м/у XKBROOT/keycodes/xfree86 и XKBROOT/keycodes/evdev). Проверять каждый скан-код - я не псих, поэтому это как один из вариантов разворачивания дальнейших событий в решении проблемы.
Всё это делается этой командой(исключая создание и наполнение файла):
# setxkbmap -keycodes "xfree86+aliases(qwerty)+{ваше выбранное имя файла}" -compat "complete+ledcaps(group_lock)" -types "complete" -symbols "pc+us+ru(winkeys):2+inet(evdev)+capslock(grouplock)+compose(rctrl)" -geometry "pc(pc104)"
Это уже следствие полноценной работы подсветки клавиатуры. Я же спрашивал для чего нужна индикация подсветки клавиатуры при помощи SCL LED'a ,для того чтобы днём можно было определить включена подсветка или нет. Так ?
И
Вообще-то нет. Совсем нет. Просто я проверил и на другой системе, результат включения ScrollLock оказался тем же, я и отписался.
Какие приложения у Вас под рукой есть? Я в них постараюсь воспроизвести. Firefox, Exaile, Quod Libet?
А чего удивительного? Настройки как настройки для ноутбучной клавиатуры через evdev (-:E
Там вообще ничего не стоит, для иксов с hal'ом их рекомендуется вообще не указывать. Но работает через evdev, да.
Нет-нет, Вы не поняли. На клавиатуре нету индикатора ScrollLock как такового. Подсветка клавиатуры и есть такой «индикатор». Полноценный с точки зрения управления клавиатурой. В Windows и консоли работает по простому нажатию ScrollLock, всякие программные манипуляции в иксах тоже включают подсветку, а вот просто по ScrollLock — не выходит.
Вот сяду за целевую систему, поэкспериментирую с предложенными Вами решениями и выложу конфиги с той системы (стабильные иксы и так далее). Спасибо за участие.
Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.
Цитата:Вообще-то нет. Совсем
Там тоже ноут ? Точнее, точнее, пожалуйста.
Значит в другом файле прописаны настройки для модуля xkb, дела не меняет - хочу их увидеть.
Хм, значит нажимаете на Scroll Lock - вкл. свет на клаве, ещё раз - выкл. , а индикатора (LED) на ноуте нет. Так ? Тогда надо бы узнать как происходит механизм вкл. и выкл. подсветки.
Так. Прошу прощения за
Так. Прошу прощения за запутывание двумя компутерами, в этой подветке буду говорить только про целевую систему:
xorg-server-1.3
xf86-input-keyboard-1.1.1-r1
Section "InputDevice" Identifier "Keyboard0" Driver "kbd" Option "XkbModel" "pc105" Option "XkbLayout" "us,ru(winkeys)" Option "XkbOptions" "grp:caps_toggle,compose:rwin" EndSection% xkbcomp $DISPLAY - | grep -e "xkb" xkb_keymap { xkb_keycodes "xfree86+aliases(qwerty)" { xkb_types "complete" { xkb_compatibility "complete+ledcaps(group_lock)" { xkb_symbols "pc+us+ru(winkeys):2+group(caps_toggle)+compose(rwin)" { xkb_geometry "pc(pc105)" {Настольный компьютер, довольно обычная 105-кнопочная клавиатура с кучей всякой допклавиш, которые я не трогал.
Хм… Не понял, честно говоря. Так же, как у ScrollLED, я полагаю. При программном включении/выключении ScrollLED включается/выключается подсветка.
Попробовал в GTK- и Qt3-программах. Enter и Backspace работают нормально, возможно, проблема в Qt4 или Psi.
Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.
=)
>Мне нужно, чтобы нажатие Scroll Lock включало Scroll LED (у меня это подсветка клавиатуры).
>Нет-нет, Вы не поняли. На клавиатуре нету индикатора ScrollLock как такового. Подсветка клавиатуры и есть такой «индикатор».
>Хм… Не понял, честно говоря. Так же, как у ScrollLED, я полагаю. При программном включении/выключении ScrollLED включается/выключается подсветка.
Сдаюсь, белый флаг - вы победили ! Я ничего не могу понять.
Пробовал у себя в Firefox, xterm - всё в порядке.
xkb_keymap { xkb_keycodes "xfree86+aliases(qwerty)" { xkb_types "complete" { xkb_compatibility "complete+ledscroll(group_lock)" { xkb_symbols "pc+us+ru(winkeys):2+my_group(scroll_toggle)+group(ctrl_shift_toggle)+compose(menu)" { xkb_geometry "pc(pc104)" {my_group - собственный файл, делает переключение группы по Scroll Lock'y.
Как видно, разница в переключалке и отображалке, а также другая compose-клавиша, что не существенно в данной ситуации. Отсюда напрашивается вывод в сторону psi. В других qt-4 apps'ах тоже ? Можно попробовать объявить Scroll Lock кнопку как двух-уровневую в XKBROOT/types/{где там она описана или какие файлы у нас тут используются}. Но это можно сделать только после того как я пойму, что у вас там с этой кнопкой и LED'ом.
рпа
Пропущу пока всё остальное, но
Я думал, я умею объяснять (-%Е
Ну представьте, что у меня LED ScrollLock не маленький в углу рядом с остальными LED'ами, а большой, во всю клавиатуру, и клавиши расположены прямо на нём. Так, что когда он загорается, все клавиши подсвечивает.
Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.
Ладно, так, вроде разобрался.
Ладно, так, вроде разобрался. Значит по нажатию SL включается подсветка на клаве. Я честно не знаю, у меня такого не было. По дефолту как такой механизм включения работает ? На клавиатуре есть спец. кнопка или в винде на неё ставятся какие-то дрова, которые реагируют на определённый скан-код(может быть с возможностью выбора) и в двусторонней связи с клавой говорит ей включиться ? Хоть как-то получалось сделать вкл. подсветки в gentoo ? Поиск такой же клавы и её необходимой настройки для этой цели ничего не дал ?
У
Включение подсветки по нажатию ScrollLock работает даже в меню GRUB. И в виртуальных консолях, проблема только в иксах.
Теперь я запутался (-:Е
Зачем специальные настройки? Подсветка ведёт себя как ScrollLED, после
xmodmap -e 'add mod5 = Scroll_Lock'исправно включается по нажатию ScrollLock и всё такое.Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.
Ура, содистрибутивник. Нашёл
Ура, содистрибутивник. Нашёл хоть какое-то не очень прямое, но всё же решение вашей проблемы. Долгое и нескончаемое чтение Ивана Паскаля новых знаний конечно добавило, но не совсем по проблеме. А стоило лишь немного погуглить по поводу своей проблемы. Итого: 5 - 10 часов чтения документации(нет решения) и четверть минуты(!) общения с сайтом google.ru(есть ответ). Ссылка: http://tuupic.org.ru/klaviatura-s-podsvetkoj-2/.
Если Scroll Lock не хочет включать LED - мы сделаем это без него ! Такой вот девиз того парня.
Спасибо (-:Е У меня тут
Спасибо (-:Е
У меня тут возникли проблемы с этой клавиатурой, поэтому пока отставил в сторону эту проблему. Сам уже думал на эту тему — сделать ручками, без иксов. Так даже веселее можно сделать — по cron включать, например (-:Е
Ещё раз спасибо
Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.