Bir dizüstü bilgisayarın dahili klavyesini devre dışı bırakmanın bir yolu var mı?


85

Bir hafta önce kupamın içeriğini laptop klavyeme döktüm. Anahtarların yarısı artık biri dışında! Düzenli olarak aktif olan Q harfi.

Çalışırken bu çok rahatsız edici.

Bir dizüstü bilgisayarın dahili klavyesini devre dışı bırakmanın bir yolu var mı?

İle mümkün mü xmodmap?


Hangi marka ve model dizüstü bilgisayar nedir?
Mitch

oHP pavilion dv9000
atmon3r

5
En basit yol, klavyeyi kaldırmak ve anakarttan çıkarmaktır. Daha sonra bağlantıyı olduğu yere geri yerleştirebilirsiniz. Bu şekilde, klavye yeniden yüklendikten sonra devre dışı bırakılır ve yazılımla uğraşmanıza gerek kalmaz. Bu bağlantıya bakın, sayfanın ortasına
Mark Paskal

Dışarı çıkarmaya, parçalara ayırmaya, katmanlar arasında bir temizlemeye de değer olabilir ..
JonasCz

Yanıtlar:


135

xinputGiriş aygıtını X altında kaydırmak için kullanabilirsiniz .

  1. xinput listGiriş cihazlarınızı listelemek için komutu yürütün .
  2. Bulun AT Translated Set 2 keyboardve idnumarasını not edin ; bu klavyeyi devre dışı bırakmak için kullanılacaktır. Ayrıca, sonunda sayıyı not edin [slave keyboard (#)]; bu, masterklavyenizi yeniden etkinleştirmek için kullanılacak olan kimlik numarasıdır .
  3. Klavyeyi devre dışı bırakmak için komut çalıştırmak xinput float <id#>, <id#>klavyenizin kimliği numarasıdır. Örneğin, idoldu 10, sonra komut olacaktır xinput float 10.
  4. Klavyeyi yeniden etkinleştirmek için, bu komutu uygulayın xinput reattach <id#> <master#>, masternot ettiğiniz ikinci sayı nerede . Yani sayı 3olsaydı, yapardın xinput reattach 10 3.

İşte bir gösteri:

$ xinput listesi
Core Sanal çekirdek işaretçi kimliği = 2 [ana işaretçi (3)]
Sanal çekirdek XTEST işaretçi kimliği = 4 [bağımlı işaretçi (2)]
PS ↳ SynPS / 2 Synaptics Dokunmatik Yüzey kimliği = 11 [bağımlı işaretçi (2)]
İt ↳ Logitech USB-PS / 2 Optik Fare kimliği = 12 [yardımcı işaretçi (2)]
Logitech Birleştirici Aygıt. Kablosuz PID: 4004 kimliği = 13 [bağımlı işaretçi (2)]
Core Sanal çekirdek klavye kimliği = 3 [ana klavye (2)]
    Core Sanal çekirdek XTEST klavye kimliği = 5 [yardımcı klavye (3)]
    Button Güç Düğmesi kimliği = 6 [yardımcı klavye (3)]
    Bus Video Veriyolu kimliği = 7 [yardımcı klavye (3)]
    Button Uyku Düğmesi kimliği = 8 [yardımcı klavye (3)]
    Crystal Acer CrystalEye web kamerası kimliği = 9 [yardımcı klavye (3)]
    Trans Tercüme Edilmiş Set 2 klavye kimliği = 10    [bağımlı klavye ( 3 )]
 $ xinput float 10 
$ xinput listesi
Core Sanal çekirdek işaretçi kimliği = 2 [ana işaretçi (3)]
Sanal çekirdek XTEST işaretçi kimliği = 4 [bağımlı işaretçi (2)]
PS ↳ SynPS / 2 Synaptics Dokunmatik Yüzey kimliği = 11 [bağımlı işaretçi (2)]
İt ↳ Logitech USB-PS / 2 Optik Fare kimliği = 12 [yardımcı işaretçi (2)]
Logitech Birleştirici Aygıt. Kablosuz PID: 4004 kimliği = 13 [bağımlı işaretçi (2)]
Core Sanal çekirdek klavye kimliği = 3 [ana klavye (2)]
    Core Sanal çekirdek XTEST klavye kimliği = 5 [yardımcı klavye (3)]
    Button Güç Düğmesi kimliği = 6 [yardımcı klavye (3)]
    Bus Video Veriyolu kimliği = 7 [yardımcı klavye (3)]
    Button Uyku Düğmesi kimliği = 8 [yardımcı klavye (3)]
    Crystal Acer CrystalEye web kamerası kimliği = 9 [yardımcı klavye (3)]
Trans AT Translated Set 2 klavye kimliği = 10 [yüzer bağımlı]
$ xinput 10 3 
$ xinput listesini yeniden ekle
Core Sanal çekirdek işaretçi kimliği = 2 [ana işaretçi (3)]
Sanal çekirdek XTEST işaretçi kimliği = 4 [bağımlı işaretçi (2)]
PS ↳ SynPS / 2 Synaptics Dokunmatik Yüzey kimliği = 11 [bağımlı işaretçi (2)]
İt ↳ Logitech USB-PS / 2 Optik Fare kimliği = 12 [yardımcı işaretçi (2)]
Logitech Birleştirici Aygıt. Kablosuz PID: 4004 kimliği = 13 [bağımlı işaretçi (2)]
Core Sanal çekirdek klavye kimliği = 3 [ana klavye (2)]
    Core Sanal çekirdek XTEST klavye kimliği = 5 [yardımcı klavye (3)]
    Button Güç Düğmesi kimliği = 6 [yardımcı klavye (3)]
    Bus Video Veriyolu kimliği = 7 [yardımcı klavye (3)]
    Button Uyku Düğmesi kimliği = 8 [yardımcı klavye (3)]
    Crystal Acer CrystalEye web kamerası kimliği = 9 [yardımcı klavye (3)]
    Trans AT Translated Set 2 klavye kimliği = 10 [bağımlı klavye (3)]

Bu çözümle ilgileniyorum! xinput pastebin.com/puDxQaZ8 öyleyse şöyle olacağını tahmin ediyorum: xinput float 14Bu sorgu geri dönüşümlü mü? bundan sonra klavyeyi nasıl etkinleştirebilirim?
atmon3r

2
Yeniden reattachbağlamak için argümanı kullanırsınız. xinput reattach 14 3
Ignacio Vazquez-Abrams,

1
Mükemmel cevap - bunu da arıyordum. Dizüstü bilgisayarımdaki tuşlardan herhangi biri çalışmayı durdurdu, şimdi üzerinde harici bir klavyeyi tut ve kontrol tuşuna basmaya devam et. Bu düzeltti, teşekkürler!
özellikle

1
Teşekkürler. Ancak dizüstü bilgisayarımı yeniden başlattıktan sonra, klavye otomatik olarak etkinleşiyor. Bu yüzden makinemde bulunduğumda, bahsettiğiniz dahili klavyeyi devre dışı bırakmak için yukarıdaki adımları uygulamak istiyorum. Kalıcı olarak engelli kalmanın imkânları var mı?
ML

2
Xinput aynı şeyi devre dışı bırak / etkinleştir yapmaz mıydı?
SomeNickName

18

Belirli bir klavyeyi etkinleştirmek ve devre dışı bırakmak için küçük bir düğme. Öncelikle, klavye kimliğinizi xinputveya ile bulmak zorundasınız xinput-list.

Klavyeyi etkinleştirmek / devre dışı bırakmak için Bash komut dosyası

#!/bin/bash
Icon="/PATH/TO/ICON_ON"
Icoff="/PATH_TO_ICON_OFF"
fconfig=".keyboard" 
id=12

if [ ! -f $fconfig ];
    then
        echo "Creating config file"
        echo "enabled" > $fconfig
        var="enabled"
    else
        read -r var< $fconfig
        echo "keyboard is : $var"
fi

if [ $var = "disabled" ];
    then
        notify-send -i $Icon "Enabling keyboard..." \ "ON - Keyboard connected !";
        echo "enable keyboard..."
        xinput enable $id
        echo "enabled" > $fconfig
    elif [ $var = "enabled" ]; then
        notify-send -i $Icoff "Disabling Keyboard" \ "OFF - Keyboard disconnected";
        echo "disable keyboard"
        xinput disable $id
        echo 'disabled' > $fconfig
fi

Yapılandırma

  • IconEtkinleştirilirken görüntülenecek simgenin yolu olarak (örneğin, /home/user/path/icon.png)
  • Icoff Devre dışı bırakıldığında görüntülenecek simgenin yolu olarak
  • Aşağıdaki simgeleri kullandım: görüntü tanımını buraya girin görüntü tanımını buraya girin

  • idklavye kimliği olarak (bulunanlar xinput)

  • fconfigconfig dosyasının yolu. Başka bir dizinde yapılandırma dosyası oluşturmak istiyorsanız değiştirin

Klavyenizi kullanmadan tekrar çalıştıramazsanız komut dosyasını çalıştırmayı denemeyin (elbette başka bir klavyeniz yoksa). Aşağıdaki başlatıcısı oluşturun (içinde home/user/.local/share/applications) ve birlik ekleyin:

Masaüstü girişi (Birlik başlatıcısı)

[Desktop Entry]
Version=1.0
Type=Application
Name=Clavier ON-OFF
Icon=PATH/TO/YOUR/ICON
Exec=bash NAME_OF_YOUR_SCRIPT.sh
Path=PATH/TO/YOUR/SCRIPT
NoDisplay=false
Categories=Utility;
StartupNotify=false
Terminal=false

SONUÇ:

Başlatıcı:

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

Bildirimler:

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


Bu iyi çalışıyor, açık bir şekilde açıkladığınız için teşekkür ederiz. Anlamadığım bir şey var: simgenin kabuk betiği mantığına göre nasıl değiştirileceği. Bunun, kısmen Masaüstü girişinde "Icon = PATH / TO / YOUR / ICON" ile belirlendiğini, başka bir yol bilmediğim için "/home/.../icon_on.png" olarak mutlak bir yol kullandığımı düşünüyorum. ".desktop" dosyasını kullanmak için bunun simgeleri değiştirmesini engelleyebileceğini görebiliyorum. Birisi lütfen bir ipucu verebilir mi?
Puffin

1
Merhaba, .desktop dosyasındaki mutlak yol konusunda haklısın. Üzgünüz, ancak başlatıcı simgesi için nasıl dinamik değişiklikler yapacağımı bilmiyorum. Bu cevaba göre, hiç mümkün değil: askubuntu.com/a/244951/458410 . Komut dosyamdaki simge yalnızca bildirimlerde değişir.
mxdsp

Ah ha, tamam bu mantıklı, benimki de aynı, teşekkür ederim.
Puffin

Olası bir gelişme: Klavye bu komutla devre dışı bırakılırsa yerine bir dosyada devlet depolama doğrudan kontrol edebilirsiniz: function is-disabled() { xinput --list --long | grep -A 1 "id=$1" | grep -q disabled }. Bu şekilde, klavye başka bir program tarafından etkinleştirilse / devre dışı bırakılsa bile her şey çalışır.
dshepherd

fconfig=".keyboard" if [ ! -f $fconfig ]; İşte nedir .keyboard? Ve her ikisi fconfigve $fconfigaynı mı? Ve ayrıca ne anlama ! -f $fconfiggeliyor? Bass senaryosunda yeniyim. Thanks :)
sphoenix

12

Bunu yapmanın 2 yolunu düşündüm:

  1. Dizüstü bilgisayarınızın klavyesi için yanlış bir model oluşturarak xorg.conf?

  2. Bebek için Kilit-klavye takarak

`Bebek Klavyesi veya lk4b Klavyeyi kısaca klavyenizi kilitleyen ancak farenizi serbest bırakan küçük bir programdır. Yazdım çünkü yeğenim beni ne zaman oturup görsün diye klavyeme basmayı seviyor. Klavyede yazılan tuşların feci sonuçları olabilir ve ekranımı her zaman bir ekran koruyucu ile kilitlemek istemedim.

Başlatıldığında, bebek için klavyeyi kilitle, yazılan klavyeyi ve eko tuşlarını tutan küçük bir pencere açar. Varsayılan olarak, çıkmak için ne yazmanız gerektiğini söyler ("Şimdi Çık").

Bir ekran koruyucunun aksine, ekranınız engellenmez ve fare hala kısmen çalışır, bu nedenle hala ekranınızda ne olduğunu görebilirsiniz - tv / video izlemeye devam edin ve / veya kaydırmak için fareyi kullanarak bir belge okuyun.

Gereksinimler:

· GTK> = 2.x · perl GTK2 bağlantıları (sisteminize bağlı olarak perl-gtk2 veya gtk2-perl)


1
bu tam olarak ihtiyacım olan şey değil, usb klavyemi kullanmam gerekiyor, ancak kodunuz çok kullanışlı! ;)
atmon3r

Bebek için Lock-keyboard-for baby harici kullanımını korurken, iç klavyenizi devre dışı bırakmanıza izin verir
LnxSlck

Parlak. Bebek İçin Kilitle Klavye Ubuntu 16.04'te de çalışır. Klavyede tutmak için kalem ve kağıt kitap kullanarak kodlamayı tercih ederim. Bu küçük yardımcı program sorunumu çözdü. Diğerleri için perl betiğini çalıştırmadan önce sudo apt-get install libgtk2-perl komutunu çalıştırmanız gerekebilir
mac

"Şimdi Çık", Şimdi Çık veya şimdi 18.04'te masaüstü kule USB klavyesiyle hiç çalışmayın.
saat

10

Bunu devre dışı bırakmanın kesin bir yolu, sinyal kablosunu çıkarmaktır. Bunun için klavyeyi açmanız gerekir. Bunun nasıl yapılacağı hakkında bilgi için, HP Pavilion dv9000 ve dv9200 Dizüstü Bilgisayar Bakım ve Servis Kılavuzu'na bakın .

Şimdi klavyeyi kullanarak devre dışı bırakmak için bir yol var xinput. Bunu yapmak için, Terminal'i açmak için klavyenizdeki Ctrl+ Alt+ tuşlarına basın T. Açıldığında, aşağıdaki komutları çalıştırın.

X cihazınızı listelemek için

xinput --list

Klavyeyi devre dışı bırakmak için:

xinput set-int-prop 2 "Device Enabled" 8 0

Klavyeyi tekrar etkinleştirmek için:

xinput set-int-prop 2 "Device Enabled" 8 1

İzinlerle ilgili bir hata alırsanız, yukarıdaki komutları ile kullanın sudo.


5

Cihazın kabul edilen cevapta önerildiği şekilde idalındığı zaman, bazen yeniden başlatmada (en azından bilgisayarımda) yanlış cihaz devre dışı bırakılma ile sonuçlandı.xinput list

Ben kullanarak sona getirdik device nameyerine id, örneğin:

xinput disable "AT Translated Set 2 keyboard"

5

Dizüstü bilgisayarın dahili klavyesini kalıcı olarak devre dışı bırakmak için Ubuntu'da, i8042.nokbdklavye portunu kontrol etmemek / oluşturmamak için bu Çekirdek parametrelerini geçmeniz gerekir

i8042.nokbd [HW] Don't check/create keyboard port

Terminali açın ve aşağıdaki komutu çalıştırın

$sudo gedit /etc/default/grub

Aşağıdaki satırı bulmaya çalışın

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

Parametre ekle i8042.nokbd, yukarıdaki satır böyle görünmelidir.

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i8042.nokbd"

Grub'u aşağıdaki komutu güncelleyin

$sudo update-grub     

Ardından rebootdizüstü bilgisayarınız.


Klavyemi tekrar nasıl etkinleştiririm?
Guilherme Parreira

4

Eğer klavyeyi temizlersem ve bundan dolayı daima makineyi kapatmak zorunda kalırdım. Sonuç olarak, klavyeyi geçici olarak devre dışı bırakmak için bunu keşfettim:

$ xinput float kimliği #; uyku t ; xinput yeniden kimliği id # master #

t - saniye içinde uyku zamanı

id # ve master # yukarıda belirtildiği gibi ( sayfa başı )

örneğin defterimde yazdım:

$ xinput float 11;sleep 5;xinput reattach 11 3

3

xmodmap -e 'keycode 24='Yalnızca Q tuşunu devre dışı bırakmak için koşmayı deneyin . Bu işe yararsa, onu kendinize ~/.bashrcveya genel /etc/bash.bashrcdosyanıza ekleyebilirsiniz . Buradan bütün anahtar haritalarını gösteren fikrim var .


4
Bu qharici klavyede de etkisizleşmez mi ?
Sparhawk

2

Önceki cevaplar ve kendi çalma etrafında dayalı değer ne için, ben dediğim aşağıdaki komut dosyasını, oluşturulan toggle_keyboard.shbenim ve yer ~/binyoluna. Ayarlanan çalıştıran bir klavye kısayolu var CtrlWinK.

Önceki cevaplarla ilgili bazı problemler ve senaryomun yararı:

  • Yeniden başlatıldığında ve kimlik numarası değiştirildiğinde xinput ile bir kimlik numarasına güvenmek başarısız olur. Bu koşarken başıma geldi xinput float 13. Yanlış donanımı devre dışı bıraktım.
  • Etkinleştirilmiş / devre dışı durumunu tutmak için bir dosyaya güvenmek, yeniden başlatırsanız başarısız olur. Dosya, klavyenin devre dışı bırakıldığını söyler (komut dosyasıyla devre dışı bıraktıysanız), ancak yeniden başlatmanın ardından yeniden etkinleştirilecektir. Çözümüm, etkin / devre dışı bilgileri ayrıştırılmış bir xinput komutundan alır.
  • Komut dosyam, siz yazarken çıkan herhangi bir xinput cihazıyla çalışacaktır xinput list --name-only. Sadece adı alın ve ilk dört değişkeni düzenleyin. Dizüstü bilgisayar klavyem, web kamerası, dokunmatik ekran monitörü ve arada bir kullandığım birkaç şey için kullanıyorum.

#!/bin/bash
# Toggle the laptop keyboard either on or off and notify the user about it

# Device name can be found by typing this command: xinput list --name-only
DEVICE_NAME="AT Translated Set 2 keyboard"
# The display name of the device in the notify-send popup
DEVICE_DISPLAY_NAME="Laptop Keyboard"

# Set these to the icons you want to use.
# If they are not found, the notification will still work.
ICON_ENABLE="$HOME/.icons/keyboard.png"
ICON_DISABLE="$HOME/.icons/keyboard_disabled.png"

function xinput_set_prop() {
        xinput set-prop "$DEVICE_NAME" "Device Enabled" $1
}

function notify_change() {
        if [ -f "$1" ]; then
                notify-send --urgency=low --icon="$1" "$2"
        else
                notify-send --urgency=low "$2"
        fi
}

# Returns 1 if device is enabled, 0 if disabled
is_enabled=$(xinput list-props "$DEVICE_NAME" | grep "Device Enabled" | awk '{ print $4 }' | sed 's/[^0-9]*//g')

if [ $is_enabled -eq 1 ]; then
        # device is enabled, so disable it
        xinput_set_prop 0
        notify_change "$ICON_DISABLE" "$DEVICE_DISPLAY_NAME Disabled"
else
        # device is disabled, so enable it
        xinput_set_prop 1
        notify_change "$ICON_ENABLE" "$DEVICE_DISPLAY_NAME Enabled"
fi

0

xinput float "AT Translated Set 2 klavyesi"

Farklı dağıtımlar ve sürümlerle birlikte farklı yöntemlerle yıllar boyu saatler geçirdikten sonra. Yukarıdaki terminal komutu sorunlardan sonra dayandığım şeydi… Bunu şimdi neon plazma ile kullanıyorum ve bir ay önce 18.04 numaralı ubuntuda kullanıyordum. (yeniden başlattıktan sonra uygulanması gerekenler - başlangıçta yerleştirilebilir) * HP Laptop'umda zarar görüp yazmaya başlayan ve ciddi sorunlara neden olan yazmaya başlatan klavyem - Klavyenin üst kısmında bir kablosuz klavye ve fare kullanıyorum - dokunmatik yüzey açık / kapalı Seçenekler - neon / plazma 5). Sistem ayarlarında / autostart Aşağıdaki kod satırına sahip bir metin dosyası .sh dosyası olarak kaydedilir ve çalıştırılabilir (txt dosyası özellikleri)
xinput float "AT Translated Set 2 keyboard"

Metin dosyasına bir ad verilir> keyboardoff> ve otomatik çalıştırma (çalıştırılabilir) içine yerleştirilir. ( test etmek için xinput listesini kullanın)

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.