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/keycodes
3. Если соответствие "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 не работает в иксах.
Нашёл решение своей проблемы,
Нашёл решение своей проблемы, но только на половину. Если поменять строку
на
:), то 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 в файлах:
.
оекы
Спасибо за
У меня индикатором 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. Попробуйте сами.
Я сейчас на другой системе, но тут то же самое творится. Думаю, что если Вы попробуете, увидите то же самое.
Чтобы ночью светом никому не мешать.
Текстовый редактор 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
Настольный компьютер, довольно обычная 105-кнопочная клавиатура с кучей всякой допклавиш, которые я не трогал.
Хм… Не понял, честно говоря. Так же, как у ScrollLED, я полагаю. При программном включении/выключении ScrollLED включается/выключается подсветка.
Попробовал в GTK- и Qt3-программах. Enter и Backspace работают нормально, возможно, проблема в Qt4 или Psi.
Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.
=)
>Мне нужно, чтобы нажатие Scroll Lock включало Scroll LED (у меня это подсветка клавиатуры).
>Нет-нет, Вы не поняли. На клавиатуре нету индикатора ScrollLock как такового. Подсветка клавиатуры и есть такой «индикатор».
>Хм… Не понял, честно говоря. Так же, как у ScrollLED, я полагаю. При программном включении/выключении ScrollLED включается/выключается подсветка.
Сдаюсь, белый флаг - вы победили ! Я ничего не могу понять.
Пробовал у себя в Firefox, xterm - всё в порядке.
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 имеет два режима работы: в первом он пищит, а во втором — всё портит.