입력 이벤트에 따라 키보드 레이아웃 전환

입력 이벤트에 따라 키보드 레이아웃 전환

내 컴퓨터에는 프랑스어와 미국식 키보드가 있습니다. 나는 멋진 wm을 사용하고 있으며 키보드 레이아웃 사이를 쉽게 전환할 수 있도록 모든 것을 설정했습니다. 하지만 아직은 스스로 해야 해요.

이론적으로 컴퓨터는 입력 이벤트가 어떤 키보드에서 왔는지 이해하고 키보드 관련 레이아웃을 사용할 수 있어야 합니다. 확인했지만 좋은 답변을 찾지 못했습니다. 이것이 가능합니까?

키보드 이벤트를 분석하고 전환하는 짧은 코드를 작성할 수 있을 것 같지만 다음과 같습니다.

  • 이벤트 핸들러와 병렬로 실행되므로 동시성 문제가 발생할 수 있습니다(예:이것);
  • 이것은 더러운 접근 방식처럼 보이며 저는 깨끗한 솔루션을 선호합니다.

당신의 도움을 주셔서 감사합니다

답변1

키보드를 개별적으로 구성하면 됩니다. 예를 들어, 저는 노트북 키보드에 미국 영어 레이아웃을 사용하고 독일어 레이아웃의 Sun Type 6 USB 키보드를 가지고 있으며 키보드에 다음이 있습니다 /etc/X11/xorg.conf.d/10-evdev.conf.

# Default configuration for all keyboards not handled explicitly
Section "InputClass"
     Identifier "evdev keyboard catchall"
     MatchIsKeyboard "on"
     MatchDevicePath "/dev/input/event*"
     Driver "evdev"

     Option "XkbRules"   "evdev"
     Option "XkbModel"   "pc105"
     Option "XkbLayout"  "us(altgr-intl),de,ru"
     Option "XkbOptions" "lv3:menu_switch,caps:hyper,compose:ralt,grp:rctrl_rshift_toggle,terminate:ctrl_alt_bksp"
EndSection

# Match the external keyboard by USB ID
Section "InputClass"
    Identifier "Sun Type 6"
    MatchIsKeyboard "on"
    MatchUSBID "0430:0005"

    Driver "evdev"
    Option "XkbRules"   "evdev"
    Option "XkbModel"   "sun(type6)"
    Option "XkbLayout"  "de"
    Option "XkbOptions" "caps:hyper,compose:menu,terminalte:ctrl_alt_bksp"
EndSection

관련 정보