최근에 공부를 시작했어요드보르자크키보드 레이아웃이 있지만 여전히 사용해야 합니다.풀 키보드때때로.
두 키보드 레이아웃 사이를 전환하는 스크립트를 찾고 있습니다.
게다가 나는 이렇게 부르고 싶다.스크립트어디에서나 작동하는 단축키가 제공됩니다(내 DE에서).그리고내 콘솔에서. )는 전원 버튼을 누르는 것과 같습니다.이 게시물.
답변1
X와 관심 있는 각 유형의 텍스트 콘솔에 대해 별도로 이 작업을 수행해야 합니다.
임의의 키맵 간에 전환하려면 상태를 유지해야 합니다. 일반적으로 콘솔에서는 이 작업을 수행하지 않기 때문입니다. 이것이 Gnome 및 KDE와 같은 레이아웃 전환기가 수행하는 작업입니다. 그러나 일부 잘 알려진 키맵 사이를 전환하려는 경우 콘솔에 쿼리하고(이 기능이 귀하의 콘솔 유형에서 사용 가능하다고 가정) 키 누르기에 의해 전송된 현재 코드를 가져오고 해당 코드를 기반으로 무엇으로 전환할지 결정할 수 있습니다. 다음은 몇 가지 가능성입니다.
- 키코드 24(콘솔 유형에 따라 번호가 다름)가 현재 전송되는 경우
q
현재 키맵은 qwerty처럼 보이므로 dvorak로 전환하고, 그렇지 않으면 qwerty로 전환합니다. - Q인접한 키코드가 있는 경우 W아마도 쿼티 레이아웃일 것입니다.
- 키맵에 가짜 키를 추가하고 바인딩을 찾으세요.
W이것은 = Q+1 로 테스트된 X 및 Linux 구현입니다 . 아직 테스트해본 적은 없으니 참고해주세요. 이 스크립트는 일반적으로 텍스트 모드 원격 로그인을 통해 사용할 수 없습니다.
if [ -n "$DISPLAY" ]; then
if xmodmap -pke | awk '$3=="=" && $4=="q" {q=$2}
$3=="=" && $4=="w" {w=$2}
END {exit w-q==1}'; then
setxkbmap us
else
setxkbmap dvorak
fi
elif [ "$TERM" = "linux" ]; then
if dumpkeys | awk '$3=="=" && $4=="q" {q=$2}
$3=="=" && $4=="w" {w=$2}
END {exit w-q==1}'; then
loadkeys us
else
loadkeys dvorak
fi
fi
X Window에서 키에 바인딩하는 가장 좋은 장소는 데스크톱 환경이나 창 관리자의 키 바인딩 기능을 사용하는 것입니다. 키가 X의 특정 부분만 실행하도록 할 수 있습니다. 물론 DE/WM에 레이아웃 전환 기능이 있으면 이를 사용할 수도 있습니다.
Linux 콘솔에서는 키 바인딩 가능성이 매우 제한되어 있습니다. 키를 기호에 바인딩할 수 있습니다 KeyboardSignal
. SysVinit를 사용하는 경우 신호를 누를 때 스크립트를 루트로 실행하세요 kb::kbrequest:/path/to/script
. /etc/inittab
Upstart를 사용하여 이 키의 작동을 구성하는 방법을 모르겠습니다.
답변2
setxkbmap은 X 외부에서 작동하지 않나요?
setxkbmap \
-model pc105 \
-layout 'us(dvorak-intl),us(alt-intl)' \
-option \
-option grp:alt_shift_toggle \
-option compose:rwin
X와 터미널에서 사용합니다. "-option grp:alt_shift_toggle" 텍스트는 Alt+Shift를 누를 때 레이아웃을 전환하도록 setxkbmap에 지시합니다. 동적으로 레이아웃을 전환하기 위한 추가 토글/스위치 옵션은 /usr/share/X11/xkb/rules/base.lst(Debian Squeeze...ymmv)를 참조하세요.
답변3
스크립트를 생성합니다:
#!/bin/bash
if [[ -e ~/.my.kb.not.dvorak ]] ; then
setxkbmap dvorak
touch ~/.my.kb.is.dvorak
rm ~/.my.kb.not.dvorak
fi
if [[ -e ~/.my.kb.is.dvorak ]] ; then
setxkbmap <YOURLAYOUT>
touch ~/.my.kb.not.dvorak
rm ~/.my.kb.is.dvorak
fi
<YOURLAYOUT>
관련 데이터로 대체합니다 . 이제 이 스크립트를 실행하기 위한 단축키 조합을 설정하십시오 xbindkeys
.
답변4
콘솔에서는 loadkeys dvorak
~/.bashrc에서 이를 설정하여 스크립트를 실행한 후에도 새로 생성된 터미널을 포함할 수 있도록 할 수 있습니다.