Existe uma maneira de desativar o teclado interno de um laptop?

85

Há uma semana, derramei o conteúdo da minha xícara no teclado do laptop. Metade das chaves não funciona mais, exceto uma! A letra Q, que é muito ativa regularmente.

Isso é muito perturbador enquanto trabalho.

Existe uma maneira de desativar o teclado interno de um laptop?

Isso é possível xmodmap?

atmon3r
fonte
Que marca e modelo de laptop é esse?
Mitch
éHP pavilion dv9000
atmon3r
5
A maneira mais direta seria levantar o teclado e desconectá-lo da placa-mãe. Você pode colocá-lo de volta onde estava, sem a conexão. Dessa forma, o teclado será desativado após a reinstalação e você não precisará se preocupar com o software. Veja este link, mais ou menos na metade da página em que ele chega ao teclado: insidemylaptop.com/…
Mark Paskal
Pode também valer a pena tomar-lo para fora, desmontá-lo, uma limpeza entre as camadas ..
JonasCz

Respostas:

135

Você pode usar xinputpara flutuar o dispositivo de entrada em X.

  1. Execute o comando xinput listpara listar seus dispositivos de entrada.
  2. Localize AT Translated Set 2 keyboarde anote seu idnúmero; isso será usado para desativar o teclado. Além disso, anote o número no final [slave keyboard (#)]; este é o número de identificação do master, que será usado para reativar o teclado.
  3. Para desativar o teclado, execute o comando xinput float <id#>, onde <id#>está o número de identificação do seu teclado. Por exemplo, se idfosse 10, então o comando seria xinput float 10.
  4. Para reativar o teclado, execute o comando xinput reattach <id#> <master#>, onde masterestá o segundo número que anotamos. Então, se o número fosse 3, você faria xinput reattach 10 3.

Aqui está uma demonstração:

$ xinput list
Id ID do ponteiro do núcleo virtual = 2 [ponteiro mestre (3)]
Id ↳ ID do ponteiro do núcleo virtual XTEST = 4 [ponteiro escravo (2)]
Id id ID do TouchPad SynPS / 2 Synaptics = 11 [ponteiro escravo (2)]
Id id ID do mouse óptico Logitech USB-PS / 2 = 12 [ponteiro escravo (2)]
↳ ↳ Logitech Unifying Device. PID sem fio: 4004 id = 13 [ponteiro escravo (2)]
Id ID do teclado do núcleo virtual = 3 [teclado principal (2)]
    Id ID do teclado XTEST do núcleo virtual = 5 [teclado escravo (3)]
    Button ID do botão liga / desliga = 6 [teclado escravo (3)]
    Bus ID do barramento de vídeo = 7 [teclado escravo (3)]
    Id Id do botão de suspensão = 8 [teclado secundário (3)]
    Webcam ID da webcam do Acer CrystalEye = 9 [teclado escravo (3)]
    ↳ AT ID do teclado do Conjunto Traduzido 2 = 10    [teclado escravo ( 3 )]
 $ xinput float 10 
$ lista xinput
Id ID do ponteiro do núcleo virtual = 2 [ponteiro mestre (3)]
Id ↳ ID do ponteiro do núcleo virtual XTEST = 4 [ponteiro escravo (2)]
Id id ID do TouchPad SynPS / 2 Synaptics = 11 [ponteiro escravo (2)]
Id id ID do mouse óptico Logitech USB-PS / 2 = 12 [ponteiro escravo (2)]
↳ ↳ Logitech Unifying Device. PID sem fio: 4004 id = 13 [ponteiro escravo (2)]
Id ID do teclado do núcleo virtual = 3 [teclado principal (2)]
    Id ID do teclado XTEST do núcleo virtual = 5 [teclado escravo (3)]
    Button ID do botão liga / desliga = 6 [teclado escravo (3)]
    Bus ID do barramento de vídeo = 7 [teclado escravo (3)]
    Id Id do botão de suspensão = 8 [teclado secundário (3)]
    Webcam ID da webcam do Acer CrystalEye = 9 [teclado escravo (3)]
∼ AT Translated Set 2 id do teclado = 10 [escravo flutuante]
$ xinput anexar novamente 10 3 
$ lista xinput
Id ID do ponteiro do núcleo virtual = 2 [ponteiro mestre (3)]
Id ↳ ID do ponteiro do núcleo virtual XTEST = 4 [ponteiro escravo (2)]
Id id ID do TouchPad SynPS / 2 Synaptics = 11 [ponteiro escravo (2)]
Id id ID do mouse óptico Logitech USB-PS / 2 = 12 [ponteiro escravo (2)]
↳ ↳ Logitech Unifying Device. PID sem fio: 4004 id = 13 [ponteiro escravo (2)]
Id ID do teclado do núcleo virtual = 3 [teclado principal (2)]
    Id ID do teclado XTEST do núcleo virtual = 5 [teclado escravo (3)]
    Button ID do botão liga / desliga = 6 [teclado escravo (3)]
    Bus ID do barramento de vídeo = 7 [teclado escravo (3)]
    Id Id do botão de suspensão = 8 [teclado secundário (3)]
    Webcam ID da webcam do Acer CrystalEye = 9 [teclado escravo (3)]
    ↳ AT Traduzido Conjunto 2 id do teclado = 10 [teclado escravo (3)]
Ignacio Vazquez-Abrams
fonte
Estou interessado nesta solução! meu xinput pastebin.com/puDxQaZ8, então acho que seria: xinput float 14Esta consulta é reversível? como habilitar o teclado depois disso?
Atlet3r
2
Você usaria o reattachargumento para anexá-lo novamente. xinput reattach 14 3
Ignacio Vazquez-Abrams
1
Resposta perfeita - estava procurando isso também. qualquer uma das teclas do meu laptop parou de funcionar, então agora mantenha um teclado externo sobre ele e ele continuou pressionando a tecla Control. Isso resolveu, obrigado!
notablytipsy
1
Obrigado. Mas depois de reiniciar o meu laptop, o teclado é ativado automaticamente. Então, o tempo todo, quando estou na minha máquina, desejo executar as etapas acima para desativar o teclado interno que você mencionou. Existe alguma possibilidade de desativar permanentemente?
Dinesh ML
2
O xinput não ativaria / desativaria o mesmo?
SomeNickName
18

Aqui está um pequeno botão de alternância para ativar e desativar um teclado específico. Primeiro, você precisa encontrar o seu ID de teclado com xinputou xinput-list.

Script Bash para ativar / desativar o teclado

#!/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

Configuração

  • Iconcomo o caminho do ícone a ser exibido ao ativar (por exemplo, /home/user/path/icon.png)
  • Icoff como o caminho do ícone a ser exibido ao desativar
  • Eu usei os seguintes ícones: insira a descrição da imagem aqui insira a descrição da imagem aqui

  • idcomo o ID do teclado (encontrado com xinput)

  • fconfigcaminho para o arquivo de configuração. Altere se você deseja criar o arquivo de configuração em outro diretório

Não tente executar o script se não puder executá-lo novamente sem o uso do teclado (a menos que você tenha outro teclado, é claro). Crie o seguinte iniciador (in home/user/.local/share/applications) e adicione-o à unidade:

Entrada da área de trabalho (iniciador do Unity)

[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

RESULTADO:

Launcher:

insira a descrição da imagem aqui

Notificações:

insira a descrição da imagem aqui insira a descrição da imagem aqui

mxdsp
fonte
Isso funciona bem, obrigado por explicar claramente. Há uma coisa que eu não entendo: como fazer o ícone mudar de acordo com a lógica do script de shell. Eu acho que isso foi determinado em parte por "Icon = PATH / TO / YOUR / ICON" na entrada da área de trabalho, usei um caminho absoluto, "/home/.../icon_on.png", pois não sei mais o que para usar um arquivo ".desktop", embora eu possa ver que isso pode impedir a troca de ícones. Alguém poderia fornecer uma pista, por favor?
Puffin
1
Olá, você está certo sobre o caminho absoluto no arquivo .desktop. Desculpe, mas não sei como fazer alterações dinâmicas em um ícone do iniciador. De acordo com essa resposta, não é possível: askubuntu.com/a/244951/458410 . O ícone no meu script muda apenas nas notificações.
Mxdsp
Ah ha, ok, isso faz sentido, o meu faz o mesmo, obrigado.
Puffin
A melhoria possível: em vez de armazenar estado em um arquivo que você pode verificar diretamente se o teclado está desativado com este comando: function is-disabled() { xinput --list --long | grep -A 1 "id=$1" | grep -q disabled }. Dessa forma, tudo funciona mesmo se o teclado estiver ativado / desativado por outro programa.
dshepherd 26/02
fconfig=".keyboard" if [ ! -f $fconfig ]; Aqui o que é .keyboard? E os dois são fconfige $fconfigsão iguais? E também o que ! -f $fconfigsignifica? Eu sou novo no script bash. Obrigado :)
sphoenix 16/09/17
12

Pensei em 2 maneiras de fazer isso:

  1. Configurando um modelo errado para o teclado do laptop no xorg.conf?

  2. Instalando o teclado de bloqueio para bebê

`Em resumo, o Lock-keyboard-for-Baby ou o lk4b é um pequeno programa que bloqueia o teclado, mas deixa o mouse livre. Escrevi porque minha sobrinha gosta de bater no teclado sempre que me vê sentado. As teclas digitadas em um teclado podem ter conseqüências desastrosas e eu não queria bloquear minha tela o tempo todo com um protetor de tela.

Quando iniciado, o teclado de bloqueio para bebê abre uma pequena janela que agarra o teclado e faz eco das teclas digitadas. Por padrão, ele informa o que digitar para sair ("Sair agora").

Ao contrário do protetor de tela, sua tela não está bloqueada e o mouse ainda funciona parcialmente, assim você ainda pode ver o que está na sua tela - continue assistindo TV / vídeo e / ou leia um documento usando o mouse para rolar.

Requisitos:

· GTK> = 2.x · ligações GTK2 perl (perl-gtk2 ou gtk2-perl, dependendo do seu sistema)

LnxSlck
fonte
1
isso não é exatamente o que eu preciso, preciso usar meu teclado USB, mas seu código é muito útil! ;)
atmon3r
Lock-teclado-para-Baby vai deixar você desativar o teclado interno, mainting o uso do externo
LnxSlck
Brilhante. O Lock-Keyboard-For-Baby também funciona no Ubuntu 16.04. Prefiro codificar usando caneta e papel, mantendo-o no teclado. Este pequeno utilitário resolveu meu problema. Para outros, pode ser necessário executar o sudo apt-get install libgtk2-perl antes de executar o script perl
mac
"Sair agora", Sair agora ou sair agora não funciona com menos de 18.04 com o teclado USB da torre da área de trabalho.
Fleamour
10

Uma maneira de desativá-lo é desconectar o cabo de sinal. Você precisa abrir o teclado para isso. Para obter informações sobre como fazer isso, consulte o Guia de manutenção e serviço do notebook HP Pavilion dv9000 e dv9200 .

Agora existe uma maneira de desativar o teclado usando xinput. Para fazer isso, basta pressionar Ctrl+ Alt+ Tno teclado para abrir o Terminal. Quando abrir, execute os comandos abaixo.

Para listar os dispositivos que seu X

xinput --list

Para desativar o teclado:

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

Para habilitar o teclado novamente:

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

Se você receber um erro sobre permissões, use os comandos acima com sudo.

Mitch
fonte
5

O dispositivo idrecebido xinput listcomo sugerido na resposta aceita às vezes é alterado de alguma forma na reinicialização (pelo menos no meu PC), o que resulta na desativação do dispositivo errado.

É por isso que acabei usando em device namevez de id, por exemplo:

xinput disable "AT Translated Set 2 keyboard"
janot
fonte
5

Para desativar permanentemente o teclado interno do laptop No Ubuntu, é necessário passar esses i8042.nokbdparâmetros do Kernel para não verificar / criar a porta do teclado

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

Abra o terminal e execute o seguinte comando

$sudo gedit /etc/default/grub

Tente encontrar a seguinte linha

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

Adicionar parâmetro i8042.nokbd, a linha acima deve ficar assim

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i8042.nokbd"

Atualize o grub como o seguinte comando

$sudo update-grub     

Então o rebootseu laptop.

Rokibul Hasan
fonte
Como eu ativaria novamente meu teclado?
Guilherme Parreira
4

Se eu tivesse que limpar o teclado e por isso sempre tive que desligar a máquina. Conseqüentemente eu descobri isso, para desativar temporariamente o teclado:

$ xinput ID de flutuação #; sleep t ; xinput reattach id # master #

t-tempo para dormir em segundos

id # e master # conforme mencionado acima ( topo da página )

por exemplo, no meu caderno, digitei:

$ xinput float 11;sleep 5;xinput reattach 11 3
Tyþë-Ø
fonte
3

Tente executar xmodmap -e 'keycode 24='para desativar apenas a tecla Q. Se isso funcionar, você poderá adicioná-lo ao seu arquivo ~/.bashrcou global /etc/bash.bashrc. Eu peguei essa ideia daqui , que mostra todos os mapeamentos de teclas.

dxvxd
fonte
4
Isso também não seria desativado qno teclado externo?
Sparhawk
2

Pelo que vale a pena, com base nas respostas anteriores e na minha própria brincadeira, criei o seguinte script, que chamo toggle_keyboard.she coloco no meu ~/bincaminho. Eu tenho um atalho de teclado que o executa definido como CtrlWinK.

Alguns problemas com as respostas anteriores e os benefícios do meu script:

  • Confiar em um número de identificação com o xinput falha quando você reinicia e o número de identificação é alterado. Isso aconteceu comigo durante a execução xinput float 13. Acabei desativando o hardware errado.
  • Confiar em um arquivo para manter o estado ativado / desativado falhará se você reiniciar também. O arquivo informará que o teclado está desativado (se você o desativou com o script), mas após uma reinicialização, ele será ativado novamente. Minha solução obtém as informações ativadas / desativadas de um comando xinput analisado.
  • Meu script funcionará com qualquer dispositivo xinput que aparece quando você digita xinput list --name-only. Basta obter o nome e editar as quatro principais variáveis. Eu o uso no teclado do laptop, na webcam, no monitor com tela sensível ao toque e em algumas outras coisas que uso apenas de vez em quando.

#!/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
cbp44
fonte
0

xinput float "AT Translated Set 2 keyboard"

Depois de passar horas e anos com métodos diferentes, com diferentes distribuições e lançamentos. O comando terminal acima é o que eu confio após problemas ..... Eu uso isso agora com plasma neon e estava usando-o há um mês no Ubuntu 18.04 direto. (precisa ser aplicado após a reinicialização - pode ser colocado na inicialização) * Meu teclado embutido no meu laptop HP está danificado e começa a digitar, o que causa sérios problemas - eu uso um teclado e mouse sem fio - o touchpad é ativado / desativado como parte da barra superior do KDE opções - neon / plasma 5). Nas configurações do sistema / inicialização automática Um arquivo de texto com a seguinte linha de código é salvo como um arquivo .sh e definido como executável (propriedades dos arquivos txt)
xinput float "AT Translated Set 2 keyboard"

O arquivo de texto recebe um nome> keyboardoff> e é colocado no arranque automático (executável) Quando você reinicia / inicia o sistema> o teclado incorporado é desativado. (use a lista xinput para testar)

duncan williams
fonte