Новое использование для восстановления ключа Lenovo onekey

У меня была эта точная проблема, но вместо установки плагина Adobe я перешел в Firefox -> edit preferences -> Applications и изменил действие PDF с «предварительного просмотра в Firefox» на «Использовать средство просмотра документов». Это запускает отдельное окно Evince с документом, который хорошо печатается. Мне никогда не нравилась идея просмотра pdf-файлов в окне браузера, поэтому я счастлив. Однако есть что-то неприятное с Firefox для печати пустых страниц из окна предварительного просмотра.

7
задан 1 February 2018 в 11:45

12 ответов

У меня нет идеи, как использовать эту кнопку с GRUB, но есть как минимум два подхода, как сделать их пригодными для использования в Ubuntu. Например, если вы хотите связать команду перезагрузки с этой кнопкой, вы можете: (1) создать событие acpi или (2) создать пользовательский ярлык.

Создать acpi event и связать перезагрузите команду

Сначала вам нужно использовать acpi_listen и поймать событие при нажатии кнопки. Просто выполните команду acpi_listen и нажмите кнопку:

$ acpi_listen 
button/prog1 PROG1 00000080 00000000 K
В приведенном выше примере button/prog1 PROG1 00000080 00000000 K - это событие в моей системе, когда я нажимаю обсуждаемую кнопку.

Затем вы должны создать файл, который будет обрабатывать это событие. Файл должен находиться в каталоге /etc/acpi/events/. Назовите его, например, reboot. Содержимое /etc/acpi/events/reboot должно быть похоже на:

# /etc/acpi/events/reboot
# This will reboot the system
event=button/prog1 PROG1 00000080 00000000 K
action=systemctl reboot

Сохранить файл и перезапустить демона acpi:

sudo systemctl restart acpid.service

IMO это самый простой метод. Это должно работать также, когда пользователь не вошел в систему. Ниже приведено несколько ссылок, где вы можете найти дополнительную информацию и примеры:

В приведенном выше примере button/prog1 PROG1 00000080 00000000 K - это событие в моей системе, когда я нажмите . Ноутбук Ubuntu 17.10 не закрывается при закрытии крышки. Батарея стекает даже после выключения

Создайте acpi event и привяжите к ней сценарий

Мы можем добавить страховку, если вы случайно нажмете кнопку. Здесь мы создадим скрипт, который будет использовать файл tmp как флаг и счетчик, как описано здесь. Таким образом, перезагрузка системы будет выполняться, когда вы нажимаете кнопку три раза.

Измените /etc/acpi/events/reboot следующим образом:
# /etc/acpi/events/reboot
# This will reboot the system
event=button/prog1 PROG1 00000080 00000000 K
action=/etc/acpi/reboot.sh
Перезапустите демона acpi:
sudo systemctl restart acpid.service
Создайте сценарий /etc/acpi/reboot.sh и установите следующие строки:
#!/bin/bash  
FLAG_FILE="/tmp/sysyem_reboot_flag"

# If the file exists and it is older than 30 seconds, then reset the counter 
# Else If the file doesn't exist or its 'value' is less than 2, then increment
# Else (when the file exists, its value is equal or greater than 2, and its age is less than 30 seconds) reboot the system 

if [ -f "${FLAG_FILE}" ] && [[ $(find "${FLAG_FILE}" -newermt '-30 sec') == '' ]]; then
    echo '1' > "$FLAG_FILE"
elif [ ! -f "${FLAG_FILE}" ] || (( $(cat "$FLAG_FILE") < 2 )); then
    touch "$FLAG_FILE"
    NEW_VALUE=$(( $(cat "$FLAG_FILE") + 1)) && echo "$NEW_VALUE" > "$FLAG_FILE"
else
    systemctl reboot
fi
Сделать его исполняемым:
sudo chmod +x /etc/acpi/reboot.sh

Теперь команда systemctl reboot будет выполняться, когда вы нажимаете кнопку три раза в течение 30 секунд.

]

Создайте custom shortcut и привяжите к нему скрипт

Измените /etc/acpi/events/reboot следующим образом:
# /etc/acpi/events/reboot
# This will reboot the system
event=button/prog1 PROG1 00000080 00000000 K
action=/etc/acpi/reboot.sh
Перезапустите демона acpi:
sudo systemctl restart acpid.service
[!d23 ]

Измените /etc/acpi/events/reboot следующим образом:

sudo visudo -f /etc/sudoers.d/my_rbt
Содержимое файла должно быть:
ALL ALL=NOPASSWD: /usr/local/bin/my_rbt
Создайте сценарий /etc/acpi/reboot.sh и поместите в него следующие строки:
#!/bin/bash  
FLAG_FILE="/tmp/sysyem_reboot_flag"

# If the file exists and it is older than 30 seconds, then reset the counter 
# Else If the file doesn't exist or its 'value' is less than 2, then increment
# Else (when the file exists, its value is equal or greater than 2, and its age is less than 30 seconds) reboot the system 

if [ -f "${FLAG_FILE}" ] && [[ $(find "${FLAG_FILE}" -newermt '-30 sec') == '' ]]; then
    echo '1' > "$FLAG_FILE"
elif [ ! -f "${FLAG_FILE}" ] || (( $(cat "$FLAG_FILE") < 2 )); then
    touch "$FLAG_FILE"
    NEW_VALUE=$(( $(cat "$FLAG_FILE") + 1)) && echo "$NEW_VALUE" > "$FLAG_FILE"
else
    systemctl reboot
fi
] Сделайте его исполняемым:
sudo chmod +x /etc/acpi/reboot.sh

Создайте скрипт /etc/acpi/reboot.sh и поместите в него следующие строки:

Проблема (в рамках этого подхода) мы должен использовать sudo для выполнения сценария и должен позволить пользователям делать это без пароля - здесь приводятся более подробные сведения об этом шаге: как мне запустить конкретный sudo c omsands без пароля? Поэтому мы должны собрать файл, расположенный в /etc/sudoers.d/, который называется, например, my_rbt. Для этого мы должны использовать команду visudo -f:

6
ответ дан 22 May 2018 в 23:26
  • 1
    Первое решение работало как прелесть, я награжу вас щедростью, как только система позволит мне это сделать. Очень признателен. – Muaad ElSharif 1 February 2018 в 17:49
  • 2
    Я рад помочь, @MuaadElSharif. Я обновил ответ с дополнительной разработкой первого подхода. – pa4080 1 February 2018 в 19:02

У меня нет идеи, как использовать эту кнопку с GRUB, но есть как минимум два подхода, как сделать их пригодными для использования в Ubuntu. Например, если вы хотите связать команду перезагрузки с этой кнопкой, вы можете: (1) создать событие acpi или (2) создать пользовательский ярлык.

Создать acpi event и связать перезагрузите команду

Сначала вам нужно использовать acpi_listen и поймать событие при нажатии кнопки. Просто выполните команду acpi_listen и нажмите кнопку:

$ acpi_listen button/prog1 PROG1 00000080 00000000 K В приведенном выше примере button/prog1 PROG1 00000080 00000000 K - это событие в моей системе, когда я нажимаю обсуждаемую кнопку.

Затем вы должны создать файл, который будет обрабатывать это событие. Файл должен находиться в каталоге /etc/acpi/events/. Назовите его, например, reboot. Содержимое /etc/acpi/events/reboot должно быть похоже на:

# /etc/acpi/events/reboot # This will reboot the system event=button/prog1 PROG1 00000080 00000000 K action=systemctl reboot

Сохранить файл и перезапустить демона acpi:

sudo systemctl restart acpid.service

IMO это самый простой метод. Это должно работать также, когда пользователь не вошел в систему. Ниже приведено несколько ссылок, где вы можете найти дополнительную информацию и примеры:

В приведенном выше примере button/prog1 PROG1 00000080 00000000 K - это событие в моей системе, когда я нажмите [D7]. Ноутбук Ubuntu 17.10 не закрывается при закрытии крышки. Батарея стекает даже после выключения

Создайте acpi event и привяжите к ней сценарий

Мы можем добавить страховку, если вы случайно нажмете кнопку. Здесь мы создадим скрипт, который будет использовать файл tmp как флаг и счетчик, как описано здесь. Таким образом, перезагрузка системы будет выполняться, когда вы нажимаете кнопку три раза.

Измените /etc/acpi/events/reboot следующим образом: # /etc/acpi/events/reboot # This will reboot the system event=button/prog1 PROG1 00000080 00000000 K action=/etc/acpi/reboot.sh Перезапустите демона acpi: sudo systemctl restart acpid.service Создайте сценарий /etc/acpi/reboot.sh и установите следующие строки: #!/bin/bash FLAG_FILE="/tmp/sysyem_reboot_flag" # If the file exists and it is older than 30 seconds, then reset the counter # Else If the file doesn't exist or its 'value' is less than 2, then increment # Else (when the file exists, its value is equal or greater than 2, and its age is less than 30 seconds) reboot the system if [ -f "${FLAG_FILE}" ] && [[ $(find "${FLAG_FILE}" -newermt '-30 sec') == '' ]]; then echo '1' > "$FLAG_FILE" elif [ ! -f "${FLAG_FILE}" ] || (( $(cat "$FLAG_FILE") < 2 )); then touch "$FLAG_FILE" NEW_VALUE=$(( $(cat "$FLAG_FILE") + 1)) && echo "$NEW_VALUE" > "$FLAG_FILE" else systemctl reboot fi Сделать его исполняемым: sudo chmod +x /etc/acpi/reboot.sh

Теперь команда systemctl reboot будет выполняться, когда вы нажимаете кнопку три раза в течение 30 секунд.

]

Создайте custom shortcut и привяжите к нему скрипт

Измените /etc/acpi/events/reboot следующим образом: # /etc/acpi/events/reboot # This will reboot the system event=button/prog1 PROG1 00000080 00000000 K action=/etc/acpi/reboot.sh Перезапустите демона acpi: sudo systemctl restart acpid.service

Измените /etc/acpi/events/reboot следующим образом:

sudo visudo -f /etc/sudoers.d/my_rbt Содержимое файла должно быть: ALL ALL=NOPASSWD: /usr/local/bin/my_rbt Создайте сценарий /etc/acpi/reboot.sh и поместите в него следующие строки: #!/bin/bash FLAG_FILE="/tmp/sysyem_reboot_flag" # If the file exists and it is older than 30 seconds, then reset the counter # Else If the file doesn't exist or its 'value' is less than 2, then increment # Else (when the file exists, its value is equal or greater than 2, and its age is less than 30 seconds) reboot the system if [ -f "${FLAG_FILE}" ] && [[ $(find "${FLAG_FILE}" -newermt '-30 sec') == '' ]]; then echo '1' > "$FLAG_FILE" elif [ ! -f "${FLAG_FILE}" ] || (( $(cat "$FLAG_FILE") < 2 )); then touch "$FLAG_FILE" NEW_VALUE=$(( $(cat "$FLAG_FILE") + 1)) && echo "$NEW_VALUE" > "$FLAG_FILE" else systemctl reboot fi ] Сделайте его исполняемым: sudo chmod +x /etc/acpi/reboot.sh

Создайте скрипт /etc/acpi/reboot.sh и поместите в него следующие строки:

Проблема (в рамках этого подхода) мы должен использовать sudo для выполнения сценария и должен позволить пользователям делать это без пароля - здесь приводятся более подробные сведения об этом шаге: как мне запустить конкретный sudo c omsands без пароля? Поэтому мы должны собрать файл, расположенный в /etc/sudoers.d/, который называется, например, my_rbt. Для этого мы должны использовать команду visudo -f:

6
ответ дан 18 July 2018 в 14:39

У меня нет идеи, как использовать эту кнопку с GRUB, но есть как минимум два подхода, как сделать их пригодными для использования в Ubuntu. Например, если вы хотите связать команду перезагрузки с этой кнопкой, вы можете: (1) создать событие acpi или (2) создать пользовательский ярлык.

Создать acpi event и связать перезагрузите команду

Сначала вам нужно использовать acpi_listen и поймать событие при нажатии кнопки. Просто выполните команду acpi_listen и нажмите кнопку:

$ acpi_listen button/prog1 PROG1 00000080 00000000 K В приведенном выше примере button/prog1 PROG1 00000080 00000000 K - это событие в моей системе, когда я нажимаю обсуждаемую кнопку.

Затем вы должны создать файл, который будет обрабатывать это событие. Файл должен находиться в каталоге /etc/acpi/events/. Назовите его, например, reboot. Содержимое /etc/acpi/events/reboot должно быть похоже на:

# /etc/acpi/events/reboot # This will reboot the system event=button/prog1 PROG1 00000080 00000000 K action=systemctl reboot

Сохранить файл и перезапустить демона acpi:

sudo systemctl restart acpid.service

IMO это самый простой метод. Это должно работать также, когда пользователь не вошел в систему. Ниже приведено несколько ссылок, где вы можете найти дополнительную информацию и примеры:

В приведенном выше примере button/prog1 PROG1 00000080 00000000 K - это событие в моей системе, когда я нажмите [D7]. Ноутбук Ubuntu 17.10 не закрывается при закрытии крышки. Батарея стекает даже после выключения

Создайте acpi event и привяжите к ней сценарий

Мы можем добавить страховку, если вы случайно нажмете кнопку. Здесь мы создадим скрипт, который будет использовать файл tmp как флаг и счетчик, как описано здесь. Таким образом, перезагрузка системы будет выполняться, когда вы нажимаете кнопку три раза.

Измените /etc/acpi/events/reboot следующим образом: # /etc/acpi/events/reboot # This will reboot the system event=button/prog1 PROG1 00000080 00000000 K action=/etc/acpi/reboot.sh Перезапустите демона acpi: sudo systemctl restart acpid.service Создайте сценарий /etc/acpi/reboot.sh и установите следующие строки: #!/bin/bash FLAG_FILE="/tmp/sysyem_reboot_flag" # If the file exists and it is older than 30 seconds, then reset the counter # Else If the file doesn't exist or its 'value' is less than 2, then increment # Else (when the file exists, its value is equal or greater than 2, and its age is less than 30 seconds) reboot the system if [ -f "${FLAG_FILE}" ] && [[ $(find "${FLAG_FILE}" -newermt '-30 sec') == '' ]]; then echo '1' > "$FLAG_FILE" elif [ ! -f "${FLAG_FILE}" ] || (( $(cat "$FLAG_FILE") < 2 )); then touch "$FLAG_FILE" NEW_VALUE=$(( $(cat "$FLAG_FILE") + 1)) && echo "$NEW_VALUE" > "$FLAG_FILE" else systemctl reboot fi Сделать его исполняемым: sudo chmod +x /etc/acpi/reboot.sh

Теперь команда systemctl reboot будет выполняться, когда вы нажимаете кнопку три раза в течение 30 секунд.

]

Создайте custom shortcut и привяжите к нему скрипт

Измените /etc/acpi/events/reboot следующим образом: # /etc/acpi/events/reboot # This will reboot the system event=button/prog1 PROG1 00000080 00000000 K action=/etc/acpi/reboot.sh Перезапустите демона acpi: sudo systemctl restart acpid.service

Измените /etc/acpi/events/reboot следующим образом:

sudo visudo -f /etc/sudoers.d/my_rbt Содержимое файла должно быть: ALL ALL=NOPASSWD: /usr/local/bin/my_rbt Создайте сценарий /etc/acpi/reboot.sh и поместите в него следующие строки: #!/bin/bash FLAG_FILE="/tmp/sysyem_reboot_flag" # If the file exists and it is older than 30 seconds, then reset the counter # Else If the file doesn't exist or its 'value' is less than 2, then increment # Else (when the file exists, its value is equal or greater than 2, and its age is less than 30 seconds) reboot the system if [ -f "${FLAG_FILE}" ] && [[ $(find "${FLAG_FILE}" -newermt '-30 sec') == '' ]]; then echo '1' > "$FLAG_FILE" elif [ ! -f "${FLAG_FILE}" ] || (( $(cat "$FLAG_FILE") < 2 )); then touch "$FLAG_FILE" NEW_VALUE=$(( $(cat "$FLAG_FILE") + 1)) && echo "$NEW_VALUE" > "$FLAG_FILE" else systemctl reboot fi ] Сделайте его исполняемым: sudo chmod +x /etc/acpi/reboot.sh

Создайте скрипт /etc/acpi/reboot.sh и поместите в него следующие строки:

Проблема (в рамках этого подхода) мы должен использовать sudo для выполнения сценария и должен позволить пользователям делать это без пароля - здесь приводятся более подробные сведения об этом шаге: как мне запустить конкретный sudo c omsands без пароля? Поэтому мы должны собрать файл, расположенный в /etc/sudoers.d/, который называется, например, my_rbt. Для этого мы должны использовать команду visudo -f:

6
ответ дан 24 July 2018 в 20:26

У меня нет идеи, как использовать эту кнопку с GRUB, но есть как минимум два подхода, как сделать их пригодными для использования в Ubuntu. Например, если вы хотите связать команду перезагрузки с этой кнопкой, вы можете: (1) создать событие acpi или (2) создать пользовательский ярлык.

Создать acpi event и связать перезагрузите команду

Сначала вам нужно использовать acpi_listen и поймать событие при нажатии кнопки. Просто выполните команду acpi_listen и нажмите кнопку:

$ acpi_listen button/prog1 PROG1 00000080 00000000 K В приведенном выше примере button/prog1 PROG1 00000080 00000000 K - это событие в моей системе, когда я нажимаю обсуждаемую кнопку.

Затем вы должны создать файл, который будет обрабатывать это событие. Файл должен находиться в каталоге /etc/acpi/events/. Назовите его, например, reboot. Содержимое /etc/acpi/events/reboot должно быть похоже на:

# /etc/acpi/events/reboot # This will reboot the system event=button/prog1 PROG1 00000080 00000000 K action=systemctl reboot

Сохранить файл и перезапустить демона acpi:

sudo systemctl restart acpid.service

IMO это самый простой метод. Это должно работать также, когда пользователь не вошел в систему. Ниже приведено несколько ссылок, где вы можете найти дополнительную информацию и примеры:

В приведенном выше примере button/prog1 PROG1 00000080 00000000 K - это событие в моей системе, когда я нажмите [D7]. Ноутбук Ubuntu 17.10 не закрывается при закрытии крышки. Батарея стекает даже после выключения

Создайте acpi event и привяжите к ней сценарий

Мы можем добавить страховку, если вы случайно нажмете кнопку. Здесь мы создадим скрипт, который будет использовать файл tmp как флаг и счетчик, как описано здесь. Таким образом, перезагрузка системы будет выполняться, когда вы нажимаете кнопку три раза.

Измените /etc/acpi/events/reboot следующим образом: # /etc/acpi/events/reboot # This will reboot the system event=button/prog1 PROG1 00000080 00000000 K action=/etc/acpi/reboot.sh Перезапустите демона acpi: sudo systemctl restart acpid.service Создайте сценарий /etc/acpi/reboot.sh и установите следующие строки: #!/bin/bash FLAG_FILE="/tmp/sysyem_reboot_flag" # If the file exists and it is older than 30 seconds, then reset the counter # Else If the file doesn't exist or its 'value' is less than 2, then increment # Else (when the file exists, its value is equal or greater than 2, and its age is less than 30 seconds) reboot the system if [ -f "${FLAG_FILE}" ] && [[ $(find "${FLAG_FILE}" -newermt '-30 sec') == '' ]]; then echo '1' > "$FLAG_FILE" elif [ ! -f "${FLAG_FILE}" ] || (( $(cat "$FLAG_FILE") < 2 )); then touch "$FLAG_FILE" NEW_VALUE=$(( $(cat "$FLAG_FILE") + 1)) && echo "$NEW_VALUE" > "$FLAG_FILE" else systemctl reboot fi Сделать его исполняемым: sudo chmod +x /etc/acpi/reboot.sh

Теперь команда systemctl reboot будет выполняться, когда вы нажимаете кнопку три раза в течение 30 секунд.

]

Создайте custom shortcut и привяжите к нему скрипт

Измените /etc/acpi/events/reboot следующим образом: # /etc/acpi/events/reboot # This will reboot the system event=button/prog1 PROG1 00000080 00000000 K action=/etc/acpi/reboot.sh Перезапустите демона acpi: sudo systemctl restart acpid.service

Измените /etc/acpi/events/reboot следующим образом:

sudo visudo -f /etc/sudoers.d/my_rbt Содержимое файла должно быть: ALL ALL=NOPASSWD: /usr/local/bin/my_rbt Создайте сценарий /etc/acpi/reboot.sh и поместите в него следующие строки: #!/bin/bash FLAG_FILE="/tmp/sysyem_reboot_flag" # If the file exists and it is older than 30 seconds, then reset the counter # Else If the file doesn't exist or its 'value' is less than 2, then increment # Else (when the file exists, its value is equal or greater than 2, and its age is less than 30 seconds) reboot the system if [ -f "${FLAG_FILE}" ] && [[ $(find "${FLAG_FILE}" -newermt '-30 sec') == '' ]]; then echo '1' > "$FLAG_FILE" elif [ ! -f "${FLAG_FILE}" ] || (( $(cat "$FLAG_FILE") < 2 )); then touch "$FLAG_FILE" NEW_VALUE=$(( $(cat "$FLAG_FILE") + 1)) && echo "$NEW_VALUE" > "$FLAG_FILE" else systemctl reboot fi ] Сделайте его исполняемым: sudo chmod +x /etc/acpi/reboot.sh

Создайте скрипт /etc/acpi/reboot.sh и поместите в него следующие строки:

Проблема (в рамках этого подхода) мы должен использовать sudo для выполнения сценария и должен позволить пользователям делать это без пароля - здесь приводятся более подробные сведения об этом шаге: как мне запустить конкретный sudo c omsands без пароля? Поэтому мы должны собрать файл, расположенный в /etc/sudoers.d/, который называется, например, my_rbt. Для этого мы должны использовать команду visudo -f:

6
ответ дан 31 July 2018 в 11:13

У меня нет идеи, как использовать эту кнопку с GRUB, но есть как минимум два подхода, как сделать их пригодными для использования в Ubuntu. Например, если вы хотите связать команду перезагрузки с этой кнопкой, вы можете: (1) создать событие acpi или (2) создать пользовательский ярлык.

