Tetap aktifkan NumLock

29

Saya memiliki keyboard standar dengan tombol angka di sisi kanan (saya kira itu disebut keyboard 104-tombol). Saya ingin menggunakan tombol angka hanya sebagai tombol angka. Itu berarti, saya tidak ingin NumLockmenghidupkan dan mematikan tombol angka.

Namun, kadang-kadang itu terjadi (saya tidak tahu caranya, mungkin oleh saya secara tidak sengaja menekan NumLocktombol) bahwa numlock dimatikan, dan saya harus menekannya lagi. Ini sangat menjengkelkan.

Apakah mungkin untuk menonaktifkan mematikan numlock?

Dengan kata lain: Saya ingin kunci numerik saya selalu bertindak sebagai tombol angka, dan untuk menonaktifkan sakelar numlock .

Saya menggunakan Debian dan LXDE (Openbox).

Martin Vegter
sumber
@ MartinVegter Anda ingin memposting di sini konten ~/.config/openbox/autostartdan ~/.config/openbox/rc.xml?
Risto Salminen
Perlu acara, yang akan memicu Numlock mati lagi jika mendeteksi bahwa numlock AKTIF. Menonaktifkan numlock semudah disebutkan oleh xmodmap. Hanya pertanyaan yang tersisa adalah bagaimana cara mendapatkan acara itu ......?
SHW

Jawaban:

7

Setelah membaca semua jawaban di sini saya cukup terkejut melihat bahwa Anda dapat melakukan hal berikut.

<keybind key="Num_Lock">
  <action name="Execute">
    <command>numlockx on</command>
  </action>
</keybind>

Jadi setiap kali Anda menekan Num, yang menonaktifkan numlock. Itu akan mengeksekusi numlockx on, yang mengaktifkan kembali numlock.

Nama itu berasal dari output saya xevyang memberi saya kode kunci 77 dan namanyaNum_Lock

Dalam kasus @MartinVegters ia perlu menunggu beberapa detik sehingga numlockx onpasti akan dieksekusi setelah acara Numditangani. Karena ada kondisi perlombaan antara penanganan numlock di kernel dan eksekusi numlockx.

Untuk kasus ini, Anda dapat menulis skrip kecil denumlock.shseperti

#!/bin/sh

sleep "$1"
numlockx on

dan menggunakannya dalam Kunci mengikat

<command>/bin/sh denumlock.sh 1</command>

Ini kotor tetapi berhasil.

Apa yang saya rekomendasikan adalah yang tidak bisa saya uji sendiri. Anda sebaiknya mengikuti jawaban pertama yang menyarankan untuk digunakan

xmodmap -e 'keycode 77 = Escape'

Tetapi untuk LXDE Anda perlu menggunakan mekanisme autostart LXDE yang berbeda dari cara Openbox mengedit ~/.config/openbox/autostart.

Di LXDE Anda tampaknya perlu mengedit ~/.config/lxsession/LXDE/autostartatau menggunakan Lubuntu ~/.config/lxsession/Lubuntu/autostart, yang memegang perintah untuk memulai. (Lihat Arch docs dan LXDE docs ) Anda mungkin perlu membuat file itu dan menambahkan baris ini.

@xmodmap -e 'keycode 77 = Escape'

Sayangnya, seperti yang saya katakan saya tidak dapat menguji apakah ini berfungsi, karena saya hanya memiliki VM yang berjalan dengan LXDE.

Raphael Ahrens
sumber
1
Saya telah mencoba solusi Anda <keybind key="Num_Lock">tetapi sayangnya itu tidak berhasil. Ketika perintah numlockx ondieksekusi, <kbd> NumLock </kbd> masih menjual fungsinya sebagai numlock. Jadi saya masih bisa mengaktifkan / menonaktifkan numlock.
Martin Vegter
Mengenai solusi lain, menggunakan xmodmap, ketika saya mencoba solusi yang disarankan oleh Risto Salminen, perintah itu berhasil, tetapi saya telah kehilangan semua ikatan utama saya.
Martin Vegter
@ MartinVegter Mhh, Anda dapat mencoba sleep 3; numlockx onuntuk mengikat kunci. Untuk solusi kedua, sudahkah Anda mencobanya dengan autostart?
Raphael Ahrens
Saya tidak mengerti mengapa, tetapi bahkan sleep 3; /usr/bin/numlockx ontidak berhasil. NumLockmasih bertindak sebagai sakelar hidup / mati.
Martin Vegter
@ MartinVegter /usr/bin/numlockx onberfungsi pada sistem Anda?
Raphael Ahrens
13

mungkin oleh saya secara tidak sengaja menekan NumLockkunci

Jika keyboard milik Anda (bukan majikan misalnya), cukup lepaskan dari keyboard secara fisik.

Anda masih dapat menekannya dengan hal yang runcing jika Anda benar-benar perlu melakukannya.

masukkan deskripsi gambar di sini


sumber
4
Ya, +1. Sederhana itu elegan.
ypercubeᵀᴹ
1
sayangnya kondisi default NumLuck saya adalah yang salah :(
MichaelChirico
6

Di keyboard laptop saya (Ubuntu 10.04) kunci keyboard saat ini Hidup.

$ xmodmap -pke|grep 77
keycode  77 = Num_Lock Pointer_EnableKeys Num_Lock Pointer_EnableKeys
keycode 177 = XF86Phone NoSymbol XF86Phone
$ xmodmap -e "keycode 77 ="

Voila! numlock sekarang dinonaktifkan.

xmodmap -e "keycode  77 = Num_Lock Pointer_EnableKeys Num_Lock Pointer_EnableKeys"

Pasang kembali. (Mungkin mencari Num_lock akan menjadi ide yang lebih baik, tetapi Anda mendapatkan intinya).

Membalas komentar @Martin Vegter.

Oke , sebagai balasan atas komentar Anda, xmodmap merusak ikatan Anda, dimengerti.

Saya baru saja memeriksa Dokumentasi Openbox

Lihatlah ~ / .config / openbox / lxde-rc.xml

ls -l lxde-rc.xml (apakah Anda memiliki rc.xml juga?, harap periksa).

ambil salinannya sebagai cadangan

(gunakan editor) mencari numlock (mungkin nmlk).

Apakah Anda melihat sesuatu seperti ini?

<keybind key="Numlock">
<action name="whatEverItSays"/>
</keybind>

Berikan komentar ATAU ubah Nilai kunci-kunci kunci ke alternatif, mis. Alt-Numlock untuk beralih

key="A-Numlock"

Misalnya

Untuk Berkomentar

<!-Commented out from here
    <keybind key="Numlock">
    <action name="whatEverItSays"/>
    </keybind>
To Here -->

atau

Ubah ke Alt + Numlock untuk beralih

<keybind key="A-Numlock">
  <action name="whatEverItSays"/>
</keybind>

simpan perubahan dan logout / login atau restart.

X Tian
sumber
Masalahnya adalah, setiap xmodmapperintah (yaitu xmodmap -e 'keycode 77 = Escape') menghancurkan ikatan-kunci saya yang ada yang didefinisikan dalam.config/openbox/lxde-rc.xml
Martin Vegter
1
Saya telah menjawab di atas untuk mendapatkan format yang lebih baik.
X Tian
terima kasih untuk balasan Anda. Namun, di saya .config/openbox/lxde-rc.xml, tidak ada baris yang mengandung Numlockatau Num_Lock. Ketika saya membuat satu, itu tidak berpengaruh: <keybind key = "Num_Lock"> <action name = "Execute"> <command> / bin / true </command> </action> </keybind>
Martin Vegter
1
Harus ada file konfigurasi lain yang dibaca sebelum yang ada di direktori home Anda. dua tempat yang saya sarankan cari, / etc / xdg / openbox dan / usr / share / ... Jika ini tidak membantu, saya harus menyerah - maaf.
X Tian
dari 3.4.7 log yang diubah (openbox) "Memperbaiki binding kunci hilang jika beberapa binding pada level yang sama tidak dapat diterjemahkan (Memperbaiki VMWare menyebabkan Openbox keybindings berhenti bekerja)"
X Tian
5

Temukan kode kunci numlock Anda xev. Misalnya, di sini, Num_Lock adalah 77.

Gunakan xmodmap untuk memetakan ulang kode kunci:

  • Untuk sesi X saat ini, di dalam shell, gunakan xmodmap -e 'keycode 77 = '.
  • Untuk semua sesi X mendatang, di dalam ~/.xprofiletempatnya xmodmap -e 'keycode 77 = '.

    EDIT: Catatan: Tidak berfungsi jika perangkat lunak mengubah status Num Lock.

emp.justine
sumber
1
Perintah itu xmodmap -e 'keycode 77 = 'berhasil, tetapi menyebabkan masalah serius: semua ikatan kunci saya berhenti bekerja
Martin Vegter
Nah, Anda dapat mencoba memetakannya ke kunci yang valid dan tidak berbahaya. Seperti xmodmap -e 'keycode 77 = Escape'(YMMV, ESC tampaknya aman untuk saya). Apakah Anda memiliki file ~ / .Xmodmap? Jika ya, alih-alih ~/.xprofile, tempatkan keycode 77 = Escapedi akhir file ini.
emp.justine
1
Masalahnya adalah, setiap xmodmapperintah (yaitu xmodmap -e 'keycode 77 = Escape') menghancurkan ikatan-kunci saya yang ada yang didefinisikan dalam.config/openbox/lxde-rc.xml
Martin Vegter
4

Hapus saja pemetaan kunci NumLock dengan memetakannya menjadi nol: jalankan pertama xevdan tekan Num Lock (mungkin akan mencetak 77), dan kemudian jalankan perintah:

xmodmap -e "keycode # = """

di mana # adalah kode kunci NumLock.

Anda juga meletakkan ini ~/.xprofileuntuk menonaktifkan NumLock dalam sesi x.

Risto Salminen
sumber
Seandainya pertanyaan awal saya tidak jelas: Saya tidak ingin mematikan numlock. Saya menginginkan yang sebaliknya. Saya ingin memastikan bahwa itu tidak dapat dimatikan (saya ingin selalu numlock)
Martin Vegter
Ah, saya jelas memiliki kesalahan dalam pemikiran saya, terima kasih telah memberi tahu saya. :) Saya akan melihat apakah saya dapat meningkatkan jawaban saya.
Risto Salminen
ini tidak berpengaruh pada sistem saya:xmodmap -e "remove Lock = Num_Lock"
Martin Vegter
Sekarang perintah itu berfungsi, tetapi itu menghancurkan semua ikatan-kunci saya. Semua ikatan kunci berhenti bekerja.
Martin Vegter
Yah, seharusnya tidak, menurut jawaban ini pada pengguna super .
Risto Salminen
4

