Настройка Apple Slim keyboard под Linux

    Недавно праздновал свой 23 день рождения и был одарен коллегами замечательнейшим девайсом. Apple Slim Aluminium Keyboard.
    Да-да-да. Именно с большой буквы каждое слово.
    По моему скромному мнению, лучшей клавиатуры для разработчика не найти. Особенно для такого любителя Linux как я.
    Клавиатура удобная, ничего не скажешь, писать об этом больше не буду, и так уже везде понаписано. Однако не без проблем.
    Мой любимый рабочий компьютер с Gentoo напрочь отказался работать с мультимедийными клавишами и прочими радостями современного мира. Немного погуглив я обнаружил что я не одинок и огромное количество народа тоже страдает от этого. Однако четкой и подробной инструкции на русском (да и на английском ) я так и не нашел. Специально для таких как я страдальцев и предназначен сей коротенький мануал.
    Тут в комментариях просят картинку клавиатуры:
    image
    А вот тут можно про неё почитать.

    Оговорюсь, что все последующие операции мы будем выполнять в режиме суперпользователя. А также, все предложенные кейкоды работают только для Slim клавиатуры. Для клавиатуры ноутбука придется повторить все самому.

    1.Компилим ведро.


    Первое что пришлось сделать мне как пользователю столь дружелюбного дистрибутива как Gentoo, это конечно перекомпилировать ядро.
    Без этого X-сервер напрочь отказывается видеть недостающие клавиши.
    Замечу, что пользователям Ubuntu этого делать не придётся так как для них разработчики уже всё что надо сделали.
    Предполагаю что исходные тексты ядра у вас уже лежат /usr/src/linux
    Идем туда и делаем make menuconfig
    В открывшемся диалоге находим:
    Device Drivers → HID Devices
    И жмакаем галочку на «Enable support for Apple laptop/aluminium USB special keys».
    Далее, как обычно следует make && make modules_install && make install
    Если не скомпилилось — зовем соседа-линуксоида, гуглим форумы и.т.д в поисках солюшена, что бы узнать что не так и как эту проблему побороть.

    2.Немного шаманства.


    Замечу, что после того как ядро успешно установилось, всё практически заработает. Но, как это принято в мире Linux, не без подвоха.
    Теперь, для того что бы нажать, к примеру, кнопку F1 надо предварительно удерживать до этого не работающую клавишу Fn. Что, поверьте, очень раздражает и навевает мысли о суициде.
    Что бы поправить это безобразие, делаем такую штуку:
    echo 2 > /sys/module/hid/parameters/pb_fnmode
    Что бы данное изменение применялось каждый раз при загрузке системы, надо добавить эту команду в конец стартового скрипта.
    В разных дистрибутивах он находится в разных местах.
    Приведу пример для Gentoo:
    /etc/conf.d/local.start
    и для Ubuntu:
    /etc/rc.local

    3. И это ещё не всё.


    А вы как думали? Осталось совсем чуть-чуть.
    К сожалению не работает кнопка «Ё», она же «~». А ещё на ней есть обратные апострофы. Нужная в общем-то кнопка.
    Также не работают кнопки в верхнем ряду: Print Screen, Scrool Lock и Pause.
    Не так часто я их использую, но всё же не по себе от того что они не работают.
    Ну и самый пожалуй главный недочет — это то что нет кнопки Insert, зато есть F16-F19 которые как бы некуда девать.
    Этими проблемами мы и займемся.

    Для изменения раскладки клавиатуры мы будем использовать две стандартные X-утилиты: xev и xmodmap. Изменения будут производится уже не под суперпользователем, а под вашим системным пользователем, в вашем домашнем каталоге.

    Запускаем xev и пробуем нажимать на клавиши.
    После нажатия читаем что вываливается на экран. Я нажал на букву «ё» и увидел вот что:

    KeyRelease event, serial 34, synthetic NO, window 0x3c00001,
    root 0x1a6, subw 0x0, time 31989750, (533,667), root:(538,692),
    state 0x10, keycode 94 (keysym 0x3c, less), same_screen YES,
    XLookupString gives 1 bytes: (3c) "<"
    XFilterEvent returns: False


    О чём это нам говорит?
    Была нажата клавиша с keycode 94. На неё назначен печатный символ «<». Что нам не подходит.
    Запускаем утилиту xmodmap с ключами -pke
    На экран вывалится текущая раскладка клавиатуры.
    Ищем нужный keycode:
    keycode 94 = less greater slash bar bar brokenbar
    Создаем новый файл в корневом каталоге с именем .Xmodmap.
    В нем мы будем формировать свою новую раскладку.
    Копируем строчку найденную выше в этот файл и правим.
    Для того что бы знать на что заменить «less greater …» придется почитать весь вывод xmodmap -pke и найти то что нам подходит.
    А вот и оно:
    keycode 49 = grave asciitilde Cyrillic_io Cyrillic_IO
    Заменяем так что бы получилось:
    keycode 94 = grave asciitilde Cyrillic_io Cyrillic_IO

    Для теста запускаем: xmodmap ~/.Xmodmap
    И пробуем по нажимать. Ура? Всё работает.

    Тем же путем находим коды клавиш F13 — F15 и назначаем на них нужные действия.
    Я назначил вот так:
    keycode 191 = Print Sys_Req Print Sys_Req Print Sys_Req
    keycode 192 = Scroll_Lock NoSymbol Scroll_Lock NoSymbol Scroll_Lock
    keycode 193 = Pause Break Pause Break Pause Break


    Ну а Insert повесим на F16:
    keycode 194 = Insert NoSymbol Insert NoSymbol Insert

    В итоге я получил такой файл .Xmodmap:

    keycode 94 = grave asciitilde Cyrillic_io Cyrillic_IO
    keycode 191 = Print Sys_Req Print Sys_Req Print Sys_Req
    keycode 192 = Scroll_Lock NoSymbol Scroll_Lock NoSymbol Scroll_Lock
    keycode 193 = Pause Break Pause Break Pause Break
    keycode 194 = Insert NoSymbol Insert NoSymbol Insert


    Замечу, что после того как этот файл появился в вашем домашнем каталоге, ничего больше делать не надо. Он сам автоматически применится после рестарта X-сервера.

    4. Для маньяков


    Некоторые, привыкшие к типичному для обычных клавиатур расположению клавиш: Ctrl | Win | Alt не могут привыкнуть к тому, что на эппловской клавиатуре это расположение изменено на: Ctrl | Alt | Cmd.
    Сmd — это как бы то же самое что и Win. Для linux она выглядит как «Meta» или «Super».
    Для этого, используя тот самый xmodmap мы придумали следующий ремапинг:

    clear Mod4
    clear Mod1
    keycode 115=Alt_L
    keycode 64=Super_L
    add Mod4 = Super_L
    add Mod1 = Alt_L


    5. Для несогласных.


    Конечно, предложенная схема удобна далеко не всем. Но руководствуясь этой инструкцией каждый сможет настроить свою клавиатуру так как он хочет.
    Ну и конечно, та часть инструкции которая отвечает за ремапинг клавиш, может помочь и тем кто не является счастливым обладателем клавиатуры от Apple.
    Например можно отлично настроить мультимедийные клавиши на клавиатурах на которых они присутствуют. :) Или подпрвить не устраивающую вас раскладку.

    З.Ы: Во время экспериментов, может случится так что вы не сможете нажать какую-то кнопку и захочется всё вернуть как было.
    Что бы не перезагружать X-сервер можно воспользоваться следующей командой: setxkbmap -model evdev -layout us,ru
    Это вернёт раскладку в рабочее состояние. Вместо «evdev» нужно попробовать подставить вашу модель клавиатуры. Заранее подсмотреть это название можно коммандой: cat /etc/X11/xorg.conf | grep XkbModel или в настройках клавиатуры вашего десктоп менеджера.

    UPD: Добавил картинку клавиатуры.
    Share post

    Similar posts

    Comments 64

      +6
      Статья без картинок ;)
        +7
        Как-то даже не знаю какие картинки сюда можно или нужно добавлять… Ну вот картинку клавиатуры добавил :)
        –3
        Привет

        Мне как то подарили оптимус максимус, но он не захотел рисовать изображения на кнопках и я написал небольшое хауту:
        Ресуем набор нужных картинок, переводим их в xmp формат, а затем просто подгружаем в /proc/usb/номер — где номер usb, тот к которому подключена клавиатура:

        echo '%100' > /proc/usb/номер
        cat ico.xmp > /proc/usb/номер

        А %100 — это код клавиши для которой нужно залить изображение

        Но сегодня мне подарили MacBook Air, где эта клавиатура работает как надо без всякого шаманства.

        Я очень рад.

        Ваш макофил.

          +3
          Что-то мне подсказывает что где-то в ваших словах есть скрытый сарказм… Но не могу понять где :)
            0
            это же троль :)
            по моему он себе поставил цель написать в каждый топик. Если почитать его последние камменты интересная картина получается ;)
              –4
              Ты очень проницательный, %username%
              Хочешь инвайт на лепру?
                +10
                что за лепра?
                  –2
                  Извини, инвайты закончились
                    0
                    +1 в карму, хоть и не сильно поможет :-)
                    +1
                    это та «Лепра», которая уже «не та», но за которую нужно показать сиськи.
                    +4
                    Ваш макофил.
                    Я робот…
                    Я эстет с лепры…
                    Я Гугл…
                    Я — кавайная девченка…
                    Я адвокат из Роснадзоркультуры…
                    Я квинтэссенция хабралюдей…
                    Я лидер техподдержки Мастерхост…
                    На самом деле я из Блогистана…
                    Я крестный отец белорусской мафии…
                    Я талант-самородок от рождения…

                    я не склонен доверять людям с таким количеством альтер-личностей.
                    зы. все больше вас не кормлю
                      +2
                      Умер от голода.
              –5
              Тем, кому как и мне захотелось на неё глянуть, но картинке в посте не оказалось
                +3
                Эээ… это какбэ совсем не то. ЩАс вставлю картинку в пост.
                  0
                  там еще и другие есть… но я такой клавы вообще не видел — сложно узнать :)
                  0
                  шо эта? о_0 Мак клавы выглядят совсем иначе ) и как бы нету однако у них столько кнопок справа от пробела (я про Win-keys и клавишу-контекстное меню)
                  0
                  Спасибо, будет полезно в принципе и для других мультимедийных клав.
                    +4
                    Вот после таких постов — хочется чтоб была гденить кнопка «донейт», потому что плюсик в карму это не материально, и не отражает всю степень благодарности человеку. А по сабжу — огромный, огромный респект. И кстати, клава действительно крута.
                      +1
                      У меня тоже такая клавиатура, правда использую я её более традиционно — под Mac OS. Я не очень-то согласен, что это самая удобная клавиатура. Красивая — безусловно, но не очень удобная.

                      При работе на этой клавиатуре у меня стало появляться очень много опечаток. Не знаю в чем дело, но это так. Может это из-за того, что форма и размер почти всех клаишь унифицированы?
                        +2
                        Наверно всё-таки это от привычек зависит. У меня вот скорость набора увеличилась и количество опечаток стало намного меньше.
                        +4
                        По моему скромному мнению, лучшей клавиатуры для разработчика не найти. Особенно для такого любителя Linux как я.
                        Вы, навернео, не видели хороших эргономичных клавиатур, типа Microsoft 4000, раз утверждаете, что лучше, чем эта плоская, клавиатуры не найти. ASAK красиво выглядит, не спорю, но печатать удобней на «выгнутых».
                        Картинка: s3.amazonaws.com/product_images/41WR360GGBL._AA240_.jpg
                          0
                          Поддержу на все сто!
                            +1
                            Ну, я там выше уже писал что всё зависит от привычек человека. На моём домашнем компьютере побывало несколько клавиатур.
                            В том числе:
                            Mitsumi самая обычная
                            Samsung 4510P
                            Microsoft Natural Multi Media keyboard v1.0a — Вот она как раз выгнутая
                            EZKey EZ-8000
                            И самой удобной, до последнего момента, для меня казалась именно плоская Mitsumi :)
                              0
                              точно. от привычек, и ещё от того, сколько времени проводишь за клавиатурой.

                              после десяти часов набора текста на обычной «плоской» клавиатуре у меня устают руки (из-за выгнутого вверх и в стороны положения, думаю), а на выгнутой с приподнятым передним краем клавиатуре могу печатать и по 16 часов. только громкая она, конечно.
                                +1
                                Пытался поработать месяц на MS Natural, да так и не смог привыкнуть.
                                Геометрические размеры больше привычных, кнопки расставлены неудобно.
                                Вобщем в топку эту хрень.

                                Никогда не было такого, чтобы руки уставали от работы на клаве, т.к. работа программиста редко упирается в скорость набора.
                            • UFO just landed and posted this here
                              +3
                              По-моему, если хочешь тонко поиздеваться над разработчиком — подари ему такую клавиатуру от фззду.
                              Выкинуть — жалко, использовать — невозможно.
                                +5
                                Что может быть лучше подарка, над которым можно ещё много много часов ковырятся и разбираться :)
                                  0
                                  Тут не без сарказма конечно, но таки да. :)
                                  +2
                                  Под виндузами тоже гемора хватает, чинится правкой реестра и правкой раскладки клавиатуры.
                                  Кому-нибудь интересно?
                                    0
                                    интересно
                                      0
                                      дадада, раскажите пожалуйсто. собрался себе покупать давно уже, всё думаю как будет работать на windows
                                        0
                                        Под виндовсом достаточно поставить родные драйвера — и все будет работать как надо
                                        У меня белая проводная — пашет как зверь, на аллюминий менять не буду.
                                          0
                                          Расскажите, расскажите.

                                          И ссылку на ваш пост в этой ветке комментов опубликуйте, плз.

                                          Причем интересует оба варианта: wired и wireless. :)
                                            +2
                                            На пост кармы нет, так что вкратце напишу здесь:
                                            Я владелец проводного варианта, соответственно, говорю о нём:
                                            1)Для работы мультимедийных клавиш нужен bootcamp(тяжелая зараза), но в инете валяются чисто выдранные драйвера. (ссылку сейчас не вспомню, если что — залью и выложу)
                                            При установке драйвера клавиатура будет работать в «маковской ракладке»
                                            Т.е. нажатие F1 и F2 делается как Fn+F1, Fn+F2.
                                            Русская раскладка, имхо, неудобна, например, «Точка» ставится как Shift+6 и прочие мелочи.
                                            Также после установки драйверов будут работать pause и прочие кнопки.
                                            2)Чтоб убрать «режим MacOS», нужно чуть поправить реестр:
                                            лезем в ветку HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\KeyMagic
                                            И изменяем параметр «OSXFnBehavior» с 1 на 0.
                                            Или пользуемся reg-файлом с таким содержимым:

                                            Windows Registry Editor Version 5.00

                                            [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\KeyMagic]
                                            «OSXFnBehavior»=hex:00

                                            3)Далее, делаем «виндузовую раскладку»:
                                            Есть несколько способов:
                                            a)Ремапить клавиши (программа AutoHotKey)

                                            б)Изменить раскладку клавиатуры (программа Microsoft Keyboard Layout Creator (скачивается на microsoft.com, но только после проверки лицензионности винды, или ищется в инете)

                                            в)Способ, который выбрал я:
                                            Залазим в: панель управления — язык и региональные стандарты
                                            Далее вкладка языки, жмем кнопку «подробнее»
                                            Видим эппловскую раскладку, без зазрения совести удаляем ее. Далее добавляем русскую.

                                            В Принципе это все.
                                            З.Ы. некоторые особенности клавиатуры:
                                            1) т.к. на месте клавиши Insert находится Fn, insert влючается/выключается нажатием Fn+Enter
                                            2) Клавиши Print Screen, Scroll Lock и Pause смещены вправо на одну клавишу (F14,F15,F16). Мне это показалось вполне удобным, поэтому их я и не трогал :)
                                            Клавиатура очень удобная, я привык к ней буквально за три часа, очень доволен, но есть и минусы: она довольно маркая, так что лучше за ней не есть жирную курицу ;-)
                                            Желаю удачи!
                                              0
                                              Дополнение:
                                              В интернете лежат несколько версий драйверов, говорят, что у некоторых они при установке ругаются на то, что не видят клаву, советую в этом случае попробовать другую версию «дров».
                                              +1
                                              Пользуюсь этой клавиатурой уже где-то год. Печатаю много. Не нравится. Пользуюсь потому, что политика фирмы.

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

                                              Есть еще пара моментов — типа, мелкие кнопки, кнопка fn расположена не пойми где, слишком длинная для такой узкой — но с этим можно смириться.

                                              Да, в ту же сторону — мышь тоже Mighty. Тоже бы поменял с удовольствием.
                                              • UFO just landed and posted this here
                                                  0
                                                  Медаль автору!
                                                    0
                                                    круто! только как вот сделать чтобы в макоси работали нормально insert, home, page up/down, end…
                                                    потому как приходится работать много в линуксовой и без этих кнопок очень неудобно!!!
                                                      0
                                                      Оу… это наверно вопрос больше к матёрым маководам, коим я не являюсь… но думаю что вопрос должен решатся правильной настройкой терминального клиента который используется в макоси для доступа к линуксовой консоли.
                                                        0
                                                        жаль, но моджет быть кто-то из коллег знает, отпишитесь… спасибо очень ;)
                                                          0
                                                          Увы, не знаком ни с одним маководом :(
                                                            0
                                                            дима, а как же я?

                                                              0
                                                              Ну блин. Ты хоть и маковод — но не юзаешь линуксовую консоль :)
                                                        0
                                                        page up = fn + up
                                                        page down = fn + down
                                                        home = fn + left
                                                        end = fn + right
                                                        по крайней мере так на mbp, про insert ничего скзать не могу, но тоже вроде через fn

                                                          0
                                                          insert = fn+enter
                                                        0
                                                        Клавиатура прикольная, но работать с ней всё-таки не так удобно. Я сидел за такой клавиатурой (как раз под Линуксом) несколько месяцев. В итоге перешёл на Saitek Eclipse II — она, конечно, более традиционного вида, но работать за ней не в пример удобнее.
                                                          0
                                                          Стоит заметить, что Gentoo это не Слакварь, и ядро пересобирать лучше при помощи genkernel.

                                                          Я сам долгое время по старинке пользовал make menuconfig и всё прочее,
                                                          но не то initrd не то еще какая причина в своё время побудила меня почитать man genkernel и less /etc/genkernel.conf
                                                            0
                                                            Спасибо, учту :) Как-то всё руки не доходят почитать. Говорят знатная вещч.
                                                              0
                                                              Не то чтобы очень знатная, но просто в один прекрасный момент уже не хочется разбираться «как там нынче делается этот initrd...». Прелесть Gentoo как раз и заключается в том, что можно с одной стороны не вдаваться во все тонкости сборки различных пакетов с кучей параметров configure, но с другой стороны всегда иметь возможность прописать нужные USE.
                                                            0
                                                            Ну что за типичная болезнь всех начинающих линуксоидов — использовать cat | grep, вместе просто grep'а? Где такому учат?

                                                            «cat | grep » — более тормозной и громоздкий вариант простого «grep „
                                                              0
                                                              ой, парсер зажевал половину.

                                                              «cat file | grep pattern» — более тормозной и громоздкий вариант простого «grep pattern file»
                                                                0
                                                                Ух. Спасибо — пойду таки почитаю ман. :)
                                                              +1
                                                              Вопрос может быть слегка не совсем по теме, но… почему может не приниматься .Xmodmap после рестарта. И так его нужно писать, с большой буквы?
                                                                0
                                                                Всё по теме, у меня кстати тоже не принимается. Я не могу понять почему.
                                                                Заглянул в /etc/X11/xinit/xinitrc:

                                                                userresources=$HOME/.Xresources
                                                                usermodmap=$HOME/.Xmodmap
                                                                xinitdir=/etc/X11
                                                                sysresources=$xinitdir/Xresources
                                                                sysmodmap=$xinitdir/Xmodmap



                                                                if [ -f $sysmodmap ]; then
                                                                xmodmap $sysmodmap
                                                                fi

                                                                if [ -f $usermodmap ]; then
                                                                xmodmap $usermodmap
                                                                fi

                                                                Т.е должен восприниматься.

                                                                О. Пока писал кажется понял почему не работает. При старте KDE или кто у нас там выполняется команда setxkbmap… и возможно это происходит после того как xmodmap выполнился.
                                                                Как вылечить не придумал пока — буду ковырять.
                                                                Думаю что можно както заставить кде запускать какойнить скриптик после своего старта. Но это както не очень кошерно. :)
                                                                  0
                                                                  Придумал как обойти setxkbmap? У меня так и не вышло заремапить так чтобы не сбрасывалось :) Частичное решение — правка symbols раскладки, описал здесь. Помогает для тильды, не помогает для «ё» :)
                                                                    0
                                                                    Ох, я щас и не упомню уже.
                                                                    Но помомему, я таки прописал что-то в сервисы KDE.

                                                                    А вообще так уж смешно вышло что я заменил свою рабочю машину на макбук :) Теперь проблем с клавиатурой нету :))
                                                                0
                                                                Хы )
                                                                Я такой штукой на 22-ой был одарен )
                                                                  0
                                                                  ну я когда задумывался купить девайс в гугле нашел сразу про проблему с ф1-12 и ее решение. А если для вас ядро пересобирать для поддержки нового оборудования это шаманство, то извините меня, но политику генту вы не поняли, и вам надо пересесть на дистрибутив, который сам решает и делает всё для вас ))))
                                                                    0
                                                                    Эээ… да не шаманство ептить… Я чувствую в ваших словах скрытый упрёк. Мол я тут сякой такой нифига не шарю. Ну карты в руки. Сделайте что нить и напишимте статью. Посмотрим кто лучше понимает чью политику.

                                                                    Название блога видите? «Линукс для всех». О как назвали. Ну т.е когда называли думали что тут будут статьи для всех. Ну вообще для всех. Но про линукс. И для тех для кого пересборка ядра это шаманство.
                                                                    Вы по содержанию давайте больше комментируйте.

                                                                    А то я вот комментарий ваш прочел — уже два абзаца написал, а непойму никак, что же вы хотели меня спросить и что вам не понравилось.
                                                                      0
                                                                      я не то что «наехал», а просто сказал факт — то что в генту пересборка ядра не шаманство. Если Вы не понимаете политику данного дистрибутива, то вам лучше перейти на что-то другое =) Просто в генту сборка и компиляция чего-либо это неотъемливая часть, всё из сорцов, все настраиваем под себя.
                                                                        0
                                                                        Спасибо за факт конечно. Но почему вы решили что я не понимаю идеологии gentoo?
                                                                        Вот конкретно из каких слов?

                                                                  Only users with full accounts can post comments. Log in, please.