나에게 필요한 것은
- Shift-CapsLock내가 가장 좋아하는 단축키(예:
- 다른 단축키를 사용하여 벨로루시어 레이아웃으로 전환하세요(예: Ctrl-RightShift실제 바인딩은 중요하지 않음)
- 벨로루시어 레이아웃이 활성화되면 러시아어/영어로 다시 전환합니다.Shift-CapsLock
xkb로 가능한가요? 그렇다면 어떻게 해야 합니까?
답변1
세 가지 유용한 명령:
1. 지금부터 현재 키보드 레이아웃을 가져옵니다.주제:
setxkbmap -print | grep xkb_symbols | awk -F"+" '{print $2}'
변형이 선택사항인 레이아웃(변형)을 반환합니다.
2. 현재 키보드 레이아웃이 레이아웃(변형)인지 확인합니다.
setxkbmap -print | grep "layout(variant)"
또는 "(변형)"이 없습니다.
아무것도 반환하지 않습니다.
삼. 키보드 레이아웃을 지정된 값으로 설정합니다.
setxkbmap layout variant
변형은 선택 사항입니다.
( man setxkbmap
추가 정보)
당신은 무엇을 할 수 있나요:
1. chmod +x file
현재 키보드 레이아웃을 기반으로 키보드 레이아웃을 동적으로 변경하는 간단한 실행 가능( ) 스크립트를 만듭니다 . 예를 들어, 첫 번째 요점을 다룬다면:
#!/bin/bash
if setxkbmap -print | grep "us"
then
setxkbmap ru
else
setxkbmap us
fi
2. 키보드 단축키 관리자를 사용하여 Shift-CapsLock
스크립트에 키 입력을 할당합니다.
행운을 빌어요!
답변2
실제로 원하는 것은 전체 상태 프로세스(레이아웃으로 전환하기 전에 상태를 아는 것 by
)가 필요하기 때문에 불가능합니다.
그러나 레이아웃 링에서 감소/증가를 허용하는 ISO_Prev_Group 및 ISO_Next_Group 기호 외에도 ISO_First_Group 및 ISO_Last_Group이라는 두 가지 기호가 있습니다. 이 링을 사용하면 us,by,ru
단일 스위치로 항상 세 가지 레이아웃 중 하나에 액세스할 수 있습니다.
예를 들어, 정의 Shift- CapsLock레이아웃에 있을 때 ISO_Last_Group을 보내고, 안에 있을 때 ISO_First_Group을 보내고, 정의 - ISO_Prev_Group에 있을 때 ISO_Next_Group을 보내고, 들어갈 때 ISO_Next_Group(또는 Last)을 보냅니다.us
ru
by
CtrlRightShiftus
ru
by
원하는 것과의 차이점은 by
.
또한 by
몇 가지 벨로루시어 특정 키릴 문자에 대한 레이아웃이 필요한 경우 또 다른 옵션은 ru
AltGr 또는 대부분의 라틴 키보드와 같은 유사한 키를 사용하여 액세스할 수 있는 일부 키에 추가 기호를 추가하는 수정된 레이아웃을 사용하는 것입니다.
파일에는 by
3개의 다른 키만 있으므로 ru
이것이 올바른 접근 방식인 것 같습니다. 이 경우 레이아웃을 다음과 같이 쌓습니다.us,ru,by
Shift-Capslock의 경우 "us"에서 ISO_Next_Group을, "ru"에서 ISO_Prev_Group을 사용하고 "ru"에서 래치된 ISO_Next_Group으로 키를 정의합니다.
이렇게 하려면 ~/.xkb/keymap/mykbd를 만들고 거기에 setxkbmap의 출력을 넣으면 다음과 같은 기본 키보드 정의가 됩니다.
setxkbmap "us,ru,by" ; setxkbmap -print > ~/.xkb/keymap/mykbd
그런 다음 ~/.xkb/symbols/mysymbols 파일을 만듭니다.
partial modifier_keys
xkb_symbols "shift_caps_us_ru_by" {
key <CAPS> {
symbols[Group1] = [ Caps_Lock, ISO_Next_Group ],
symbols[Group2] = [ Caps_Lock, ISO_Prev_Group ],
symbols[Group3] = [ Caps_Lock, ISO_First_Group ]
};
key <RALT> {
symbols[Group2] = [ ISO_Group_Latch ]
};
};
~/.xkb/keymap/mykbd
파일을 편집 하고 xkb_symbols
추가할 줄을 변경하세요.+mysymbols(shift_caps_us_ru_by)
마지막 으로 xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd
지금 로드를 사용하여 라틴어(미국)와 키릴어(러시아어) 레이아웃 사이를 전환할 수 있습니다. 키릴어에서는 (오른쪽 Alt) 키를 길게 눌러 벨로루시어 관련 문자에 액세스할 수 있습니다.ShiftCapsLockAltGr
답변3
좋아, 그럼 나는 뭐지?진짜원하는 것은 MRU(가장 최근에 사용된) 순서로 레이아웃을 전환하는 것입니다. 그놈의 기본 레이아웃 전환기의 기능은 무엇일까요?정확하게("조정" → "키보드 및 마우스" → "추가 레이아웃 옵션" → "레이아웃 변경용 키" 체크박스가 활성화되어 있지 않은지 확인하세요!) 그래서 현재 하나의 링에 4개의 레이아웃(러시아어, 벨로루시어, 우크라이나어, 영어)이 있고 최신 레이아웃 간에 쉽게 전환할 수 있습니다 SuperSpace. 이것은 내 문제와 몇 가지 문제를 해결했습니다.
답변4
나는 사용하는 것이 좋습니다sxhkd(간단한 X 단축키 데몬). 구성이 전혀 어렵지 않아야 합니다. 다음에 제공된 단계를 따르세요.위키피디아 튜토리얼당신은 그것을 즉시 실행하게 될 것입니다.
간단하게 유지하기 위해 sxhkd를 사용하면 입력 이벤트(키 누르기 등)를 작업(키보드 레이아웃을 앞뒤로 변경하는 등...)에 매핑/바인딩할 수 있습니다.
개인적으로 저는 즉시 3가지 다른 레이아웃 사이를 전환합니다. 내가 사용하는 매핑:
super + k; {u,f,r}
setxkbmap {us,fr,ru}
super특수 키(수정자 키라고 함)이며 Ctrl또는 Alt등과 같은 다른 수정자 키를 사용할 수 있습니다(둘 다 문서화되어 있음).
super따라서 수정자 키( 제 경우에는 Windows 키) 를 누른 k다음 두 키를 놓고 세 키 중 하나를 누르면 u f r누른 키에 따라 제공된 세 가지 인수 중 하나가 실행됩니다. Order setxkbmap
(순서 존중) ). 클릭 superk하면 프랑스어 레이아웃이 f표시된다고 가정해 보겠습니다.setxkbmap fr
p.s.: 이미 작업과 연결된 키 조합을 실수로 바인딩하는 경우 원치 않는/예상치 못한 결과가 발생할 수 있습니다(나중에 바인딩하면 이전 바인딩이 가려질 가능성이 높습니다). 하지만 모든 것에는 항상 해결책이 있다는 것을 기억하십시오. 그러니 시도하는 것을 두려워하지 마세요.