pic opsi keyboarddengan LinuxMint 17.2 dan saya membayangkan versi lain dari Ubuntu Anda dapat pergi ke pengaturan KEYBOARD Anda dan kemudian LAYOUTS pada halaman itu Anda akan menemukan tombol "opsi" kecil.

Dari sana pergi ke "opsi kompatibilitas misc" dan periksa "kunci angka selalu masukkan angka"

Ini adalah penyelamat bagi saya. Itu mengganggu saya untuk mengetik nomor dan dipindahkan ke tempat lain di halaman. Tepuk tangan! ;)

terbang setelah
sumber
1
Jawaban ini seharusnya memiliki lebih banyak poin!
Carlos Gant
Hal ini dapat dilakukan juga dari baris perintah dengan setxkbmap -option numpad:macatau dengan menetapkan Option "XkbOptions" "numpad:mac"dalam xorg.conf.
j123b567
2

Jawaban lain di sini disarankan untuk digunakan numlockx ondengan xmodmap -e 'keycode 77 =', tetapi numlockx ontidak akan berfungsi pada sistem saya bersama dengan xmodmapperintah itu, menunjukkan kepada saya pesan kesalahan:

$ numlockx on
X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  132 (XTEST)
  Minor opcode of failed request:  2 (X_XTestFakeInput)
  Value in failed request:  0x0
  Serial number of failed request:  17
  Current serial number in output stream:  20

Dan juga pengaturan xmodmap -e 'keycode 77 ='akan karena suatu alasan menghapus semua keybindings saya dibuat dengan xbindkeys.

Namun, jawaban untuk pertanyaan serupa ini telah membantu saya. Bagian dari saya ~/.xinitrc:

numlockx on
xmodmap -e 'keycode 77 = NoSymbol Num_Lock'

Dengan cara ini, NumLock tidak melakukan apa-apa dengan sendirinya, tetapi jika ditekan dengan Shift, ia melayani tujuan aslinya (sebagian besar tidak berguna), dan yang paling penting itu tidak mencegah numlockx ondari bekerja pada sistem saya, atau mengacaukan xbindkeysikatan kunci saya .

jojman
sumber
1

Cara lain, jika Anda ingin menonaktifkan numlockkunci, nonaktifkan secara permanen. Anda dapat melakukannya dengan memodifikasi file keymap Anda saat ini dengan memodifikasi kode kunci 77.

Tetapkan nilai ini ke "tidak ada", sehingga tekan tidak sengaja tombol tidak akan melakukan apa-apa.

Gunakan numlockxsaat bootup untuk memulainya dan gunakan file keymap yang dimodifikasi di salah satu skrip awal, misalnya ~/.bashrcatau dalam /etc/profile.

CATATAN: Saya belum menguji ini, tetapi itu harus berhasil.

SHW
sumber
1

Pada OpenSuse 13.x dengan KDE, ini bekerja untuk saya:

  • instal numlockx
  • Tambahkan Pintasan Khusus:
    • Pintasan Khusus -> Edit -> Baru -> Pintasan Global -> Perintah / URL:
    • Nama Tindakan: NumLockOn
    • Komentar: Tetap aktifkan numlock
    • Pemicu: setel ke NumLockk
    • Action-> Command / URL: sh -c 'sleep 0.5; numlockx on'
    • Hit berlaku
    • (selesai)

Jika NumLock perlu diaktifkan karena tidak aktif, cukup gunakan % numlockx on.

Timothy C. Quinn
sumber
Ini yang saya butuhkan. Bekerja pada Xubuntu 16.04.
kodmanyagha
0

Solusi yang agak meretas adalah menambahkan cronpekerjaan yang menjalankan perintah berikut

setleds +num

setiap 30 detik atau lebih untuk mengaktifkan NumLock.

Lihat juga

Joseph R.
sumber
0

Ini mungkin bukan solusi terbaik, tetapi ini berhasil bagi saya:

stdbuf -oL xinput test 11 | mawk -W interactive '$3==77 {printf "/usr/bin/numlockx on\n"}' | bash

Di mana 11 adalah id dari keyboard Anda. Lakukan xinputdaftar untuk menentukan id keyboard Anda (dalam kasus saya ini 11):

user@host:~$ xinput list
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ DualPoint Stick                           id=12   [slave  pointer  (2)]
⎜   ↳ AlpsPS/2 ALPS DualPoint TouchPad          id=13   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Video Bus                                 id=6    [slave  keyboard (3)]
    ↳ Sony Vaio Keys                            id=7    [slave  keyboard (3)]
    ↳ Video Bus                                 id=8    [slave  keyboard (3)]
    ↳ Power Button                              id=9    [slave  keyboard (3)]
    ↳ USB 2.0 Camera                            id=10   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=11   [slave  keyboard (3)]

Tentunya, numlockxharus dipasang agar bisa berfungsi.

Penjelasan:

  • stdbuf -oL memodifikasi operasi buffering dari aliran output ke line buffered
  • xinput test 11 mencetak tombol yang ditekan ke stdout
  • mawk -W interactive '$3==77 {printf "/usr/bin/numlockx on\n"}' untuk setiap baris yang dicetak dan berisi 77 (tombol numlock), buat sebuah perintah /usr/bin/numlockx on ...
  • | bash ... dan pipa itu ke bash untuk menjalankannya.

Anda dapat memasukkan oneliner ini di salah satu skrip awal lingkungan desktop atau menjalankannya di latar belakang.

kekacauan
sumber
0

Saya juga ingin tombol angka keypad numerik selalu menjadi angka, tidak ada hal-hal KP _....

Solusi saya adalah bagian dari Remapping Apple Keyboard saya untuk digunakan dengan Linux repo .

Pada dasarnya, itu hanya memetakan ulang Num_Lock sebagai F20, dan angka-angka sebagai diri mereka sendiri.

Solusi ini selalu memberikan hasil yang diinginkan dan tombol fungsi tambahan sebagai manfaat pinggiran.

guivho
sumber
-1

Buat skrip berikut dan buat agar dapat dieksekusi chmod +x <filename>

#!/bin/bash
if [ -x /usr/bin/numlockx ];then
/usr/bin/numlockx on
fi

Masukkan jalur file .config/openbox/autostart

Atau letakkan sebagai tugas cron yang memeriksa setiap beberapa menit dan menjalankan skrip jika numlock mati.

crontab -e 
*/1 * * * * <path-to-file>

Atau jalankan saja skrip dalam satu lingkaran.

#!/bin/bash
  x=0
  while [ x -eq 0 ];do
    if [ -x /usr/bin/numlockx ];then
    /usr/bin/numlockx on
    fi
  done

Jika Anda tidak memiliki numlockx, Anda harus bisa mendapatkannya sudo apt-get install numlockx

Jeight
sumber
Tidak, ini tentu bukan solusi yang baik. Maaf
Martin Vegter
1
Bisakah Anda jelaskan mengapa tidak?
Jeight
1
Ya, karena ini solusi yang sangat kotor. Itu tidak memperbaiki masalah yang mendasarinya, itu hanya menyapu gejala di bawah karpet.
Martin Vegter
Sayangnya, jika xmodmap tidak berfungsi, Anda tidak benar-benar memiliki opsi lain. Menulis skrip untuk memeriksa dan mengaktifkan numlock, tidak menyapu masalah di bawah permadani. Anggap saja sebagai check-and-balance untuk lemak meraba kunci. Tidak ada efek samping dan skrip dapat dengan mudah dihentikan / dimulai kapan saja. Ini benar-benar tidak kotor dari solusi. Saya telah melihat jauh lebih buruk dilakukan dalam kode sumber sebenarnya dari program yang Anda gunakan setiap hari.
Jeight
bagaimana Anda bisa begitu yakin, saya tidak punya pilihan lain?
Martin Vegter