새 모드에서 기본 모드 키 바인딩을 유지하는 방법은 무엇입니까?

새 모드에서 기본 모드 키 바인딩을 유지하는 방법은 무엇입니까?

내 i3 구성에는 특정 작업에 대한 몇 가지 키 바인딩만 포함된 여러 가지 "더 작은" 모드가 있습니다. 예를 들어 Skype 모드:

mode "skype" {
        bindsym $mod+1 exec xdotool mousemove 90 70; exec xdotool click 1
        bindsym $mod+2 exec xdotool mousemove 90 110; exec xdotool click 1
        bindsym $mod+3 exec xdotool mousemove 90 150; exec xdotool click 1
        bindsym $mod+4 exec xdotool mousemove 90 190; exec xdotool click 1
        bindsym $mod+5 exec xdotool mousemove 90 230; exec xdotool click 1
        bindsym $mod+6 exec xdotool mousemove 90 270; exec xdotool click 1
        bindsym $mod+7 exec xdotool mousemove 90 310; exec xdotool click 1
        bindsym $mod+8 exec xdotool mousemove 90 350; exec xdotool click 1
        bindsym $mod+9 exec xdotool mousemove 90 390; exec xdotool click 1
        bindsym $mod+0 exec xdotool mousemove 90 430; exec xdotool click 1

        ...
}

작업 공간 대신 ​​Skype 채팅을 전환하려면 Alt+숫자를 변경합니다.

그러나 Skype 모드에서는 .i3/config에 설정된 다른 키 바인딩(예: Alt+hjkl, dmenu, 특히 밝기, 볼륨 및 PrtSc 키)을 더 이상 사용할 수 없습니다.

기본 스키마의 모든 bindsyms 및 s를 다른 스키마로 복사하고 싶지 않습니다 . 이로 인해 유지 관리 가 불가능해집니다1 . 기본 모드에서 다른 모드로 키 바인딩을 "상속"할 수 있는 방법이 있나요?bindcode

1: 음, Skype 모드의 하드코딩된 픽셀 값은 이미엉망이었지만 더 이상 악화되고 싶지 않았습니다. ;)

답변1

분명히 이 작업을 수행하는 "일반적인" i3 방법은 없습니다.i3bang이라는 작은 전처리기이를 통해 이 목표를 달성할 수 있습니다.

간단히

  1. i3bang을 다운로드하고 설정하세요.

  2. 다음과 같이 기본 모드에서 모든 키 바인딩을 래핑합니다.

    !@<+default_keybindings
    bindsym ...
    >
    
  3. 이제 기본 키 바인딩을 유지하려는 패턴 끝에 이 섹션에 대한 참조를 포함합니다.

    mode "skype" {
            bindsym $mod+!!1..9,0 exec xdotool mousemove 90 !<70+40*!!<0..9>>; \
                                  exec xdotool click 1
            ...
            !@default_keybindings
    }
    

    i3(다소 직관적이지 않음)은첫 번째동일한 키를 사용하는 바인딩이 여러 개 있고 키에 대한 바인딩이 발생하는 경우 참조를 default_keybindings에 넣습니다.마지막즉, 새 모드에서 충돌하는 키 바인딩이 기본값을 재정의한다는 의미입니다.

전체 공개: 충분히 명확하지 않다면 이것은 나만의 도구입니다.

관련 정보