настройка клавиатуры Apple

Ответить
Аватара пользователя
als.pav
Сообщения: 19
Зарегистрирован: 15 апр 2016, 20:39
Operating system: ROSA.FRESH.KDE.R7.x86_64
Откуда: Санкт-Петербург

настройка клавиатуры Apple

Сообщение als.pav » 08 май 2016, 22:59

Здравствуйте
Пользуюсь алюминиевой полной клавиатурой Apple и в ROSA Fresh R7 столкнулся со следующей проблемой функциональные клавиши стали работать как на MAC, то есть кнопки F1-F12 работают при нажатии кнопки "fn", без нее это управление громкости (остальные функции не реализованы). Есть ли возможность инвертировать кнопку "fn", что бы при отпущенной работали F1-F12, а при нажатой соответственно управление громкостью? Ну и в дополнение есть ли возможность присвоить какие либо действия незадействованным F13-F19?
Дорогу осилит идущий!

Аватара пользователя
tverskoy
Сообщения: 1145
Зарегистрирован: 12 сен 2011, 13:30
Operating system: Rosa 2016.1 Fresh
Откуда: Тверь

Re: настройка клавиатуры Apple

Сообщение tverskoy » 09 май 2016, 01:37

если есть кнопка fn lock, то нажми ее

Аватара пользователя
DELTA-79
Сообщения: 1925
Зарегистрирован: 14 янв 2012, 14:07
Operating system: ROSA FRESH R2 KDE x86_64
Откуда: Георгиевск Ставропольский кр.
Контактная информация:

Re: настройка клавиатуры Apple

Сообщение DELTA-79 » 09 май 2016, 09:35

als.pav писал(а): Ну и в дополнение есть ли возможность присвоить какие либо действия незадействованным F13-F19?
На сколько я знаю, любой программе можно присвоить "горячие клавиши" так что дерзайте
‎Intel(R) Core(TM) i3-3220 CPU @ 3.30GHz / 4 Gb RAM / NVIDIA GeForce GT 240 / Rosa 2012.1 R5 х86_64

Аватара пользователя
als.pav
Сообщения: 19
Зарегистрирован: 15 апр 2016, 20:39
Operating system: ROSA.FRESH.KDE.R7.x86_64
Откуда: Санкт-Петербург

Re: настройка клавиатуры Apple

Сообщение als.pav » 09 май 2016, 15:45

tverskoy писал(а):если есть кнопка fn lock, то нажми ее
к сожалению такой кнопки нет.
попробовал запустить утилиту xev - показывает код нажатия кнопок. Получилось, что нажатие кнопки fn ни как не регистрируется, нажатие кнопок F1-F12 без нажатие fn выдает код не соответствующий данным клавишам, при нажатии fn код выдается верный. Отсюда вопрос, где можно переназначить (в каком конфиге) коды кнопок и привязать дополнительные?
Нашел такое решение для Ubuntu https://help.ubuntu.com/community/AppleKeyboard
а для ROSA есть что то подобное?
Дорогу осилит идущий!

Аватара пользователя
Delles
Сообщения: 1785
Зарегистрирован: 18 авг 2015, 19:52
Operating system: GNU/Linux : ROSA Desktop Fresh R7 (x86_64). Не обновлял.

Re: настройка клавиатуры Apple

Сообщение Delles » 09 май 2016, 16:02

Код: Выделить всё

man xmodmap
urpmq -ia xbindkeys
Talk is cheap. Show me the code.
Linus Torvalds

Аватара пользователя
als.pav
Сообщения: 19
Зарегистрирован: 15 апр 2016, 20:39
Operating system: ROSA.FRESH.KDE.R7.x86_64
Откуда: Санкт-Петербург

Re: настройка клавиатуры Apple

Сообщение als.pav » 09 май 2016, 16:49

Нашел такое решение:
tverskoy писал(а): Хочу поделиться малоизвестным но более правильным способом ремаппинга клавиш в Linux с помощью утилиты keyfuzz (на примере полноразмерной эппловской USB клавиатуры). При этом и Insert будет на месте Fn, и Win/Alt где надо, и функциональные клавиши будут включены. И всё это работает независимо от иксов (т.е. и в консоли тоже).

В udev добавляем такое правило:

ACTION=="add", SUBSYSTEM=="input", ATTRS{idVendor}=="05ac", ATTRS{idProduct}=="0221", ATTRS{bcdD
evice}=="0069", RUN+="/etc/udev/applekb"


А затем создаём запускаемый шелл-скрипт /etc/udev/applekb следующего содержания:

#!/bin/bash

APPLEUSBKBD="/dev/input/by-id/usb-Apple__Inc_Apple_Keyboard-event-kbd"

if [ -e "${APPLEUSBKBD}" -a "$ID_USB_INTERFACE_NUM" = "00" ] ; then
# Fn -> Insert
echo "0xff0003 110" | keyfuzz -s -d "${APPLEUSBKBD}"

# LeftAlt -> LeftMeta
echo "0x0700e2 125" | keyfuzz -s -d "${APPLEUSBKBD}"

# LeftMeta -> LeftAlt
echo "0x0700e3 56" | keyfuzz -s -d "${APPLEUSBKBD}"

# RightMeta -> RightAlt
echo "0x0700e7 100" | keyfuzz -s -d "${APPLEUSBKBD}"

# RightAlt -> Compose
echo "0x0700e6 127" | keyfuzz -s -d "${APPLEUSBKBD}"

# F13 -> PrintScreen
echo "0x070068 99" | keyfuzz -s -d "${APPLEUSBKBD}"

# F15 -> Pause
echo "0x07006a 119" | keyfuzz -s -d "${APPLEUSBKBD}"

# for kernel 2.6.27 and greater, swap 86 and 41:
# Grave -> Grave
echo "0x070035 86" | keyfuzz -s -d "${APPLEUSBKBD}"

# 102nd -> 102nd
echo "0x070064 41" | keyfuzz -s -d "${APPLEUSBKBD}"
fi

Пользуюсь уже года два, сначала запускал через скрипт в /etc/init.d, потом надоело терять настройки при перетыкании клавиатуры и навесил всё на udev. При поиске кодов кажется пользовался утилитой evtest.
Можете подсказать как это в ROSE реализовать, утилиты keyfuzz в репозитарии не нашел.
Дорогу осилит идущий!

Аватара пользователя
Delles
Сообщения: 1785
Зарегистрирован: 18 авг 2015, 19:52
Operating system: GNU/Linux : ROSA Desktop Fresh R7 (x86_64). Не обновлял.

Re: настройка клавиатуры Apple

Сообщение Delles » 09 май 2016, 17:11

Код: Выделить всё

urpmq -ia keyfuzz
Talk is cheap. Show me the code.
Linus Torvalds

dragon
Сообщения: 546
Зарегистрирован: 15 мар 2016, 17:16
Operating system: ROSA Desktop Fresh R12.4 PLASMA
Откуда: Балаково, Саратовская обл.

Re: настройка клавиатуры Apple

Сообщение dragon » 10 май 2016, 10:39

als.pav писал(а):Можете подсказать как это в ROSE реализовать, утилиты keyfuzz в репозитарии не нашел.
В репозитарии есть, но нужно переключить левую верхнюю кнопку (чуть ниже меню) из положения "Пакеты с графическим интерфейсом" в положение "Все". Ну, или urpmi из терминала, как уже было сказано.

Аватара пользователя
als.pav
Сообщения: 19
Зарегистрирован: 15 апр 2016, 20:39
Operating system: ROSA.FRESH.KDE.R7.x86_64
Откуда: Санкт-Петербург

Re: настройка клавиатуры Apple

Сообщение als.pav » 10 май 2016, 14:42

Всем спасибо за помощь, как установить через urpmi разобрался, осталось понять что лучше будет xmodmap или keyfuzz. Я так понял они делают одно и тоже.
Дорогу осилит идущий!