Создать acpi event и связать перезагрузите команду

Сначала вам нужно использовать acpi_listen и поймать событие при нажатии кнопки. Просто выполните команду acpi_listen и нажмите кнопку:

$ acpi_listen button/prog1 PROG1 00000080 00000000 K В приведенном выше примере button/prog1 PROG1 00000080 00000000 K - это событие в моей системе, когда я нажимаю обсуждаемую кнопку.

Затем вы должны создать файл, который будет обрабатывать это событие. Файл должен находиться в каталоге /etc/acpi/events/. Назовите его, например, reboot. Содержимое /etc/acpi/events/reboot должно быть похоже на:

# /etc/acpi/events/reboot # This will reboot the system event=button/prog1 PROG1 00000080 00000000 K action=systemctl reboot

Сохранить файл и перезапустить демона acpi:

sudo systemctl restart acpid.service

IMO это самый простой метод. Это должно работать также, когда пользователь не вошел в систему. Ниже приведено несколько ссылок, где вы можете найти дополнительную информацию и примеры:

В приведенном выше примере button/prog1 PROG1 00000080 00000000 K - это событие в моей системе, когда я нажмите [D7]. Ноутбук Ubuntu 17.10 не закрывается при закрытии крышки. Батарея стекает даже после выключения

Создайте acpi event и привяжите к ней сценарий

Мы можем добавить страховку, если вы случайно нажмете кнопку. Здесь мы создадим скрипт, который будет использовать файл tmp как флаг и счетчик, как описано здесь. Таким образом, перезагрузка системы будет выполняться, когда вы нажимаете кнопку три раза.

Измените /etc/acpi/events/reboot следующим образом: # /etc/acpi/events/reboot # This will reboot the system event=button/prog1 PROG1 00000080 00000000 K action=/etc/acpi/reboot.sh Перезапустите демона acpi: sudo systemctl restart acpid.service Создайте сценарий /etc/acpi/reboot.sh и установите следующие строки: #!/bin/bash FLAG_FILE="/tmp/sysyem_reboot_flag" # If the file exists and it is older than 30 seconds, then reset the counter # Else If the file doesn't exist or its 'value' is less than 2, then increment # Else (when the file exists, its value is equal or greater than 2, and its age is less than 30 seconds) reboot the system if [ -f "${FLAG_FILE}" ] && [[ $(find "${FLAG_FILE}" -newermt '-30 sec') == '' ]]; then echo '1' > "$FLAG_FILE" elif [ ! -f "${FLAG_FILE}" ] || (( $(cat "$FLAG_FILE") < 2 )); then touch "$FLAG_FILE" NEW_VALUE=$(( $(cat "$FLAG_FILE") + 1)) && echo "$NEW_VALUE" > "$FLAG_FILE" else systemctl reboot fi Сделать его исполняемым: sudo chmod +x /etc/acpi/reboot.sh

Теперь команда systemctl reboot будет выполняться, когда вы нажимаете кнопку три раза в течение 30 секунд.

]

Создайте custom shortcut и привяжите к нему скрипт

Измените /etc/acpi/events/reboot следующим образом: # /etc/acpi/events/reboot # This will reboot the system event=button/prog1 PROG1 00000080 00000000 K action=/etc/acpi/reboot.sh Перезапустите демона acpi: sudo systemctl restart acpid.service

Измените /etc/acpi/events/reboot следующим образом:

sudo visudo -f /etc/sudoers.d/my_rbt Содержимое файла должно быть: ALL ALL=NOPASSWD: /usr/local/bin/my_rbt Создайте сценарий /etc/acpi/reboot.sh и поместите в него следующие строки: #!/bin/bash FLAG_FILE="/tmp/sysyem_reboot_flag" # If the file exists and it is older than 30 seconds, then reset the counter # Else If the file doesn't exist or its 'value' is less than 2, then increment # Else (when the file exists, its value is equal or greater than 2, and its age is less than 30 seconds) reboot the system if [ -f "${FLAG_FILE}" ] && [[ $(find "${FLAG_FILE}" -newermt '-30 sec') == '' ]]; then echo '1' > "$FLAG_FILE" elif [ ! -f "${FLAG_FILE}" ] || (( $(cat "$FLAG_FILE") < 2 )); then touch "$FLAG_FILE" NEW_VALUE=$(( $(cat "$FLAG_FILE") + 1)) && echo "$NEW_VALUE" > "$FLAG_FILE" else systemctl reboot fi ] Сделайте его исполняемым: sudo chmod +x /etc/acpi/reboot.sh

Создайте скрипт /etc/acpi/reboot.sh и поместите в него следующие строки:

Проблема (в рамках этого подхода) мы должен использовать sudo для выполнения сценария и должен позволить пользователям делать это без пароля - здесь приводятся более подробные сведения об этом шаге: как мне запустить конкретный sudo c omsands без пароля? Поэтому мы должны собрать файл, расположенный в /etc/sudoers.d/, который называется, например, my_rbt. Для этого мы должны использовать команду visudo -f:

6
ответ дан 31 July 2018 в 12:13

У меня нет идеи, как использовать эту кнопку с GRUB, но есть как минимум два подхода, как сделать их пригодными для использования в Ubuntu. Например, если вы хотите связать команду перезагрузки с этой кнопкой, вы можете: (1) создать событие acpi или (2) создать пользовательский ярлык.

Создать acpi event и связать перезагрузите команду

Сначала вам нужно использовать acpi_listen и поймать событие при нажатии кнопки. Просто выполните команду acpi_listen и нажмите кнопку:

$ acpi_listen button/prog1 PROG1 00000080 00000000 K В приведенном выше примере button/prog1 PROG1 00000080 00000000 K - это событие в моей системе, когда я нажимаю обсуждаемую кнопку.

