Linux에서 2 개 이상의 키보드 레이아웃 그룹이 다른 핫키로 변경됨


2

그래서 이것은 제가 수년 동안 꿈꿔 왔던 것입니다. Google에서 해결책을 찾기 위해 산발적으로 노력했지만 실제로는 아무것도 찾지 못했습니다. 나는 IRC의 누군가에 의해 한 번 들렸지 만 이것이 가능하다는 것을 결코 보지 못했습니다.

여기 내가 원하는 것입니다.

나는 매일 키보드 작업을 두 가지 기본 입력 언어로 사용합니다. Shift+ Caps_Lock를 사용 하여이 레이아웃을 토글합니다. 때로는 ua와 pl을 입력해야하며 say L_Win+ 를 눌러 토글되는 별도의 레이아웃 그룹으로 배치하고 싶습니다 Caps_Lock.

따라서 L_Win+를 누를 때마다 Caps_Lockua와 pl 사이에서 순환을 시작하고 표준 en과 ru 그룹으로 돌아 가야 할 때 Shift+를 누릅니다 Caps_Lock.

이 설명은 기존 키보드 레이아웃 전환 프레임 워크의 작동 방식에 대한 실제 이해와 관련이 없습니다. 이상적인 시나리오를 상상하고 있습니다.

글쎄, 친애하는 슈퍼 사용자, 이것이 리눅스에서 가능합니까? 그렇다면 어떻게?

답변:


2

이 스크립트를 약간 개선했습니다. 이제 WM 키보드 스위처가 중단되지 않습니다. TS가 원하는대로 조금 다르게 작동하지만 적어도 저에게는 이것이 더 편하다고 생각합니다.

원하는 경우 키보드 모델 및 옵션을 변경해야합니다

#!/bin/sh
current=`setxkbmap -query | grep layout|cut  -d ',' -f 2`
if [ "$current" == 'pl' ]
then 
    notify-send -t 1500 -i keyboard "Keyboard layouts: EN / RU"
    setxkbmap -model logitech_base -layout en,ru -variant , -option grp:caps_toggle,compose:rwin
else 
    notify-send -t 1500 -i keyboard "Keyboard layouts: UA / PL"
    setxkbmap -model logitech_base -layout ua,pl -variant , -option grp:caps_toggle,compose:rwin
fi

일단 UA / PL에 들어가면 EN / RU에 들어가서 영원히 거기에 갇혀 있기 때문에 EN / RU 그룹을 벗어나지 않을 것 같습니다. 추신 : 어쩌면; D
ILIV

글쎄, 나는 그 루프 스위처로 CapsLock을 가지고 있습니다. EN / RU 사이를 전환합니다. UA / PL이 필요할 때 해당 스크립트를 실행하고 (CTRL + Caps로 매핑) Caps를 사용하여 UA / PL 간을 전환합니다. 다른 Ctrl + Caps는 레이아웃을 EN / RU로 복원합니다. 실제로 나는 EN / RU 및 EN / UA 그룹의 3 개 언어에 대해서만 사용합니다.
izbushka

1

가장 쉬운 방법은 기본 레이아웃 (en 및 ru)에 대해 창 관리자의 키보드 레이아웃 스위처를 사용한 다음 L_Win+에 매핑 된 다음 스크립트를 사용하는 것입니다 Caps_Lock.

#!/bin/bash 

current=`setxkbmap -query | grep layout | fold -s2 | tail -n 1`
if [ "$current" == 'ua' ]
then
    setxkbmap -layout pl
else
    setxkbmap -layout ua
fi

스크립트를로 저장하고 toggle_layout.sh실행 가능하게 만들고 창 관리자 도구를 사용하여 원하는 키보드 바로 가기에 매핑하면 필요한 작업을 수행해야합니다. 스크립트는 현재 ua레이아웃을 사용하고 있는지 확인 하고 그렇지 않은 경우로 전환합니다 pl.


최신 정보:

나는 다음과 같은 방식으로 작동하도록했습니다.

  1. 위의 스크립트를 Ctrl+ 8(keypad 8)에 매핑하십시오 .
  2. 기본 레이아웃간에 전환 할 다른 스크립트를 만듭니다.

    #!/bin/bash 
    
    current=`setxkbmap -query | grep layout | fold -s2 | tail -n 1`
    if [ "$current" == 'en' ]
    then
        setxkbmap -layout ru
    else
        setxkbmap -layout en
    fi
    
  3. 2 단계의 스크립트를 Ctrl+ 2(keypad 2)에 맵핑하십시오 .

레이아웃이 변경 될 때 변경되지 않는 키를 사용해야합니다 (이 예제에서 키패드를 사용한 이유). 레이아웃을 변경하는 WM 기본 방법을 어 기지 않고이 작업을 수행 할 수 있는지는 모르겠지만 적어도 작동해야합니다.


빠른 답변 감사합니다. 시도해 볼게요. 그럼에도 불구하고, xorg-xkbutils / GNOME과 같은 기존 표준 소프트웨어를 간단히 구성하여이 작업을 수행 할 수 있는지 궁금합니다.
ILIV

@ILIV, AFAIK에서는 키보드 전환을 위해 두 가지 다른 키보드 단축키를 설정할 수 없습니다. 내가 여기서 사용하는 것은 표준 setxkbmap입니다. 나는 당신이 그것보다 더 간단하게 얻을 수 있는지 의심합니다.
terdon

그렇습니다. 이것은 꽤 좋은 해결책입니다. 나는 아직 테스트해야합니다. 그리고 나는 그것을 스스로 생각하지 않았다는 것이 거의 부끄럽습니다! xkbutils / DE를 구성하여 너무 집중했습니다. 이것이 실제로 효과가 있다면 이것이 실현되는 꿈이기 때문에 실제로 당신이 응답하게 된 것을 기쁘게 생각합니다. : P
ILIV

당신의 접근 방식에 문제가 있습니다. 터미널에서 setxkbmap을 실행하면 키보드 레이아웃이 손실되지만 -layout 옵션의 인수로 전달 된 키보드 레이아웃이 손실됩니다.
ILIV

@ILIV, 당신은 옳습니다 .WM의 기본 레이아웃 변경 방법을 깨뜨린 것 같습니다. 해결 방법은 내 업데이트 된 답변을 참조하십시오. el, es, en 및 ua 사이를 전환 할 때 내 LMDE 시스템에서 제대로 작동합니다.
terdon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.