trs
Сообщения: 1939
Зарегистрирован: 07 сен 2015, 16:08
Operating system: -

Re: настройка клавиатуры Apple

Сообщение trs » 10 май 2016, 14:47

als.pav писал(а):Нашел такое решение для Ubuntu https://help.ubuntu.com/community/AppleKeyboard
а для ROSA есть что то подобное?
Команды вида

Код: Выделить всё

$ echo 2 | sudo tee /sys/module/hid_apple/parameters/fnmode
задают режим драйверу клавиатуры и не являются Ubuntu-специфичными.
В Роса драйвер имеется, и должна быть возможность использовать следующие параметры:

fnmode — режим клавиши fn (Mode of fn key on Apple keyboards)
0 = отключено
1 = F1-12 c fn (режим по умолчанию)
2 = F1-12 без fn (как Вы хотите, "инверсия")

iso_layout — не вникал, что-то связаное с национальными раскладками ("Enable/Disable hardcoded ISO-layout of the keyboard.")
0 = откл.
1 = вкл. (по умолчанию)

swap_opt_cmd — поменять клавиши Option ("Alt") и Command ("Flag")
0 — как есть, Mac расположение
1 — как в Windows

В этом списке цифра — это то, что стоит в примере после echo, а имя параметра — крайнее справа слово (после parameters).

Текущее значение можно посмотреть так:

Код: Выделить всё

cat /sys/module/hid_apple/parameters/fnmode
Если это срабатывает, то можно закрепить эффект (иначе он теряется после перезагрузки) добавив нужное в /etc/modprobe.d/hid_apple.conf

Для генерации нового initrd вместо update-initramfs используется dracut

Аватара пользователя
als.pav
Сообщения: 19
Зарегистрирован: 15 апр 2016, 20:39
Operating system: ROSA.FRESH.KDE.R7.x86_64
Откуда: Санкт-Петербург

Re: настройка клавиатуры Apple

Сообщение als.pav » 10 май 2016, 19:34

trs спасибо, то что и хотел достичь, заработало, точнее кнопка fn отключилась и F1-F12 пришли в норму, но инверсии не произошло. Не разобрался как работать с dracut. Я Linux можно сказать только начал осваивать и с английским очень слабо. Если не затруднит подскажи как правильно выполнить в место "sudo update-initramfs -u -k all" (файл создан echo options hid_apple fnmode=2 | sudo tee -a /etc/modprobe.d/hid_apple.conf).
В процессе настройки дополнительных клавиш попробовал назначить их через xbindkeys, но к сожалению глобально они не работают, как с этим бороться знает кто-нибудь?
Дорогу осилит идущий!

trs
Сообщения: 1939
Зарегистрирован: 07 сен 2015, 16:08
Operating system: -

Re: настройка клавиатуры Apple

Сообщение trs » 11 май 2016, 09:57

Под "инверсией" я понял, что при нажатой fn клавиши F1-12 будут действовать как мультимедийные.

По поводу:

Код: Выделить всё

sudo update-initramfs -u -k all
sudo — повышает права последующей команде до root.

опции:
-u — перезаписывает имеющийся initrd
-k all — делает это для всех ядер.

initrd — это файл с необходимыми для начальной загрузки драйверами.
Если он повреждён, ядро (vmlinuz) наиболее вероятно не будет работать.
Потому правильно, на мой взгляд, предварительно сохранить его резервную копию, например так:
Выполняем в консоли su (перейти в режим root), запускаем файловый менеджер mc, переходим в каталог boot и там видим файлы initrd- с номерами версий в имени.
Нажимаем Ctrl+o (скрывает панели mc и показывает консоль) и выполняем uname -a что бы узнать текущую версию ядра.
Включаем панели (Ctrl+o) и на соответствующем initrd- нажимаем F6 (переименовать) и задаём новое имя, например *.1
Теперь, если что-то пойдёт не так, можно при загрузке в меню GRUB нажать e, найти строку с initrd и дописать .1 к имени, для загрузки сохранённой версии.

