Solusi menggunakan halevt
Menurut halaman manual halevt
adalah penangan generik untuk acara HAL. Itu sudah usang dan digantikan oleh udev
, tetapi karena saya tidak cukup tahu tentang udev
saya akan memberikan halevt
solusi.
EDIT: setelah keringat yang serius, saya berhasil melakukannya udev
. Lihat jawaban saya yang lain .
Saya akan gunakan vim
untuk mengedit file, tetapi jika Anda tidak tahu vim
Anda bisa menggantinya dengan nano
atau gedit
.
Instalasi terhenti
sudo apt-get update && sudo apt-get install halevt
Menentukan peristiwa mana yang ingin Anda ikat ke skrip
Hentikan halevt
daemon yang sudah berjalan:
sudo /etc/init.d/halevt stop
Sekarang lihat apakah halevt
dapat mengenali peristiwa tombol yang ingin Anda gunakan, mulai pendengar:
sudo -u halevt halevt -fig:plugdev
Sekarang tekan tombol fungsi di papan ketik yang ingin Anda ikat skrip. Saya tahu bahwa OP ingin mendapatkan kunci kecerahannya bekerja, jadi mari kita pergi dengan itu. Output untuk tombol kecerahan akan terlihat seperti ini:
Condition: /org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port_logicaldev_input,ButtonPressed (brightness-down)
Condition: /org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port_logicaldev_input,ButtonPressed (brightness-up)
Anda dapat melihat bahwa brightness-down
dan brightness-up
peristiwa ditransmisikan.
Bind event ke skrip
Sekarang edit file /etc/halevt/halevt.xml
:
sudo vim /etc/halevt/halevt.xml
dan tambahkan baris berikut (saya melakukannya di bagian bawah, tepat sebelum </halevt:Configuration>
):
<halevt:Device match="hal.info.category = input">
<halevt:Condition name="ButtonPressed" value="brightness-up" exec="sudo /home/user/brightness-script.sh up"/>
<halevt:Condition name="ButtonPressed" value="brightness-down" exec="sudo /home/user/brightness-script.sh down"/>
</halevt:Device>
di mana tentu saja Anda harus mengubah value
ke acara yang Anda dapatkan dari pendengar, dan exec
dengan perintah yang ingin Anda jalankan.
Berikan izin pengguna yang terhenti untuk melakukan perintah atau skrip
Karena halevt
daemon dijalankan sebagai halevt
pengguna, Anda harus memberinya izin untuk melakukan apa yang Anda tentukan exec
.
Jalankan (ingat untuk mengganti vim
dengan editor pilihan Anda)
sudo EDITOR=vim visudo
dan tambahkan baris berikut di bagian bawah
halevt ALL=(root) NOPASSWD: /home/user/brightness-script.sh
dan simpan dan keluar.
Pastikan skrip Anda dapat dieksekusi
sudo chmod +x /home/user/brightness-script.sh
Mulai daemon yang terhenti lagi
sudo /etc/init.d/halevt start
Dan itu seharusnya bekerja!
udev
. Tapi jangan ragu untuk tetap dengan solusi yang lain, yang penting itu berhasil;)E: Unable to locate package halevt
pada 14,04.Solusi menggunakan udev
Karena HAL sudah usang dan
udev
sekarang digunakan, pendekatan ini lebih disukai daripada jawaban saya yang lain (walaupun saya pikir solusi menggunakan HAL lebih sederhana).Namun untuk banyak tombol fungsi Anda cukup menggunakan Pengaturan Sistem> Keyboard> Pintasan untuk mengikat skrip, coba ini dulu! Ini menghemat banyak masalah. Misalnya, tombol kecerahan ini tidak berfungsi (saya tidak tahu mengapa tidak), jadi jika Anda ingin tahu cara mengubah perilaku misalnya tombol kecerahan, baca terus.
CATATAN : Jika Anda menjalankan notebook Samsung, Anda dapat memperbaiki semua tombol fungsi (tergantung model) dengan menginstal
samsung-tools
paket dari http://www.voria.org/forum/Howto ini mengasumsikan Anda tahu cara menggunakan terminal, dan menggunakan
vim
editor. Jika Anda tidak tahu,vim
harap ganti dengan perintah dengan salah satugedit
ataunano
.Menentukan keyboard Anda
harus mencetak keyboard yang terhubung ke komputer, dalam kasus saya
Sekarang ada dua opsi:
Keyboard USB :
Jika Anda ingin memetakan kembali keyboard USB Anda, periksa dengan menjalankan
di mana Anda harus mengganti angka 9 dalam pernyataan awk dengan nomor yang benar. Outputnya harus sama dengan
yang dengan benar menunjukkan bahwa keyboard saya ditangani melalui Logitech USB Receiver saya (input / event7 ternyata adalah mouse Logitech G9 saya yang memiliki beberapa tombol yang dapat diprogram).
Keyboard Laptop :
Jika Anda ingin memetakan kembali keyboard laptop Anda, Anda harus mengingat angka
AT keyboard
4 di dalam kasus saya. Dapatkan juga informasi dmi untuk laptop Anda:yang ada dalam kasus saya
dan
yang ada dalam kasus saya
Tentukan pemetaan Anda saat ini dari tombol fungsi Anda
Sekarang kita dapat menentukan penekanan tombol kita saat ini dengan mendengarkan keyboard (masukkan nomor yang benar)
Anda dapat keluar dari perintah ini dengan menggunakan Escdi keyboard, atau Ctrl+ cdi keyboard lain.
Jika layar Anda mulai bergulir sangat keras, tekan Escdan Ctrl+ cbeberapa kali dan coba lagi dengan
atau, jika Anda masih memiliki masalah pengguliran
Dalam kasus terakhir Anda masih akan memiliki scroll tetapi jika Anda menekan tombol fungsi mereka harus pergi ke
~/keymap.log
tempat Anda dapat membacanya nanti.Sekarang kita dapat memeriksa pemetaan saat tombol Fungsi Anda dengan menekan mereka, yang harus memberikan daftar seperti (ini saya Fn+ F1melalui Fn+ F12):
Sekarang tulis kode pindai yang ingin Anda ubah perilaku.
Mengubah kode kunci untuk kode pindai
Jika Anda melihat kode kunci dengan jelas tidak mencakup apa yang Anda harapkan dari kunci tersebut, Anda dapat melihat di
/usr/include/linux/input.h
bawah Tombol dan tombol untuk melihat apakah ada kode kunci yang lebih cocok dengan apa yang sebenarnya Anda inginkan terjadi. Kode kunci ada dalam formatKEY_KEYCODE
dan Anda harus menuliskan bagian setelahKEY_
dalam huruf kecil. Terkadang mengubah ini sudah cukup untuk menyelesaikan masalah.Namun tombol kecerahan seringkali memiliki kode kunci yang tepat yang terkait dengannya, dan inilah yang tidak memungkinkannya untuk dipetakan kembali. Jadi kita perlu mengubahnya ke kode kunci lain. Kami akan menggunakan
prog1
danprog2
untuk contoh ini karena ini tidak digunakan di komputer saya, namun Anda juga dapat menggunakanf13
melaluif24
, atauf20
melaluif24
jika Anda memiliki keyboard Apple yang memiliki F1melalui F19tombol.Buat custom keymap :
Buat file keymap di direktori
/lib/udev/keymaps
dengan nama yang cocok, lihat outputls /lib/udev/keymaps
untuk melihat nama yang cocok. Saya pergi dengancustom-brightness
tujuan dari pertanyaan ini.dan masukkan kode pindaian dari tombol yang ingin Anda ubah diikuti oleh scancode yang Anda inginkan.
custom-brightness
Penampilan saya seperti ini:Buat file rilis kunci khusus. Hanya jika Anda
mengganti keyboard laptop Anda : Terkadang acara pelepasan kunci tidak terkirim dengan benar, menyebabkan komputer macet. Untuk menghindari ini, kami juga akan menulis file rilis kunci khusus
file ini harus berisi kode pindai yang sama, seperti milik saya
Pastikan bahwa pemetaan baru dimuat dalam file aturan
Sekarang kita perlu memastikan bahwa pemetaan Anda dimuat. Kita dapat melakukan ini dengan mengedit
/lib/udev/rules.d/95-keymap.rules
, jadi pintar untuk membuat cadanganSekali lagi kami memiliki dua opsi:
Keyboard USB :
Karena Anda memiliki keyboard USB, Anda harus menambahkan entri Anda di bawah
LABEL="keyboard_usbcheck"
dan itu harus melewati entri lain dari produsen keyboard Anda. Ini karena keyboard saya dengansudah dicocokkan dengan salah satu aturan, dan jika tidak maka akan ditimpa.
Tambahkan aturan berikut, di mana Anda harus mengubah
ID_VENDOR_ID
danID_MODEL_ID
dan nama keymap Anda dengan tepatKeyboard laptop :
Jika
/lib/udev/findkeyboards
dilaporkan keyboard laptopAT keyboard
Anda sebagai aturan Anda harus di bawahLABEL="keyboard_vendorcheck"
, jika tidak, letakkan di bawahLABEL="keyboard_modulecheck"
. Sekali lagi letakkan di bawah entri lain untuk produsen laptop Anda. Tambahkan aturan berikut (SAMSUNG ELECTRONICS CO., LTD.
agak panjang jadi saya menggunakan wildcard`)Sekarang juga tambahkan aturan
/lib/udev/rules.d/95-keyboard-force-release.rules
setelah mencadangkannyaLagi di bawah entri lain dari pabrikan Anda tambahkan
Pastikan udev memuat aturan baru
Untuk memuat aturan baru berjalan
CATATAN:
udevadm control --reload-rules
(masih dalam instruksi di banyak situs web) tidak berfungsi.Sekarang periksa apakah aturan berhasil diterapkan oleh
yang sekarang seharusnya melaporkan untuk tombol kecerahan
Memetakan kembali kunci dalam Pengaturan Sistem
Jika langkah terakhir melaporkan kode kunci yang benar, salah satu kunci mulai bekerja secara otomatis (jika mereka pertama kali memiliki kode kunci yang salah).
Untuk kecerahan Anda masih harus mengikat tombol ke skrip yang sekarang mungkin menggunakan Pengaturan Sistem> Keyboard> Pintasan .
Nikmati
Catatan :
Jika kunci Anda salah kode kunci dan diperbaiki dengan pendekatan ini, silakan ikuti petunjuk di
/usr/share/doc/udev/README.keymap.txt.gz
(Anda dapat membuka ini tanpa mengekstraksi menggunakanzless
) dan mengirimkan hasil Anda alamat email yang disebutkan di sana, maka perubahan dapat dimasukkan dalam rilis berikutnya. Banyak pengguna akan mendapat manfaat!Terima kasih banyak untuk posting bermanfaat ini oleh Vaidas Jablonskis.
sumber
$ /lib/udev/findkeyboards bash: /lib/udev/findkeyboards: No such file or directory
juga$ /lib/udev/findkeyboards bash: /lib/udev/findkeyboards: No such file or directory