Решение для ubuntu 9.10 в этом
посте. Для 9.04( и предыдущие) остались у меня в бекапе(потом переедут в вики, возможно), поэтому пока спрашивайте меня в личке, а вообще в виду малой популярности я наверно окажусь от ее поддержки.
Тема предназначена для обладателей ноутбуков от Samsung испытывающих проблемы с функциональными клавишами. После написания патчей для пары моделей ноутбуков и поиска решения проблемы было обнаружено, что добрый производитель почти во всех своих ноутах устанавливает одинаковые типы клавиатур. Тогда кейкоды, посылаемые спец-кнопками во многих моделях ноутов одинаковы. Так что для решения проблемы с залипанием этих кнопок необходимо несколько шагов.
Решение ТОЛЬКО для ubuntu 10.04.
1. Узнаем модель ноута:
sudo dmidecode -s system-product-name
У меня например
2. Узнаем наличие модели в специальных правилах в файле 95-keymap.rules, где на fn-кнопки назначены действия, номер модели естественно меняем на свой:
cat /lib/udev/rules.d/95-keymap.rules | grep R59P/R60P/R61P
ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="*NC10*|*NC20*|*SP55S*|*SQ45S70S*|*SX60P*|*SX22S*|*SX30S*|*R59P/R60P/R61P*|*Q210*|*Q310*|*X05*|*P560*|*R560*", RUN+="keymap $name samsung-other"
Если вывод не пустой, значит на основные клавиши действия "повешены", а если пустой, то редактируем файл и добавляем свою модель.
sudo gedit /lib/udev/rules.d/95-keymap.rules
3. Узнаем наличие модели в специальных правилах для "отлипания" клавиш в файле 95-keyboard-force-release.rules, номер модели естественно меняем на свой:
cat /lib/udev/rules.d/95-keyboard-force-release.rules|grep R59P/R60P/R61P
ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="*NC10*|*NC20*|*N130*|*SP55S*|*SQ45S70S*|*SX60P*|*SX22S*|*SX30S*|*R59P/R60P/R61P*|*SR70S/SR71S*|*Q210*|*Q310*|*X05*|*P560*|*R560*", RUN+="keymap $name samsung-other"
Если вывод не пустой, значит клавиши "отлипаются", а если пустой, то редактируем этот файл и добавляем свою модель.
4. Для самунгов есть замечательный проект на voria.org, который объединяет в себе специальные скрипты и модуль easy-slow-down-manager, которые предоставляют фунции для fn-клавиш. Поэтому просто ставим их из репозитория:
sudo apt-add-repository ppa:voria
sudo apt-get update && sudo apt-get upgrade
sudo apt-get install samsung-tools samsung-backlight
Для некоторых моделей этих действий вполне достаточно, но у меня возник конфликт с апплетом регулировки яркости - теперь апплет "залипал" вместо кнопок
. Решение таково - передаем ядру параметр acpi_backlight=vendor, добавляя
его в /etc/default/grub к параметру GRUB_CMDLINE_LINUX_DEFAULT:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_backlight=vendor"
И обновляем загрузчик:
Если после этих манипуляций яркость не меняется и видеокарта intel, то нужно добавить в параметры ядра nomodeset.
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset acpi_backlight=vendor"
А если опять не заработало для видеокарты nvidia, то
вот решение от Leolik.
Ну и самый запасной вариант для карт nvidia(ч\з smartdimmer) и других при должной адаптации -
тут.
Настройка кнопок завершена.
Теперь немного опишу новые утилыты из samsung-tools:
Из меню Система > Параметры > Samsung Tools Preferences вызывается настройка fn-кнопок, состояний усройств(wifi, bluetooth, web-камера, проц) при включении, параметров ядра(в разработке), режима сбережения питания laptop-mode (нужно поставить пакет laptop-mode-tools, чтобы стало активным), понижения напряжения проца(работает только с поддерживаемыми PHC
http://linux-phc.org/). А так же появился апплет samsung tools, который дублирует функции клавиш.
У меня нет вебки, а на fn-f3 висит евро, поэтому написал такой скрипт:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import virtkey
v = virtkey.virtkey()
v.lock_mod(1<<2) # зажать ctrl
v.lock_mod(1<<0) # зажать shirt
v.press_keycode(30) # нажать u
v.release_keycode(30) # u
v.press_keycode(26) # нажать e
v.release_keycode(26) # e
v.press_keycode(13) # нажать 4
v.release_keycode(13) # 4
v.press_keycode(11) # нажать 2
v.release_keycode(11) # 2
v.press_keycode(14) # нажать 5
v.release_keycode(14) # 5
v.unlock_mod(1<<0) # отпустить shirt
v.unlock_mod(1<<2) # отпустить ctrl
v.press_keycode(37) # нажать ctrl
v.release_keycode(37) # ctrl
копируем его в /usr/local/bin и вешаем на кнопку в настройках горячих клавиш системы. И обязательно ставим пакет python-virtkey.
Тестим, коментируем. Если пришлось добавлять в правила свой бук, то cравниваем со списком уже поддерживаемых
здесь(Смотрим информацию по пакету linux).
Уже есть в официальном ядре:
NC10, NC20, SQ45S70S, Q210/P210.
Если модель не поддерживается, то постим здесь
http://www.voria.org/forum/viewtopic.php?f=3&t=358&start=150, номер модели из 1 пункта. Кто хочет пожертвовать деньги этому проекту - там есть кнопка доната. И
очень большая просьба отписываться после получения нужного обновления, что работает или нет, а то дергать людей просто так без всякой пользы не айс.Благодарности: voria, Codeblight, BASSON XVI, Trofa, Keng-Yu Lin, progroz, многим другим кого не упомянул, но которые приняли участие, и сообществу форума.