키보드 레이아웃을 *일시적으로* 전환하는 것에 대해 생각하시나요?

키보드 레이아웃을 *일시적으로* 전환하는 것에 대해 생각하시나요?

저는 Dvořák 타이피스트입니다. 내 컴퓨터에서는 dvorak이 기본값이고 다른 컴퓨터에서는 setxkbmap(X를 사용할 때) 또는 loadkeys(그렇지 않은 경우)을 자주 사용합니다. 하지만 "공유" 시스템은 어떻습니까?

고객을 위해 시스템을 준비하는 등의 시스템 작업을 수행할 때(Linux, 주로 RH 기반) 때때로 관리자 계정을 공유합니다. 내가 맡은 역할을 수행한 후 다시 전환하는 것을 잊어버리면...모든 것이 무너집니다. 더 이상 아무 것도 입력할 수 없기 때문에 이것은 이해할 수 있습니다!

at일을 시작할 때 일을 시작하려고 생각했는데 문제의 시스템이 작동하지 않았습니다 atd(변경할 수 없습니다). :-(

이상적으로는 터미널을 열고, 키보드 레이아웃을 전환하고, 터미널을 닫을 때 시스템이 변경 사항을 "잊게" 하고 싶습니다. setxkbmap반면에 둘 다 loadkeys"더 높은" 수준에서 레이아웃을 변경합니다.

누구든지 어떤 아이디어가 있습니까?
(추가 명령 등을 입력해야 하는데 괜찮습니다. 다른 사람이 그렇게 할 것이라고는 생각할 수 없습니다.)

답변1

가장 쉬운 방법은 작업을 마친 후 로그아웃하는 것입니다. 개인 변경사항은 로그아웃할 때까지만 지속됩니다. 즉, 누군가의 계정을 방해하는 것이 일반적인 사용 사례입니다.

다음을 터미널에 입력/붙여넣기하세요(bash 또는 zsh 실행).

xkb=$(xkbcomp :0 -); trap 'xkbcomp - :0 <<<"$xkb"' 0 1 2 15; setxkbmap dvorak

정상적으로 쉘을 종료하거나( exit, Ctrl+ D) 터미널을 정상적으로 닫으면(SIGHUP 전송), 즉 일반적인 방법으로 쉘 세션을 종료하면 트랩이 원래 키맵을 복원합니다.

동시에 여러 터미널에서 이 작업을 수행하지 마십시오. 종료된 첫 번째 터미널은 원래 구성을 복원하고 마지막 종료된 터미널은 이 명령이 실행될 때 구성을 복원합니다.

복원하려는 키맵을 알고 있고 일반적인 터미널 종료를 처리하려는 경우 이를 단순화할 수 있습니다.

trap 'setxkbmap us' 0 1; setxkbmap dvorak

일반적인 키보드 설정 GUI 구성기를 통해 수행할 수 있는 사용자 정의는 복원되지 않습니다. (이것은 본질적으로 표준 XKB 매핑에 존재하는 옵션입니다.) 사용자의 사용자 정의 설정을 복원하려면 xkbcomp :0 -위에서 설명한 방법을 사용하여 원래 키맵을 저장해야 합니다.

또는 창별 전환 레이아웃을 제공하는 인터페이스를 사용하고 하나의 터미널 창을 고수하십시오(GUI 응용 프로그램을 실행하지 마십시오). 일부 데스크탑 환경에서는 이 기능을 제공합니다(예:XFCE), 좋다지식 기반. Kbdd를 기본 설치에서 사용하거나 구성할 가능성은 거의 없지만 기본 데스크탑 환경에 이 기능이 있을 수도 있습니다.

귀하의 사용 사례에는 적용되지 않지만 사용자 계정에 로그인할 때 사용자 컴퓨터에 개입하는 사용 사례에는 적용되는 일부 설명은 다음과 같습니다.

  • 이로 인해 원래 설정된 레이아웃에 미묘한 차이가 발생할 수 있지만 xmodmap그러한 뉘앙스에 의존하는 사람들은 기본이 작동하는 레이아웃에서 손으로 만든 키맵을 복원하는 방법을 알게 될 것입니다.
  • 다중 레벨(예: 다중 언어) 구성에서 현재 활성 레벨이 올바르게 복원되는지 확실하지 않지만, 레이아웃을 자주 전환하는 사람들은 레이아웃을 전환하는 일반적인 방법을 사용하게 됩니다.
  • 이는 레벨을 변경하는 대신 XKB 레이아웃을 변경하는 백그라운드 응용 프로그램에서 제공하는 레이아웃 전환을 심각하게 방해할 수 있습니다. 이 경우 레이아웃을 변경하여 Dvorak으로 전환하도록 요청해야 합니다.

답변2

설정 .profile이나 이와 유사한

(1) X가 실행 중인지 테스트합니다( $DISPLAY).

(2) 현재 키보드 매핑을 파일에 저장합니다( setxkbmap -printXKB의 경우 또는 modmap -pkeX의 경우 dumpkeys콘솔의 경우).

(3) 키보드 매핑을 설정합니다.

(4) 쉘이 종료될 때 이전 키보드 매핑을 복원합니다. 예를 참조하세요.여기.

이것은 여러 터미널에서는 작동하지 않습니다. 첫 번째 터미널이 쉘을 시작할 때와 마지막 터미널이 종료할 때를 결정하려면 일부 "잠금" 파일을 사용해야 합니다.

답변3

하드웨어 중심 솔루션이 있는지 궁금합니다. 지정된 키보드(여러 키보드가 있음)에만 영향을 미치고 핵심 X11 장치에는 영향을 주지 않는 옵션을 setxkbmap사용합니다 .-device

따라서 실제 Dvořák 키보드를 가지고 있고 원래 키보드를 유지하면서 키보드를 연결했다면 setxkbmap키보드를 분리해도 문제가 되지 않는 프로그램을 실행할 수 있을 것입니다. xinput -list각 장치의 ID를 가져오는 데 사용됩니다 . (꼭 그럴 필요는 없다.진짜드보락 키보드, 또 다른 키보드입니다. ) 한 가지 장점은 두 사람이 각자 자신의 키보드에 입력할 수 있고 매핑 충돌이 없다는 것입니다.

단일 키보드를 사용해 볼 수 있습니다. 기본 코어 대신 해당 키보드의 ID를 명시적으로 사용하는 경우 키보드를 뽑았다가 다시 연결할 때 구성 변경 사항이 손실됩니까?

관련 정보