После этого просто пишем в консоли:

Код: Выделить всё

# dracut
Если не переименовывать файл, а скопировать (F5 в примере выше) то:

Код: Выделить всё

Will not override existing initramfs (/boot/initrd-4.4.7-nrj-laptop-1rosa-x86_64.img) without --force
dracut сообщит, что не будет перезаписывать существующий файл без указания ключа --force

В общем, можно было бы просто выполнить:

Код: Выделить всё

$ sudo dracut -f
Проверить, что файл включён в initrd можно так:

Код: Выделить всё

lsinitrd | grep hid_apple
С англ. языком — можно установить переводчик, их тут несколько должно быть, как и словарей.

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

Аватара пользователя
als.pav
Сообщения: 19
Зарегистрирован: 15 апр 2016, 20:39
Operating system: ROSA.FRESH.KDE.R7.x86_64
Откуда: Санкт-Петербург

Re: настройка клавиатуры Apple

Сообщение als.pav » 11 май 2016, 18:58

trs - спасибо. все таки не совсем безграмотный =)
собственно не знал этого - initrd — это файл с необходимыми для начальной загрузки драйверами.
про dracut нашел только относящееся к Федоре, насколько ROSA совместима с данным дистрибутивом не нашел, знаю что и то и другое клоны RedHat. Проверить, что файл включён командой "lsinitrd | grep hid_apple" не получилось. Пишет bash: lsinitrd: команда не найдена. Если не затруднит, подскажи, что можно почитать, про подобные манипуляции в системе или хотя бы для какого дистрибутива (более распространенного чем ROSA можно искать такую информацию, так как по ROSA данных удручающе мало).
Дорогу осилит идущий!

trs
Сообщения: 1939
Зарегистрирован: 07 сен 2015, 16:08
Operating system: -

Re: настройка клавиатуры Apple

Сообщение trs » 12 май 2016, 06:26

lsinitrd в РОСА, как в системе с dracut — это ссылка на lsinitrd-dracut. Не могу сказать, куда она далась.

Вообще, я использую автодополнение по tab: если знать, что ls суть сокращение от list ¹, таким образом можно получить перечень команд, выводящих какие-либо списки

Код: Выделить всё

$ ls
ls               lsb_release      lshal            lslocks          lspci            lspnp            
lsattr           lscpu            lshw             lsmod            lspcidrake       lsusb            
lsbinstall       lsd              lsinitrd         lsnetdrake       lspcmcia         lsusb.py         
lsblk            lsdvb            lsinitrd-dracut  lsof             lspgpot  
для каждой можно попробовать ключик --help или man. Если команда от "другой" системы, то мануал к ней можно найти в сети.

Про dracut я узнал здесь. В Fedora, как и везде, где эта утилита есть, она должна быть та же самая (может версия чуть различается), различия возможны в файлах конфигурации: тут они хранятся в каталоге /etc/dracut.conf.d а где-то может быть просто /etc/dracut.conf

Ну а информация если и частично излишняя, то кому-то может оказаться полезной.

———
¹ Если к тому же принимать во внимание, что структуры данных представлены в виде деревьев, то окажется что и слово list не требует перевода, достаточно транслитерации.

Аватара пользователя
als.pav
Сообщения: 19
Зарегистрирован: 15 апр 2016, 20:39
Operating system: ROSA.FRESH.KDE.R7.x86_64
Откуда: Санкт-Петербург

Re: настройка клавиатуры Apple

Сообщение als.pav » 12 май 2016, 17:58

спасибо было полезно
Дорогу осилит идущий!

denkarter
Сообщения: 16
Зарегистрирован: 04 янв 2017, 20:55
Operating system: ROSA R8 KDE

Re: настройка клавиатуры Apple

Сообщение denkarter » 08 янв 2017, 19:50

als.pav писал(а):спасибо было полезно
Привет. Получилось реализовать?