Затем вы должны создать файл, который будет обрабатывать это событие. Файл должен находиться в каталоге /etc/acpi/events/. Назовите его, например, reboot. Содержимое /etc/acpi/events/reboot должно быть похоже на:

# /etc/acpi/events/reboot # This will reboot the system event=button/prog1 PROG1 00000080 00000000 K action=systemctl reboot

Сохранить файл и перезапустить демона acpi:

sudo systemctl restart acpid.service

IMO это самый простой метод. Это должно работать также, когда пользователь не вошел в систему. Ниже приведено несколько ссылок, где вы можете найти дополнительную информацию и примеры:

В приведенном выше примере button/prog1 PROG1 00000080 00000000 K - это событие в моей системе, когда я нажмите [D7]. Ноутбук Ubuntu 17.10 не закрывается при закрытии крышки. Батарея стекает даже после выключения

Создайте acpi event и привяжите к ней сценарий

Мы можем добавить страховку, если вы случайно нажмете кнопку. Здесь мы создадим скрипт, который будет использовать файл tmp как флаг и счетчик, как описано здесь. Таким образом, перезагрузка системы будет выполняться, когда вы нажимаете кнопку три раза.

Измените /etc/acpi/events/reboot следующим образом: # /etc/acpi/events/reboot # This will reboot the system event=button/prog1 PROG1 00000080 00000000 K action=/etc/acpi/reboot.sh Перезапустите демона acpi: sudo systemctl restart acpid.service Создайте сценарий /etc/acpi/reboot.sh и установите следующие строки: #!/bin/bash FLAG_FILE="/tmp/sysyem_reboot_flag" # If the file exists and it is older than 30 seconds, then reset the counter # Else If the file doesn't exist or its 'value' is less than 2, then increment # Else (when the file exists, its value is equal or greater than 2, and its age is less than 30 seconds) reboot the system if [ -f "${FLAG_FILE}" ] && [[ $(find "${FLAG_FILE}" -newermt '-30 sec') == '' ]]; then echo '1' > "$FLAG_FILE" elif [ ! -f "${FLAG_FILE}" ] || (( $(cat "$FLAG_FILE") < 2 )); then touch "$FLAG_FILE" NEW_VALUE=$(( $(cat "$FLAG_FILE") + 1)) && echo "$NEW_VALUE" > "$FLAG_FILE" else systemctl reboot fi Сделать его исполняемым: sudo chmod +x /etc/acpi/reboot.sh

Теперь команда systemctl reboot будет выполняться, когда вы нажимаете кнопку три раза в течение 30 секунд.

]

Создайте custom shortcut и привяжите к нему скрипт

Измените /etc/acpi/events/reboot следующим образом: # /etc/acpi/events/reboot # This will reboot the system event=button/prog1 PROG1 00000080 00000000 K action=/etc/acpi/reboot.sh Перезапустите демона acpi: sudo systemctl restart acpid.service

Измените /etc/acpi/events/reboot следующим образом:

sudo visudo -f /etc/sudoers.d/my_rbt Содержимое файла должно быть: ALL ALL=NOPASSWD: /usr/local/bin/my_rbt Создайте сценарий /etc/acpi/reboot.sh и поместите в него следующие строки: #!/bin/bash FLAG_FILE="/tmp/sysyem_reboot_flag" # If the file exists and it is older than 30 seconds, then reset the counter # Else If the file doesn't exist or its 'value' is less than 2, then increment # Else (when the file exists, its value is equal or greater than 2, and its age is less than 30 seconds) reboot the system if [ -f "${FLAG_FILE}" ] && [[ $(find "${FLAG_FILE}" -newermt '-30 sec') == '' ]]; then echo '1' > "$FLAG_FILE" elif [ ! -f "${FLAG_FILE}" ] || (( $(cat "$FLAG_FILE") < 2 )); then touch "$FLAG_FILE" NEW_VALUE=$(( $(cat "$FLAG_FILE") + 1)) && echo "$NEW_VALUE" > "$FLAG_FILE" else systemctl reboot fi ] Сделайте его исполняемым: sudo chmod +x /etc/acpi/reboot.sh

Создайте скрипт /etc/acpi/reboot.sh и поместите в него следующие строки:

Проблема (в рамках этого подхода) мы должен использовать sudo для выполнения сценария и должен позволить пользователям делать это без пароля - здесь приводятся более подробные сведения об этом шаге: как мне запустить конкретный sudo c omsands без пароля? Поэтому мы должны собрать файл, расположенный в /etc/sudoers.d/, который называется, например, my_rbt. Для этого мы должны использовать команду visudo -f:

6
ответ дан 31 July 2018 в 23:29

Похоже, что для ноутбуков Lenovo (по крайней мере, мой G575) ключ OneKey Recovery - это еще один ключ.

Используя команду xev, вы можете узнать scancode. xev откроет окно с черным квадратом, наведите курсор на него и затем нажмите клавишу OKR.

KeyPress event, serial 51, synthetic NO, window 0x1600001,
    root 0x497, subw 0x1600002, time 1092364, (50,41), root:(52,479),
    state 0x0, keycode 156 (keysym 0x1008ff41, XF86Launch1), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 51, synthetic NO, window 0x1600001,
    root 0x497, subw 0x1600002, time 1092364, (50,41), root:(52,479),
    state 0x0, keycode 156 (keysym 0x1008ff41, XF86Launch1), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

Вы можете видеть код ключа как keycode 156. [!d2 ]

После нахождения кода ключа все, что вам нужно найти, - это сопоставление кода ключа с конкретным действием. Вот несколько полезных вопросов:

