여기에서 비슷한 질문을 본 적이 있지만 그 중 어떤 것도 반복하지 않을 것 같습니다. 저는 수년에 걸쳐 이 문제에 대해 진전을 이루었지만 아직 갈 길이 멉니다. 최신 단계는 (1) 외부 키보드가 연결될 때 특정 키보드 레이아웃을 적용하고 (2) 연결이 끊어지면 복원하기 위해 다음 udev 규칙을 사용하고 있다는 것입니다.
ACTION=="add", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="2403", SUBSYSTEMS=="usb", ENV{XKBMODEL}="pc105", ENV{XKBLAYOUT}="tr", ENV{XKBVARIANT}="f", ENV{XKBOPTIONS}=""
ACTION=="remove", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="2403", SUBSYSTEMS=="usb", ENV{XKBMODEL}="pc105", ENV{XKBLAYOUT}="tr", ENV{XKBVARIANT}="", ENV{XKBOPTIONS}=""
그러나 불행하게도 이는 해당 외부 키보드에 지정된 키보드 레이아웃을 적용하는 것으로 보입니다.세계적인, 해당 키보드에 특별히 적용하는 것이 아니라. 결과적으로 문제를 해결하기 위해 다음 단계가 포함된 셸 스크립트를 통해 수행할 수 있는 다른 단계를 수행하지 않는 한 통합 노트북 키보드를 효과적으로 사용할 수 없게 됩니다.
int_kbd_id="$(xinput -list | grep " AT Translated Set 2 keyboard " | awk -F'=' '{print $2}' | awk -F' ' '{print $1}')"
ext_kbd_id="$(xinput -list | grep " COMPANY 2.4G Device " | awk -F'=' '{print $2}' | awk -F' ' '{print $1}')"
if [[ "$int_kbd_id" ]]; then
setxkbmap -device "$int_kbd_id" -layout "tr" -variant ""
fi
if [[ "$ext_kbd_id" ]]; then
setxkbmap -device "$ext_kbd_id" -layout "tr" -variant "f"
fi
이제 세션 중 적어도 위의 udev 규칙을 처음 실행한 후(그리고 로그인 중에 두 키보드를 모두 사용할 수 있도록 사용자가 로그인하기 전) 이 스크립트를 자동으로 실행해야 합니다. 이 스크립트를 실행한 후 외부 키보드의 연결을 끊었다가 다시 연결하면 통합 노트북 키보드 레이아웃이 다시 변경되지 않는 것으로 나타났습니다(그러나 이 동작이 얼마나 안정적인지는 잘 모르겠습니다).
지금까지 (1) udev 규칙 RUN+="/usr/local/bin/<SCRIPT>"
, (2) 및 (3)을 사용하여 /etc/xdg/autostart/keyboard-layouts.desktop
이를 실행하려는 세 번의 시도가 /etc/systemd/system/keyboard-layouts.service
모두 실패했습니다. 수정된 udev 규칙은 두 개의 키보드를 완전히 사용할 수 없게 만들고 다른 키보드는 아무런 효과가 없습니다. 아마도 "Before=", "After=" 등의 옵션이 사용되지 않기 때문에 udev 규칙 전에 스크립트가 실행되었기 때문일 것입니다. 올바르게 구성하십시오. 시스템화된 서비스...