NumLock'u her zaman açık tutun


29

Sağ tarafta sayısal tuşları olan standart bir klavyem var (sanırım 104 tuşlu klavye denir). Sayı tuşlarını sadece sayı tuşları olarak kullanmak istiyorum. Yani istemiyorumNumLock sayısal tuşları açıp kapatmak .

Ancak, bazen olur (Bilmiyorum, belki de bana göre yanlışlıkla çarptı. NumLock numbitin nasıl kapatıldığını tuşa ) oluyor ve tekrar basmam gerekiyor. Bu son derece sinir bozucu.

Numlock kapatmayı devre dışı bırakmak mümkün mü?

Başka bir deyişle: Nümerik tuşlarımın her zaman sayı tuşları gibi davranmasını ve numlock anahtarını devre dışı bırakmasını istiyorum .

Debian ve LXDE (Openbox) kullanıyorum.



@MartinVegter misiniz Burada içeriğini yayınlamak ister ~/.config/openbox/autostartve ~/.config/openbox/rc.xml?
Risto Salminen

Numlock ON olduğunu tespit ederse tekrar Numlock kapalı tetikleyecek bir olaya ihtiyacınız var. Numlock devre dışı bırakmak tarafından belirtildiği kadar kolaydır xmodmap. Geriye kalan tek soru bu olayı nasıl elde edeceğimizdir ......?
SHW

Yanıtlar:


7

Buradaki tüm cevabı okuduktan sonra, aşağıdakileri yapabileceğinizi görmek beni şaşırttı.

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

Yani, her bastığınızda Num, hangi numlock devre dışı bırakır. Bu, numlockx onnumlock aktif hale getirir , yürütecektir .

Adı çıktığımdan geliyor, xevki bana 77 anahtar kodunu veNum_Lock

@ MartinVegters davasında birkaç saniye beklemesi gerekiyordu, bu yüzden numlockx onkesinlikle olay gerçekleştikten sonra idam edildi Num. Çünkü çekirdekteki numlock kullanımı ile icra arasında bir yarış durumu var numlockx.

Bu durumda denumlock.shgibi küçük bir senaryo yazabilirsiniz

#!/bin/sh

sleep "$1"
numlockx on

ve Anahtar bağlamada kullanın

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

Bu kirli ama işe yarıyor.

Tavsiye ettiğim, kendimi test edemediğim şeyler. Kullanmayı öneren ilk cevapları takip etseniz iyi olur

xmodmap -e 'keycode 77 = Escape'

Ancak LXDE için, Openbox düzenleme şeklinden farklı olan LXDE otomatik başlatma mekanizmasını kullanmanız gerekir ~/.config/openbox/autostart.

LXDE'de görünüşe göre düzenlemeye ~/.config/lxsession/LXDE/autostartya ~/.config/lxsession/Lubuntu/autostartda başlangıç ​​için komutları tutan Lubuntu'ya ihtiyacınız var . (Bkz. Arch docs ve LXDE docs ) Bu dosyayı oluşturmanız ve bu satırı eklemeniz gerekebilir.

@xmodmap -e 'keycode 77 = Escape'

Ne yazık ki, söylediğim gibi, bunun çalışıp çalışmadığını test edemem, çünkü yalnızca LXDE ile çalışan bir VM'im var.


1
Çözümünüzü denedim <keybind key="Num_Lock">ama ne yazık ki işe yaramadı. Komut numlockx onyürütülürken, <kbd> NumLock </kbd> işlevi hala sayı kilidi olarak satıyor. Böylece hala numlock açıp kapatabilirim.
Martin Vegter

Diğer çözümle ilgili olarak, xmodmapRisto Salminen tarafından önerilen çözümü denediğimde komut çalıştı, ancak bütün kilit bağlarımı kaybettim.
Martin Vegter

@MartinVegter Mhh bir sleep 3; numlockx onanahtar bağlama için deneyebilirsiniz . İkinci çözüm için autostart ile denediniz mi?
Raphael Ahrens

Nedenini anlamıyorum ama sleep 3; /usr/bin/numlockx onişe yaramadı bile . NumLockhala açma / kapama düğmesi olarak işlev görür.
Martin Vegter

@ MartinVegter /usr/bin/numlockx onsisteminizde çalışıyor mu?
Raphael Ahrens

13

belki de yanlışlıkla benim için NumLocktuşa basmam

Klavye size aitse (örneğin, işvereninizin yerine), sadece klavyeden çıkarın fiziksel olarak .

Gerçekten ihtiyacın olursa sivri bir şeyle hala basabilirsin.

görüntü tanımını buraya girin


4
Evet, +1. Basit, zarif.
ypercubeᵀᴹ

1
ne yazık ki benim NumLuck varsayılan durumu yanlış olanı :(
MichaelChirico

6

Dizüstü bilgisayar klavyemde (Ubuntu 10.04) klavye kilidi şu anda Açık.

$ 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 şimdi devre dışı.

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

Tekrar geri koyar. (Belki Num_lock için ızgara daha iyi bir fikir olurdu, ama sen özü olsun.)

@Martin Vegter adlı kullanıcının yorumu ile Cevap.

Tamam , yorumunuza cevap olarak xmodmap ciltlerinizi mahveder, anlaşıldı.

Openbox Dokümantasyonunu yeni kontrol ettim

~ / .Config / openbox / lxde-rc.xml dosyasına bir göz atın

ls -l lxde-rc.xml (Bir rc.xml de var mı? lütfen kontrol edin).

bir kopyasını yedek olarak al

(bir editör kullanın) numlock arayın (belki nmlk).

Böyle bir şey görüyor musun?

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

Yorum yazın VEYA değiştirin Tuş kilidini alternatif bir değere dönüştürün, örneğin değiştirmek için Alt-Numlock

key="A-Numlock"

Örneğin

To dışında açıklama

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

veya

Alt + Numlock toggle değiştir

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

değişiklikleri kaydedin ve oturumu kapatın / oturum açın veya yeniden başlatın.


Sorun şu ki, herhangi bir xmodmapkomut (yani xmodmap -e 'keycode 77 = Escape') şu anda tanımlanmış olan mevcut anahtar bağlantılarımı yok ediyor.config/openbox/lxde-rc.xml
Martin Vegter

1
Daha iyi biçimlendirme elde etmek için yukarıda cevapladım.
X Tian

cevabın için teşekkürler. Ancak, benim .config/openbox/lxde-rc.xml, Numlockveya içeren bir satır yok Num_Lock. Bir tane yarattığımda, bunun hiçbir etkisi olmaz: <keybind key = "Num_Lock"> <action name = "Yürüt"> <command> / bin / true </command> </action> </keybind>
Martin Vegter

1
Ana dizininizden önce okunan başka bir config dosyası olmalı. Bakmanızı önerdiğim iki yer, / etc / xdg / openbox ve / usr / share / ... Bu yardımcı olmazsa, pes etmem gerekecek - üzgünüm.
X Tian

3.4.7'den değiştirildi günlüğü değiştir (openbox) "Aynı düzeyde birden fazla ciltleme çevrilemediğinde, anahtar bağlamaların kaybolmasını düzeltin (VMbox'un Openbox anahtarlıklarının çalışmasını durdurmasına neden olan düzeltmeler)"
X Tian

5

Numlock tuş kodunu ile bulun xev. Örneğin, burada, Num_Lock 77'dir.

Anahtar kodu yeniden eşlemek için xmodmap kullanın:

  • Geçerli X oturumları için bir kabuğun içinde kullanın xmodmap -e 'keycode 77 = '.
  • Gelecekteki tüm X oturumları, içeriye ~/.xprofileyerden xmodmap -e 'keycode 77 = '.

    EDIT: Not: Bir yazılım Num Lock durumunu değiştiriyorsa çalışmaz.


1
Komut xmodmap -e 'keycode 77 = 'işe yarıyor ama ciddi bir soruna yol
açıyor

Peki, geçerli, zararsız bir anahtarla eşleştirmeyi deneyebilirsiniz. Gibi xmodmap -e 'keycode 77 = Escape'(YMMV, ESC benim için güvenli görünüyor). ~ / .Xmodmap dosyanız var mı? Evet, yerine ise ~/.xprofile, koyun keycode 77 = Escapebu dosyanın sonuna.
emp.justine

1
Sorun şu ki, herhangi bir xmodmapkomut (yani xmodmap -e 'keycode 77 = Escape') şu anda tanımlanmış olan mevcut anahtar bağlantılarımı yok ediyor.config/openbox/lxde-rc.xml
Martin Vegter

4

NumLock anahtar eşlemesini hiçbir şeyle eşleştirerek kaldırın: önce çalıştırın xevve Num Lock'a basın (muhtemelen 77 yazdırılır) ve sonra komutu çalıştırın:

xmodmap -e "keycode # = """

# NumLock'un anahtar kodu.

Bunu ayrıca ~/.xprofilex oturumlarında NumLock'u devre dışı bırakmak için de koydunuz .


Asıl sorumun net olmadığı durumda: numlock kapatmak istemiyorum. Ben tam tersini istiyorum. Kapatılmayacağından emin olmak istiyorum (her zaman açık
kalmasını

Ah, açıkça düşündüğümde bir hatam vardı, bana bildirdiğiniz için teşekkürler. :) Cevabımı geliştirip geliştiremeyeceğimi göreceğim.
Risto Salminen

Bunun sistemim üzerinde bir etkisi yok:xmodmap -e "remove Lock = Num_Lock"
Martin Vegter

Şimdi emir işe yarıyor ama bütün anahtar bağlarımı yok ediyor. Tüm anahtar bağlamaları çalışmayı keser.
Martin Vegter


4

klavye seçenekleri picLinuxMint 17.2 ile Ubuntu'nun diğer sürümlerini KEYBOARD ayarlarınıza götürebileceğinizi ve ardından LAYOUTS’un küçük bir "seçenek" düğmesini bulacağını hayal ediyorum.

Oradan "misc uyumluluk seçenekleri" ne gidin ve "sayı tuşlarını her zaman basamak gir" seçeneğini işaretleyin

Bu benim için bir cankurtaran. Numara yazmam ve sayfada başka bir yere taşınmamı engelliyor. Şerefe! ;)


1
Bu cevabın çok daha fazla puanı olmalı!
Carlos Gant

Bu komut satırından da yapılabilir setxkbmap -option numpad:macya ayarlayarak Option "XkbOptions" "numpad:mac"içinde xorg.conf.
j123b567

2

Buradaki diğer cevaplar numlockx onile birlikte kullanılması önerildi xmodmap -e 'keycode 77 =', ancak numlockx onsistemimde bu xmodmapkomutla birlikte çalışmadı, bana bir hata mesajı verdi:

$ 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

Ayrıca ayar xmodmap -e 'keycode 77 ='yapmak bazı nedenlerden dolayı yaptığım tüm anahtarlıklarmı kaldırır xbindkeys.

Bununla birlikte, benzer bir soruya verilen bu cevap bana yardımcı oldu. Benim bir parçası ~/.xinitrc:

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

Bu şekilde NumLock kendi başına hiçbir şey yapmaz, ancak Shift ile basılırsa, orijinal (çoğunlukla işe yaramaz) amacına hizmet eder ve en önemlisi numlockx onsistemim üzerinde çalışmamı engellemez veya xbindkeysanahtar bağlarımı karıştırmaz.


1

Başka bir şekilde, numlockanahtarı devre dışı bırakmak istiyorsanız kalıcı olarak devre dışı bırakın. Bunu, geçerli anahtar eşlem dosyanızı değiştirerek 77 tuş kodunu değiştirerek yapabilirsiniz.

Bu değeri "none" olarak ayarlayın, böylece yanlışlıkla basılması hiçbir şey yapmaz.

Başlamak numlockxiçin bootup komutunu kullanın ve değiştirilmiş keymap dosyasını örneğin, ~/.bashrcveya içerisinde başlangıç ​​betiğinden birinde kullanın /etc/profile.

NOT: Bunu test etmedim, ancak çalışması gerekiyor.


1

KDE ile OpenSuse 13.x'te bu benim için çalıştı:

  • numlockx yükleyin
  • Özel Kısayol Ekle:
    • Özel Kısayollar -> Düzenle -> Yeni -> Genel Kısayol -> Komut / URL:
    • Eylem Adı: NumLockOn
    • Yorum: numlock devam
    • Tetik: NumLockk olarak ayarlayın
    • Eylem-> Komut / URL: sh -c 'uyku 0.5; numlockx açık'
    • Uygula vur
    • (Yapıldı)

NumLock'un kapalı olduğu için etkinleştirilmesi gerekiyorsa, sadece kullanın % numlockx on.


İhtiyacım olan bu. Xubuntu 16.04 üzerinde çalışıyor.
kodmanyagha


0

En iyi çözüm olmayabilir, ancak bu benim için çalıştı:

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

Klavyenizin kimliği 11 nerede. xinputKlavye kimliğinizi belirlemek için bir liste yapın (benim durumumda 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)]

Açıkçası, numlockxbunun çalışması için yüklü olması gerekir.

Açıklama:

  • stdbuf -oL Çıktı akışının tamponlama işlemlerini tamponlu hatta değiştirir
  • xinput test 11 basılan tuşları stdout'a yazdırır
  • mawk -W interactive '$3==77 {printf "/usr/bin/numlockx on\n"}'Yazdırılan ve 77 (numlock tuşu) içeren her satır için bir komut oluşturun /usr/bin/numlockx on...
  • | bash ... ve çalıştırmak için bash'a bağlayın.

Bu oneliner'ı masaüstü bilgisayarların başlangıçtaki komut dosyalarından birine yerleştirebilir veya arka planda çalıştırabilirsiniz.


0

Ayrıca sayısal tuş takımı sayı tuşlarının her zaman sayı olmasını, KP _... öğelerinin hiçbiri olmamasını istiyorum.

Çözümüm, Linux repo ile kullanım için Remapping Apple Klavyemin bir parçası .

Temel olarak, Num_Lock'u F20 ve rakamları kendileri ile yeniden eşler.

Bu çözüm her zaman istenen sonucu ve saçak avantajı olarak ekstra bir fonksiyon tuşu sağlar.


-1

Aşağıdaki betiği yaratın ve çalıştırılabilir hale getirin chmod +x <filename>

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

Dosya yolunu içine koy .config/openbox/autostart

Veya birkaç dakikada bir kontrol eden ve numlocks kapalıysa betiği çalıştıran bir cron işi olarak yerleştirin.

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

Veya sadece betiği bir döngüde çalıştırın.

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

Numlockx yoksa, onu almak mümkün olmalıdır sudo apt-get install numlockx


Hayır, bu kesinlikle iyi bir çözüm değil. Üzgünüm
Martin Vegter

1
Neden olmadığını açıklayabilir misin?
Jeight

1
Çünkü bu çok kirli bir geçici çözüm. Altta yatan sorunu çözmez, sadece halının altındaki belirtileri tarar.
Martin Vegter

Ne yazık ki, xmodmap işe yaramazsa, gerçekten başka seçeneğiniz yok. Numlock kontrol etmek ve etkinleştirmek için bir komut dosyası yazma, halının altına sorunu süpürme değil. Anahtarın yağa dokunması için bir kontrol ve denge olarak düşünün. Hiçbir yan etkisi yoktur ve senaryo herhangi bir zamanda kolayca durdurulabilir / başlatılabilir. Gerçekten bir geçici çözüm bu kadar kirli değil. Her gün kullandığınız programların gerçek kaynak kodunda daha kötüsünü gördüm.
Jeight

Başka seçeneğim olmadığından nasıl bu kadar emin olabiliyorsun?
Martin Vegter
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.