Как сделать ключ Caps Lock третьим ключом Shift? https://unix.stackexchange.com/questions/188164/override-a-few-keycodes-with-xkb
2
ответ дан 22 May 2018 в 23:26
  • 1
    не могли бы вы добавить, как это сделать? – Zanna 19 April 2017 в 14:18
  • 2
    @Mark благодарит за то, что показала мне способ отображения ключей, и я был бы признателен, если вы покажете мне, как это сделать, я спросил, потому что я не знаю. – Muaad ElSharif 19 April 2017 в 14:38
  • 3
    @Muaad Прошу прощения, но я не могу найти никаких ссылок на то, как это сделать, и, честно говоря, я никогда не потрудился отображать ключи, я знаю только, что это возможно. Предыдущие версии Ubuntu (до 13.04) использовали команду xmodmap, но с 13.04 вместо этого они использовали xkb. Я спросил вопрос о том, как использовать xkb. – Mark Yisri 20 April 2017 в 01:59
  • 4
    @Muaad См. Мой обновленный ответ. – Mark Yisri 1 February 2018 в 16:03

Похоже, что для ноутбуков Lenovo (по крайней мере, мой G575) ключ OneKey Recovery - это еще один ключ.

Используя команду xev, вы можете узнать scancode. xev откроет окно с черным квадратом, наведите курсор на него и затем нажмите клавишу OKR.

KeyPress event, serial 51, synthetic NO, window 0x1600001, root 0x497, subw 0x1600002, time 1092364, (50,41), root:(52,479), state 0x0, keycode 156 (keysym 0x1008ff41, XF86Launch1), same_screen YES, XLookupString gives 0 bytes: XmbLookupString gives 0 bytes: XFilterEvent returns: False KeyRelease event, serial 51, synthetic NO, window 0x1600001, root 0x497, subw 0x1600002, time 1092364, (50,41), root:(52,479), state 0x0, keycode 156 (keysym 0x1008ff41, XF86Launch1), same_screen YES, XLookupString gives 0 bytes: XFilterEvent returns: False

Вы можете видеть код клавиши как keycode 156.

После нахождения кода ключа все, что вам нужно найти, - это сопоставление кода ключа с конкретным действием. Вот несколько полезных вопросов:

Как сделать ключ Caps Lock третьим ключом Shift? https://unix.stackexchange.com/questions/188164/override-a-few-keycodes-with-xkb
2
ответ дан 18 July 2018 в 14:39

Похоже, что для ноутбуков Lenovo (по крайней мере, мой G575) ключ OneKey Recovery - это еще один ключ.

Используя команду xev, вы можете узнать scancode. xev откроет окно с черным квадратом, наведите курсор на него и затем нажмите клавишу OKR.

KeyPress event, serial 51, synthetic NO, window 0x1600001, root 0x497, subw 0x1600002, time 1092364, (50,41), root:(52,479), state 0x0, keycode 156 (keysym 0x1008ff41, XF86Launch1), same_screen YES, XLookupString gives 0 bytes: XmbLookupString gives 0 bytes: XFilterEvent returns: False KeyRelease event, serial 51, synthetic NO, window 0x1600001, root 0x497, subw 0x1600002, time 1092364, (50,41), root:(52,479), state 0x0, keycode 156 (keysym 0x1008ff41, XF86Launch1), same_screen YES, XLookupString gives 0 bytes: XFilterEvent returns: False

Вы можете видеть код клавиши как keycode 156.

После нахождения кода ключа все, что вам нужно найти, - это сопоставление кода ключа с конкретным действием. Вот несколько полезных вопросов:

Как сделать ключ Caps Lock третьим ключом Shift? https://unix.stackexchange.com/questions/188164/override-a-few-keycodes-with-xkb
2
ответ дан 24 July 2018 в 20:26
  • 1
    не могли бы вы добавить, как это сделать? – Zanna 19 April 2017 в 14:18
  • 2
    @Mark благодарит за то, что показала мне способ отображения ключей, и я был бы признателен, если вы покажете мне, как это сделать, я спросил, потому что я не знаю. – Muaad ElSharif 19 April 2017 в 14:38
  • 3
    @Muaad Прошу прощения, но я не могу найти никаких ссылок на то, как это сделать, и, честно говоря, я никогда не потрудился отображать ключи, я знаю только, что это возможно. Предыдущие версии Ubuntu (до 13.04) использовали команду xmodmap, но с 13.04 вместо этого они использовали xkb. Я спросил вопрос о том, как использовать xkb. – Mark Yisri 20 April 2017 в 01:59
  • 4
    @Muaad См. Мой обновленный ответ. – Mark Yisri 1 February 2018 в 16:03

Похоже, что для ноутбуков Lenovo (по крайней мере, мой G575) ключ OneKey Recovery - это еще один ключ.

Используя команду xev, вы можете узнать scancode. xev откроет окно с черным квадратом, наведите курсор на него и затем нажмите клавишу OKR.

KeyPress event, serial 51, synthetic NO, window 0x1600001, root 0x497, subw 0x1600002, time 1092364, (50,41), root:(52,479), state 0x0, keycode 156 (keysym 0x1008ff41, XF86Launch1), same_screen YES, XLookupString gives 0 bytes: XmbLookupString gives 0 bytes: XFilterEvent returns: False KeyRelease event, serial 51, synthetic NO, window 0x1600001, root 0x497, subw 0x1600002, time 1092364, (50,41), root:(52,479), state 0x0, keycode 156 (keysym 0x1008ff41, XF86Launch1), same_screen YES, XLookupString gives 0 bytes: XFilterEvent returns: False

Вы можете видеть код клавиши как keycode 156.

После нахождения кода ключа все, что вам нужно найти, - это сопоставление кода ключа с конкретным действием. Вот несколько полезных вопросов:

Как сделать ключ Caps Lock третьим ключом Shift? https://unix.stackexchange.com/questions/188164/override-a-few-keycodes-with-xkb
2
ответ дан 31 July 2018 в 11:13
  • 1
    не могли бы вы добавить, как это сделать? – Zanna 19 April 2017 в 14:18
  • 2
    @Mark благодарит за то, что показала мне способ отображения ключей, и я был бы признателен, если вы покажете мне, как это сделать, я спросил, потому что я не знаю. – Muaad ElSharif 19 April 2017 в 14:38
  • 3
    @Muaad Прошу прощения, но я не могу найти никаких ссылок на то, как это сделать, и, честно говоря, я никогда не потрудился отображать ключи, я знаю только, что это возможно. Предыдущие версии Ubuntu (до 13.04) использовали команду xmodmap, но с 13.04 вместо этого они использовали xkb. Я спросил вопрос о том, как использовать xkb. – Mark Yisri 20 April 2017 в 01:59
  • 4
    @Muaad См. Мой обновленный ответ. – Mark Yisri 1 February 2018 в 16:03

Похоже, что для ноутбуков Lenovo (по крайней мере, мой G575) ключ OneKey Recovery - это еще один ключ.

Используя команду xev, вы можете узнать scancode. xev откроет окно с черным квадратом, наведите курсор на него и затем нажмите клавишу OKR.

KeyPress event, serial 51, synthetic NO, window 0x1600001, root 0x497, subw 0x1600002, time 1092364, (50,41), root:(52,479), state 0x0, keycode 156 (keysym 0x1008ff41, XF86Launch1), same_screen YES, XLookupString gives 0 bytes: XmbLookupString gives 0 bytes: XFilterEvent returns: False KeyRelease event, serial 51, synthetic NO, window 0x1600001, root 0x497, subw 0x1600002, time 1092364, (50,41), root:(52,479), state 0x0, keycode 156 (keysym 0x1008ff41, XF86Launch1), same_screen YES, XLookupString gives 0 bytes: XFilterEvent returns: False

Вы можете видеть код клавиши как keycode 156.

После нахождения кода ключа все, что вам нужно найти, - это сопоставление кода ключа с конкретным действием. Вот несколько полезных вопросов:

Как сделать ключ Caps Lock третьим ключом Shift? https://unix.stackexchange.com/questions/188164/override-a-few-keycodes-with-xkb
2
ответ дан 31 July 2018 в 12:13
  • 1
    не могли бы вы добавить, как это сделать? – Zanna 19 April 2017 в 14:18
  • 2
    @Mark благодарит за то, что показала мне способ отображения ключей, и я был бы признателен, если вы покажете мне, как это сделать, я спросил, потому что я не знаю. – Muaad ElSharif 19 April 2017 в 14:38
  • 3
    @Muaad Извините, но я не могу найти ссылок на то, как это сделать, и, честно говоря, я никогда не беспокоился о том, чтобы отображать ключи, я знаю только, что это возможно. Предыдущие версии Ubuntu (до 13.04) использовали команду xmodmap, но с 13.04 вместо этого они использовали xkb. Я спросил вопрос о том, как использовать xkb. – Mark Yisri 20 April 2017 в 01:59
  • 4
    @Muaad См. Мой обновленный ответ. – Mark Yisri 1 February 2018 в 16:03

Похоже, что для ноутбуков Lenovo (по крайней мере, мой G575) ключ OneKey Recovery - это еще один ключ.

Используя команду xev, вы можете узнать scancode. xev откроет окно с черным квадратом, наведите курсор на него и затем нажмите клавишу OKR.

KeyPress event, serial 51, synthetic NO, window 0x1600001, root 0x497, subw 0x1600002, time 1092364, (50,41), root:(52,479), state 0x0, keycode 156 (keysym 0x1008ff41, XF86Launch1), same_screen YES, XLookupString gives 0 bytes: XmbLookupString gives 0 bytes: XFilterEvent returns: False KeyRelease event, serial 51, synthetic NO, window 0x1600001, root 0x497, subw 0x1600002, time 1092364, (50,41), root:(52,479), state 0x0, keycode 156 (keysym 0x1008ff41, XF86Launch1), same_screen YES, XLookupString gives 0 bytes: XFilterEvent returns: False

Вы можете видеть код клавиши как keycode 156.

После нахождения кода ключа все, что вам нужно найти, - это сопоставление кода ключа с конкретным действием. Вот несколько полезных вопросов:

Как сделать ключ Caps Lock третьим ключом Shift? https://unix.stackexchange.com/questions/188164/override-a-few-keycodes-with-xkb
2
ответ дан 31 July 2018 в 23:29
  • 1
    не могли бы вы добавить, как это сделать? – Zanna 19 April 2017 в 14:18
  • 2
    @Mark благодарит за то, что показала мне способ отображения ключей, и я был бы признателен, если вы покажете мне, как это сделать, я спросил, потому что я не знаю. – Muaad ElSharif 19 April 2017 в 14:38
  • 3
    @Muaad Прошу прощения, но я не могу найти никаких ссылок на то, как это сделать, и, честно говоря, я никогда не потрудился отображать ключи, я знаю только, что это возможно. Предыдущие версии Ubuntu (до 13.04) использовали команду xmodmap, но с 13.04 вместо этого они использовали xkb. Я спросил вопрос о том, как использовать xkb. – Mark Yisri 20 April 2017 в 01:59
  • 4
    @Muaad См. Мой обновленный ответ. – Mark Yisri 1 February 2018 в 16:03

Другие вопросы по тегам:

Похожие вопросы: