Bagaimana cara mengatur Ubuntu untuk secara otomatis mengaktifkan NumLock ketika keyboard eksternal terpasang dan mati ketika tidak?

12

Mengaktifkan NumLock nyaman ketika menggunakan keyboard eksternal berukuran penuh (memiliki keypad) dan sangat merepotkan saat menggunakan keyboard bawaan laptop (yang menempatkan digit alih-alih huruf pada sisi kanan keyboard kecuali Fn ditekan).

Jadi saya harus menyalakan NumLock setiap kali saya memasang keyboard eksternal (atau boot dengan itu terpasang) dan mematikan setiap kali saya melepaskan keyboard eksternal (atau boot dengan itu terlepas). Dan saya sering melakukan ini karena saya lebih suka menggunakan keyboard eksternal berukuran penuh, tetapi tidak cukup (hanya 3) port USB untuk plug-in bersama dengan mouse, modem 3G dan drive hard / flash eksternal.

Bisakah saya mengotomatiskan ini? Tampaknya tugas yang sangat formal, sederhana logis: jika ada keyboard USB terpasang (beberapa perangkat di / dev hadir?) - NumLock aktif, jika tidak - NumLock tidak aktif. Keyboard bawaan laptop saya adalah PS / 2-terpasang, eksternal adalah USB.

Mungkin saya harus mengkodekannya sendiri, tetapi di mana memasukkannya ke dalam case ini?

Saya menggunakan Ubuntu 10.10.

Ivan
sumber

Jawaban:

14

Pertama, instal numlockx ( klik di sini untuk menginstal numlockx ). Pada dasarnya ini memungkinkan Anda untuk menulis skrip untuk mengatur status Num Lock - lihat halaman manual numlockx untuk detailnya.

Selanjutnya kita perlu mulai menggali kesenangan dari aturan udev. Pertama, kita perlu mencari tahu bagaimana keyboard diidentifikasi. Anda dapat melakukannya dengan

ls /dev/input/by-id/

Ini akan memberi Anda beberapa nama file yang dapat dibaca manusia (yang merupakan tautan lunak ke nama sebenarnya yang tidak dapat dibaca). Keyboard saya adalah

/dev/input/by-id/usb-KINESIS_FREESTYLE_KB700_KB700_Kinesis_Freestyle-event-kbd

Jadi kita perlu mencari tahu semua info tentang keyboard. aku melakukannya

udevadm info -a -p $(udevadm info -q path -n /dev/input/by-id/usb-KINESIS_FREESTYLE_KB700_KB700_Kinesis_Freestyle-event-kbd)

Tapi masukkan jalur Anda sendiri di sana tentunya. Anda akan mendapatkan banyak info, tetapi Anda ingin melihat pada blok pertama yang memberi nama keyboard dan miliki SUBSYSTEMS=="usb". (Daripada pengontrol USB atau apa pun). Dalam kasus saya itu adalah:

  looking at parent device '/devices/pci0000:00/0000:00:1a.0/usb3/3-2/3-2.3':
    KERNELS=="3-2.3"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 2"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="a0"
    ATTRS{bMaxPower}==" 50mA"
    ATTRS{urbnum}=="6284"
    ATTRS{idVendor}=="058f"
    ATTRS{idProduct}=="9410"
    ATTRS{bcdDevice}=="0122"
    ATTRS{bDeviceClass}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="8"
    ATTRS{speed}=="1.5"
    ATTRS{busnum}=="3"
    ATTRS{devnum}=="3"
    ATTRS{devpath}=="2.3"
    ATTRS{version}==" 1.10"
    ATTRS{maxchild}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"
    ATTRS{manufacturer}=="KINESIS FREESTYLE KB700"
    ATTRS{product}=="KB700 Kinesis Freestyle"

Jadi sekarang kami memiliki informasi yang cukup untuk menulis beberapa aturan. Gunakan editor favorit Anda untuk membuat /etc/udev/rules.d/10-local.rulesdan memasukkan:

BUS=="usb",ATTRS{product}=="KB700 Kinesis Freestyle",ACTION=="add",RUN+="/usr/bin/numlockx on"
BUS=="usb",ATTRS{product}=="KB700 Kinesis Freestyle",ACTION=="remove",RUN+="/usr/bin/numlockx off"

Sekali lagi, masukkan nama keyboard Anda di sini, dan ATTRS jika berbeda. Maka seharusnya bekerja :)

Catatan saya belum dapat menguji ini, meskipun saya telah menjalankan semua perintah sampai membuat file aturan. Dan sumber jika Anda perlu melakukan penyelidikan lebih lanjut adalah:

Hamish Downer
sumber
Terima kasih banyak, bagus sekali. Sejujurnya, saya tidak berharap mendapat jawaban sedekat itu dengan informatif. Saya berharap saya bisa memberikannya lebih dari sekadar memperbaiki dan memberi +1. Saya harap semua yang telah membintangi dan memberikan suara untuk pertanyaan saya juga akan memberi Anda penghargaan.
Ivan
1

Jika Anda menggunakan shell Gnome3.

Instal numlockx

kemudian luncurkan preferensi aplikasi Startup gnome-session-properties

Gambar (pengguna baru tidak dapat memposting gambar :))

Klik Tambah

Tuliskan apa saja di kolom nama dan ke kolom perintah salin ini:numlockx on

Gambar

Lukas Ignatavičius
sumber
0

Saya tidak yakin apa yang saya lakukan berbeda, karena numlock saya pada keyboard ini secara default menjadi aktif (Ini adalah keyboard Mac Pro Aluminium). Ada beberapa instruksi di sini yang harus melakukan trik.

Semoga ini membantu!

Craig Maloney
sumber
0

Jika Anda menggunakan gnome-shell, maka Anda dapat menginstal status Numlock & Capslock pada ekstensi panel "Kunci Kunci". Tolong, temukan di sini

Tatui1969
sumber