8

Я только недавно узнал о волшебной системе ключей запроса. Как использовать их с клавиатуры на компьютерах Mac с установленной ОС на базе Linux или в других случаях, когда на клавиатуре нет клавиши SysReq ? Существует ли последовательность, эквивалентная мета- SysReq, или способ ее создания?

2 ответа2

5

Без ключа, генерирующего тот же код сканирования, которого у вас нет, единственная опция - echo <char> > /proc/sysrq-trigger , где <char> - это клавиша, которую вы нажимаете вместе с M-SysRq . (Это, конечно, предполагает, что вы работаете с ядром с скомпилированным в него волшебным SysRq и ранее сделали echo 1 > /proc/sys/kernel/sysrq в /etc/rc.local или аналогичном.)

Если вам нужна настоящая волшебная функциональность SysRq, а не бледная имитация, получаемая путем эхо-ввода в случайные записи / процедуры, вам понадобится USB-клавиатура в стиле ПК с клавишей SysRq. Linux будет правильно интерпретировать код сканирования независимо от того, на какой архитектуре он работает; сложная часть, в этом случае, генерирует код сканирования во-первых, что не может быть сделано со стандартной клавиатуры Mac.

(С другой стороны, кажется вероятным, что ядро может быть скомпилировано для распознавания другого кода сканирования, такого как код ключа извлечения Mac, вместо SysRq; я никогда не чувствовал желания понизить мой MBP, так что Не знаю, но я представляю, что кто-то это сделал. Или, возможно, вы будете первым; в конце концов, пользовательский взлом вашего ядра - это половина удовольствия от запуска Linux, или мне дано понять.)

Обновление: по-видимому, это можно сделать из пространства пользователя:

Лучший способ сделать это сейчас - установить (вручную скомпилировать) программу keyfuzz и поставить

echo "786616 99" | keyfuzz -s -d /dev/input/by-id/usb-Apple_Inc._Apple_Internal_Keyboard___Trackpad-event-kbd

например, в вашем /etc / профиле. Это сопоставляет Alt-Eject на типичном Apple Macbook Pro (у меня середина 2010 года, 6,2) с комбинацией Alt-SysRq.

Если вам нужен более старомодный опыт «Two-Fisted Tales of Linux», то есть несколько патчей для ядра, связанных с этим потоком комментариев, которые могут предложить руководство по переназначению кодов клавиш на уровне ядра.

3

Этот ответ также размещен здесь.

После 3 или 4 часов напряженного поиска, чтения, проб и ошибок вот более полный и общий ответ, который должен работать на любом ноутбуке или клавиатуре Apple/Mac. Однако в моем конкретном случае я использую это решение в 2008 году. MacBook белый под управлением Xubuntu 16.04 LTS.

Большое спасибо Бенгту Олссону за его прекрасные инструкции, которые дали мне необходимое начало, чтобы выяснить недостающие детали.

Это решение сделано в пользовательском пространстве и НЕ требует перекомпиляции ядра, как некоторые предложения.

  1. Загрузите источник для keyfuzz (http://0pointer.de/lennart/projects/keyfuzz/keyfuzz-0.2.tar.gz) и извлеките его (я могу щелкнуть по нему правой кнопкой мыши и перейти к "Извлечь здесь", чтобы извлечь его в моем Файловый менеджер GUI, например). Чтобы узнать больше о keyfuzz, смотрите здесь. Он выпущен под лицензией GNU GPL 2.0 или более поздней (с открытым исходным кодом!).

    • Не используйте каталог слишком глубоко (или, возможно, с пробелами), иначе приведенная ниже команда ./configure завершится неудачно.
  2. Установите зависимости или запустите ./configure ниже может выплевывать некоторые ошибки:

    sudo apt-get update
    sudo apt-get install lynx xmltoman gengetopt
    
  3. Скомпилируйте и установите keyfuzz с помощью обычных команд:

    ./configure
    make
    sudo make install
    
  4. Перейдите в /dev/input/by-id и найдите клавиатуру Apple, которая заканчивается на «-event-kbd»:

    cd /dev/input/by-id
    ls
    
    • Для меня это "usb-Apple_Computer_Apple_Internal_Keyboard ___ Trackpad-event-kbd"
  5. Добавьте следующую строку в файл /etc/rc.local , чтобы эта команда запускалась каждый раз, когда ваш компьютер загружается и загружает этого пользователя. Обратите внимание, что мы используем запись клавиатуры Apple, которую мы только что нашли выше. Эта команда использует keyfuzz для сопоставления F12 или F13 на клавиатуре или ноутбуке Apple с системной « волшебной клавишей SysRq » для программных перезагрузок.

    • Для отображения F12 в SysRq: 458821 99 . Большое спасибо "pjjjv" за то, что выяснили это здесь! https://ubuntuforums.org/archive/index.php/t-762665.html
    • Для отображения F13 в SysRq: 458856 99 .
    • Поскольку мой MacBook 2008 не имеет F13, я использую опцию F12 выше. Также не забудьте использовать правильную запись клавиатуры, которую мы нашли выше. Команда, которую я добавил в rc.local для моего случая: echo "458821 99" | keyfuzz -s -d /dev/input/by-id/usb-Apple_Computer_Apple_Internal_Keyboard___Trackpad-event-kbd .
    • Вот весь мой файл /etc/rc.local с соответствующей записью:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

echo "458821 99" | keyfuzz -s -d /dev/input/by-id/usb-Apple_Computer_Apple_Internal_Keyboard___Trackpad-event-kbd

exit 0
  1. Перезагружать.

Теперь я могу нажать Alt+F12 (или вы можете использовать Alt+F13, как описано выше) и выполнить команду REISUB для мягкой перезагрузки компьютера. Отлично работает на моем ноутбуке MacBook 2008 с Xubuntu 16.04 LTS.

Обратите внимание, что вы можете видеть результаты, возвращаемые при выполнении REISUB, когда вы нажимаете каждую клавишу, сначала переходя к альтернативному сеансу с помощью Ctrl+Alt+F1 (F1 through F6 work actually) перед выполнением команды. Чтобы вернуться к основному сеансу X Window, используйте Ctrl+Alt+F7 .

Если вы получите результат «Эта операция sysrq отключена», это нормально для нескольких команд, так как они представляют потенциальную угрозу безопасности. Boot one все равно должен работать, позволяя перезагрузить компьютер. Вот еще немного информации об этом, от mniess здесь:

Начиная с Ubuntu 12.10, возможен более детальный контроль над включенными функциями Magic-SysRq. Просто отредактируйте файл /etc/sysctl.d/10-magic-sysrq.conf.

Файл хорошо документирован и говорит вам, как включить какие функции. Текущее значение по умолчанию было выбрано в целях безопасности и должно быть изменено только в том случае, если вы знаете, зачем вам это нужно (для информации о безопасности см. Ошибку № 194676).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .