AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 688546
Accepted
waffl
waffl
Asked: 2022-01-31 04:48:44 +0800 CST2022-01-31 04:48:44 +0800 CST 2022-01-31 04:48:44 +0800 CST

Tecla Alt e Super (Windows) de troca do XFCE

  • 772

Eu tentei muitas coisas para tentar trocar a tecla alte windowsno meu Thinkpad X220 executando LinuxMint 20.3 com xfce/xfwm4.

Eu tentei setxkbmap -option altwin:swap_alt_win, adicionando o seguinte a ~/.xmodmap:

remove mod1 = Alt_L
remove mod4 = Super_L
add mod1 = Super_L
add mod4 = Alt_L

e correndoxmodmap ~/.xmodmap

Eu olhei através do Keyboard > Layout > Change Layout Optionpara ver o que está disponível.

FWIW, showkeyrelatórios:

ALT keycode  56
SUPER keycode 125

e também tentei configurar isso manualmente em ~/.xmodmap:

keycode 56 = Alt_L
keycode 125 = Super_L
remove Mod1 = Alt_L
remove Mod4 = Super_L
add Mod1 = Super_L
add Mod4 = Alt_L

Até agora nada funcionou para mim, qualquer dica na direção certa seria muito apreciada!

xfce keyboard-layout
  • 1 1 respostas
  • 727 Views

1 respostas

  • Voted
  1. Best Answer
    A. Que
    2022-01-31T13:24:04+08:002022-01-31T13:24:04+08:00

    Eu nunca tive sorte em conseguir que o setxkbmap fizesse o que eu queria, mas remapeei as chaves no nível do kernel com sucesso.

    Primeiro, você precisa conhecer seu dispositivo de entrada e o código de digitalização da chave. A ferramenta evtestpode ser usada para isso.

    $ sudo evtest
    No device specified, trying to scan all of /dev/input/event*
    Available devices:
    /dev/input/event0:  Power Button
    /dev/input/event1:  Power Button
    /dev/input/event2:  USB Laser Mouse
    ...
    /dev/input/event7:  SONiX USB DEVICE
    /dev/input/event8:  SONiX USB DEVICE Keyboard
    /dev/input/event9:  SONiX USB DEVICE System Control
    /dev/input/event10: SONiX USB DEVICE Consumer Control
    /dev/input/event11: SONiX USB DEVICE
    ...
    Select the device event number [0-31]:
    

    Aqui são mostrados 5 dispositivos relacionados ao teclado e o dispositivo número 7 que é o teclado real. Tentativa e erro para descobrir isso.

    Anote o id do dispositivo depois de selecionar o teclado.

    Select the device event number [0-31]: 7
    Input driver version is 1.0.1
    Input device ID: bus 0x3 vendor 0xc45 product 0x5004 version 0x111
    Input device name: "SONiX USB DEVICE"
    Supported events:
    ...
    

    A linha Input device IDé o que você precisa e isso será exibido logo após você selecionar seu dispositivo.

    Quando selecionado, você pode pressionar algumas teclas no teclado e um evento será registrado para pressionar e soltar a tecla. Se você não vir os eventos sendo registrados, tente selecionar outro dispositivo. O dele ctrl-cquando terminar.

    Você vai querer anotar o código de tecla para alt e super depois de pressioná-los. No meu caso, a saída para essas teclas pressionadas é assim:

    Event: time 1643575346.666078, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e3
    Event: time 1643575346.666078, type 1 (EV_KEY), code 125 (KEY_LEFTMETA), value 1
    Event: time 1643575346.666078, -------------- SYN_REPORT ------------
    Event: time 1643575346.766070, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e3
    Event: time 1643575346.766070, type 1 (EV_KEY), code 125 (KEY_LEFTMETA), value 0
    Event: time 1643575346.766070, -------------- SYN_REPORT ------------
    ...
    Event: time 1643575369.928048, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e2
    Event: time 1643575369.928048, type 1 (EV_KEY), code 56 (KEY_LEFTALT), value 1
    Event: time 1643575369.928048, -------------- SYN_REPORT ------------
    Event: time 1643575370.046045, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e2
    Event: time 1643575370.046045, type 1 (EV_KEY), code 56 (KEY_LEFTALT), value 0
    Event: time 1643575370.046045, -------------- SYN_REPORT ------------
    

    Mostrado acima, o código 125 é para a tecla super e 56 para a tecla alt esquerda. Seus valores podem ser diferentes.

    Agora você precisa criar um arquivo para remapear as chaves desejadas. Crie um arquivo /etc/udev/hwdb.d/chamado 50-alt_super_swap.hwdb. Exatamente o que é chamado depende de você, mas você precisa de um número no início, o traço e a extensão.

    Nesse arquivo você colocará o seguinte:

    # Input device ID: bus 0x3 vendor 0x13ba product 0x1 version 0x110
    # evdev:input:b<bus_id>v<vendor_id>p<product_id>e<version_id>-<modalias>
    evdev:input:b0003v13BAp0001*
      KEYBOARD_KEY_70038=125
      KEYBOARD_KEY_7007D=56 
    

    Você precisa modificar a evdev:inputlinha para refletir o ID do dispositivo impresso como evtest. Observe a tradução e as maiúsculas/minúsculas. Se você não acertar essa linha exatamente, nada acontecerá.

    As KEYBOARD_KEY_*linhas têm seus valores em hexadecimal. 38 hexadecimal é 56 decimal e 7D é 125.

    $ sudo systemd-hwdb update
    $ sudo udevadm trigger
    

    Leva vários segundos para que as alterações sejam aplicadas. Além de encontrar a troca de chaves, você também pode ver se as alterações foram aplicadas.

    $ udevadm info /dev/input/event7
    P: /devices/pci0000:00/0000:00:07.1/0000:0d:00.3/usb3/3-2/3-2:1.0/0003:0C45:5004.0005/input/input7/event7
    N: input/event7
    L: 0
    S: input/by-path/pci-0000:0d:00.3-usb-0:2:1.0-event-kbd
    S: input/by-id/usb-SONiX_USB_DEVICE-event-kbd
    ...
    E: KEYBOARD_KEY_70038=125
    E: KEYBOARD_KEY_70075=56
    ...
    

    Embora eu não tenha trocado alt e super, usei essa técnica para remapear chaves de mídia usando este artigo como referência.

    • 0

relate perguntas

  • a geometria do terminal xfce4 é dimensionada extremamente pequena

  • A tecla shift de recuperação ainda atua como tecla shift

  • Empilhe til e barra sobre a letra

  • Comando para criar o iniciador (atrás da GUI do Xfce/Thunar)

  • Firefox exibindo barras de entrada em preto, equações em cinza claro

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve