udev 및 setxkbmap을 사용하여 활성 사용자의 키보드 설정을 변경하는 방법은 무엇입니까?

udev 및 setxkbmap을 사용하여 활성 사용자의 키보드 설정을 변경하는 방법은 무엇입니까?

작업할 때 데스크탑에 연결하는 USB 키보드가 있습니다. 다음 내용은 사용시 수동으로 설정되는 경우가 많습니다xkbmap 설정옵션:

setxkbmap -option compose:ralt
setxkbmap -option ctrl:swap_rwin_rctl
setxkbmap -option ctrl:swap_lwin_lctl

이 작업을 자주 수행하므로 다음을 사용하여 프로세스를 자동화하고 싶습니다.우데브규칙. 키보드를 삽입하면 다음 규칙이 이벤트와 일치합니다.

ACTION=="add", SUBSYSTEM=="usb", DRIVER=="usb", ATTRS{idVendor}=="046a", ATTRS{idProduct}=="0023", RUN+="/home/cutuchiqueno/.local/bin/kbd_udev", OWNER="cutuchiqueno"

RUN 스크립트에는 이 질문의 시작 부분에 세 줄이 포함되어 있습니다.

#!/bin/bash
setxkbmap -option compose:ralt
setxkbmap -option ctrl:swap_rwin_rctl
setxkbmap -option ctrl:swap_lwin_lctl
echo `date +%T` >> /home/cutuchiqueno/udevtest

(디버깅 목적으로 마지막 줄을 추가했습니다.) 불행히도 옵션은 연결되어 있지 않습니다. 나는 이것이 환경 매개변수와 관련이 있다고 상상할 수 있지만, 실제로 이 문제를 해결하는 방법은 모르겠습니다.

답변1

두 가지 수정을 통해 이 특별한 경우가 작동합니다.

스크립트를 추가 kbd해야 합니다DISPLAY:0.0

udev 규칙은 조기 이벤트에 반응합니다. 하위 시스템을 input.

모든 것이 순조롭게 진행되고 있습니다.

관련 정보