denkarter
Сообщения: 16
Зарегистрирован: 04 янв 2017, 20:55
Operating system: ROSA R8 KDE

Re: настройка клавиатуры Apple

Сообщение denkarter » 08 янв 2017, 22:51

Я новичок в Линукс, но активно осваиваю. По приведённым выше постам сделал так, чтобы клавиши F1...F12 были мультимедийными тока при нажатии Fn, вроде заработало так как мне надо. Ещё попробую переназначить букву ё... Поступил следующим образом:

1. Зашёл в Установка и удаление программ, опцию "Пакеты с графическим интерфейсом" переключил на "Все" и в поиске вбил keyfuzz. Установил из репозитария.
2. Выполнил команду:

Код: Выделить всё

echo 2 | sudo tee /sys/module/hid_apple/parameters/fnmode
Проверил текущее значение:

Код: Выделить всё

cat /sys/module/hid_apple/parameters/fnmode
3. Чтобы закрепить данное значение навсегда выполнил инструкцию:
initrd — это файл с необходимыми для начальной загрузки драйверами.
Если он повреждён, ядро (vmlinuz) наиболее вероятно не будет работать.
Потому правильно, на мой взгляд, предварительно сохранить его резервную копию, например так:
Выполняем в консоли su (перейти в режим root), запускаем файловый менеджер mc, переходим в каталог boot и там видим файлы initrd- с номерами версий в имени.
Нажимаем Ctrl+o (скрывает панели mc и показывает консоль) и выполняем uname -a что бы узнать текущую версию ядра.
Включаем панели (Ctrl+o) и на соответствующем initrd- нажимаем F5 (скопировать), файл копируется в каталог /home/den и добавил в конце имени _1, затем снова F5, чтобы скопировать обратно в каталог boot. Так делал поскольку при нажатии F6 файл не переименовывался, а предлагалось его переместить.
Теперь, если что-то пойдёт не так, можно при загрузке в меню GRUB нажать e, найти строку с initrd и дописать _1 к имени, для загрузки сохранённой версии.
4. Выполнил команду:

Код: Выделить всё

sudo dracut -f
5. Проверил включён ли файл в initrd:

Код: Выделить всё

lsinitrd | grep hid_apple
6. Перезагрузился.
-- ВСЁ РАБОТАЕТ--
Теперь вопрос - при обновлении системы это сохранится всё? или после обновления всё делать заново?

denkarter
Сообщения: 16
Зарегистрирован: 04 янв 2017, 20:55
Operating system: ROSA R8 KDE

Re: настройка клавиатуры Apple

Сообщение denkarter » 08 янв 2017, 23:53

Поскольку по-умолчанию на клавиатуре Apple буква ё уехала вниз (рядом с клавишей Shift Left), то вернуть её обязательно нужно на место.
Сделал это переключением параметра iso_layout.

1. Выполнил команду исправления клавиш в национальных раскладках 0 = откл., 1 = вкл. по умолчанию, мы установили 0.

Код: Выделить всё

$ echo options hid_apple iso_layout=0 | sudo tee -a /etc/modprobe.d/hid_apple.conf
2. Выполнил команду (резервную копию файла мы делали ранее):

Код: Выделить всё

sudo dracut -f
3. Перезагрузился.

Всё работает и даже не понадобилась утилита keyfuzz. Хотя с её помощью позже доделаю другие клавиши... Благодарю товарища trs!

trs
Сообщения: 1939
Зарегистрирован: 07 сен 2015, 16:08
Operating system: -

Re: настройка клавиатуры Apple

Сообщение trs » 09 янв 2017, 08:00

denkarter писал(а):при обновлении системы это сохранится всё? или после обновления всё делать заново?
При обновлении ядра будет выполнена автоматическая генерация соответствующего ему initrd таким же запуском dracut, т.е. должно сохраниться.

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

Ответить

Вернуться в «Обсуждение ROSA Fresh R4 - R8 (платформа 2014.1)»