Bagaimana cara kerja tombol Fn?

26

Saya ingin tahu cara Fnkerja tombol di laptop saya. Saya pikir ada modul kernel yang menangkap Fnkunci dan memanggil beberapa skrip untuk melakukan sesuatu. Di laptop saya, Fn+ F2beralih daya nirkabel dan gigi biru.

ini adalah output acpi_listen, ketika saya menekan Fn+F2

hotkey ATKD 0000005d 00000019
hotkey ATKD 0000007e 00000009

dan, folloing adalah output xevuntuk Fn+F2

keycode 238 press
keycode 238 release
keycode 237 press
keycode 237 release

Saya kira setiap kali saya menekan Fn+ F2dua acara dilompati. Saya mencoba menemukan tindakan apa yang dijalankan untuk kunci ini. ide dihargai;)

soroosh
sumber

Jawaban:

26

Synetech memberikan penjelasan yang sangat mudah dibaca tentang Fnkunci - kunci di sini

Detail Teknis

Ketika Anda menekan tombol pada keyboard, pengontrol keyboard (sebuah chip IC kecil di dalam keyboard) mendeteksi sirkuit listrik dan memprosesnya untuk memecahkan kode tombol mana yang ditekan dan kemudian mengirim scancode ke motherboard . Sistem operasi menerima scancode dari BIOS dan kemudian melakukan tindakan apa pun yang diperlukan untuk memproses penekanan tombol itu.

Dengan sebagian besar tombol, ini cukup sederhana. Jika Anda menekan A tombol, pengontrol keyboardnya mengirimkan scancode ke motherboard yang kemudian meneruskannya ke OS yang pada gilirannya biasanya mencetak 'A'. (Jika OS mendeteksi bahwa salah satu tombol pengubah saat ini ditekan, maka itu dapat melakukan sesuatu yang berbeda. Bahkan, Anda dapat mengonfigurasinya untuk melakukan apa pun yang Anda inginkan ketika Atombol ditekan dengan atau tanpa pengubah.)

Sekarang Fnkuncinya spesial. Ketika Anda menekannya dengan sendirinya, tidak ada yang terjadi karena itu adalah kunci pengubah secara eksklusif dan (umumnya) tidak dimaksudkan untuk melakukan apa pun dengan sendirinya. Saat Anda memegangnya dan menekan tombol lain, pengontrol keyboard mendeteksi dan melihat di tabel bawaannya untuk melihat apakah itu merupakan kombinasi yang diketahui. Jika kombo tidak ada dalam tabel, maka itu hanya mengabaikannya, tetapi jika kombo ada di dalam tabel, maka itu akan mencari scancode yang terkait dan mengirimkannya.

Apa yang akhirnya dilihat OS? Itu tidak melihat scancode untuk Fnkunci dan scancode untuk kunci lainnya. Sebagai gantinya, ia melihat satu scancode yang terkait dengan fungsi apa pun yang telah diatur oleh Fn-combo. Sebagai contoh, jika pabrikan laptop telah mengatur Fn+ Down Arrowcombo untuk mengurangi volume, maka OS akan melihat scancode yang terkait dengan Volume Down, yang sebenarnya dimiliki oleh beberapa keyboard.

Perhatikan juga bahwa Fnkunci tersebut bekerja secara independen dari sistem operasi.

Selain itu, artikel ini dapat membantu mengarahkan Anda ke arah yang benar:

Kernel memiliki sendiri scancodeke keycodemeja pemetaan, sehingga memetakan sebuah scancode tertentu untuk keycode a. Anda dapat melihat /usr/include/linux/input.h untuk melihat apa yang digunakan oleh kernel Anda untuk pemetaan kode kunci ke kode kunci - disebut a keymap.


Nota bene

Saya mungkin perlu agak mengingkari klaim sebelumnya bahwa Fnkunci bekerja sepenuhnya terlepas dari OS; tanpa masuk ke rincian teknis lebih lanjut di sini, hasilnya tampaknya OS Anda mungkin tidak "mendukung" semua atau beberapa Fntombol keyboard Anda , lihat, misalnya:

gila tentang natty
sumber
1
Terima kasih, informasi menarik tentang kunci Fn, Sebenarnya saya ingin mencari bagian OS yang scancodeterkait dengan, misalnya, "kode kunci 238".
soroosh
3
Mungkin artikel ini dapat membantu mengarahkan Anda ke arah yang benar? "Kernel memiliki sendiri scancodeke keycodemeja pemetaan, sehingga memetakan sebuah scancode tertentu untuk keycode Anda dapat melihat ke dalam /usr/include/linux/input.h untuk melihat apa kegunaan kernel Anda untuk scancode untuk pemetaan keycode -. Itu disebut keymap. "
gila tentang natty
1
Artikel itu sempurna, Ini yang saya cari
soroosh