L_control을 xkb의 다른 항목에 다시 매핑하지 않는 한 L_shift를 L_control로 다시 매핑할 수 없습니다.

L_control을 xkb의 다른 항목에 다시 매핑하지 않는 한 L_shift를 L_control로 다시 매핑할 수 없습니다.

Caps Lock을 Shift로, Shift Left를 Control로 다시 매핑하고 싶지만 현재 왼쪽 컨트롤을 변경하지 않고 그대로 유지하고 컨트롤로도 작동하고 싶습니다.

이 질문 에서 제안한대로 setxkbmap을 사용하여 왼쪽 Shift와 왼쪽 Control 교체

이 스크립트를 작성하기 위해 xkb를 사용했습니다.

partial modifier_keys
xkb_symbols "my_key_remap" {
    replace key <LFSH> { [ Control_L ] };
    replace key <CAPS>  { [ Shift_L ] };
};

이 방법은 작동하지만 새로운 교대근무 제어가 작동하지 않는 것 같습니다. 을 사용하여 테스트했을 때 xev왼쪽 시프트가 컨트롤에 매핑된 것을 발견했습니다. 그러나 일반 컨트롤을 누르면 xev가 한 번 응답한 다음 키 누르기를 기다립니다. 그러나 새로운 Shift 컨트롤을 사용하면 왼쪽 컨트롤로 표시되지만(여전히 키코드 50임에도 불구하고) 키 이벤트가 일반 컨트롤 키처럼 한 번만 발생하는 대신 여러 번 발생합니다.

그러나 Shift-Control이 유일한 왼쪽 컨트롤인 새 행을 추가하면 replace key <LCTL> { [ Shift_L ] };(원래 컨트롤 키 제거) 예상대로 작동하고 xev는 키를 누르고 있어도 단일 키 이벤트만 발생한다고 보고합니다.

어떤 아이디어가 있나요?

관련 정보