내 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 키)을 더 이상 사용할 수 없습니다.
기본 스키마의 모든 bindsym
s 및 s를 다른 스키마로 복사하고 싶지 않습니다 . 이로 인해 유지 관리 가 불가능해집니다1 . 기본 모드에서 다른 모드로 키 바인딩을 "상속"할 수 있는 방법이 있나요?bindcode
1: 음, Skype 모드의 하드코딩된 픽셀 값은 이미예엉망이었지만 더 이상 악화되고 싶지 않았습니다. ;)
답변1
분명히 이 작업을 수행하는 "일반적인" i3 방법은 없습니다.i3bang이라는 작은 전처리기이를 통해 이 목표를 달성할 수 있습니다.
간단히
i3bang을 다운로드하고 설정하세요.
다음과 같이 기본 모드에서 모든 키 바인딩을 래핑합니다.
!@<+default_keybindings bindsym ... >
이제 기본 키 바인딩을 유지하려는 패턴 끝에 이 섹션에 대한 참조를 포함합니다.
mode "skype" { bindsym $mod+!!1..9,0 exec xdotool mousemove 90 !<70+40*!!<0..9>>; \ exec xdotool click 1 ... !@default_keybindings }
i3(다소 직관적이지 않음)은첫 번째동일한 키를 사용하는 바인딩이 여러 개 있고 키에 대한 바인딩이 발생하는 경우 참조를 default_keybindings에 넣습니다.마지막즉, 새 모드에서 충돌하는 키 바인딩이 기본값을 재정의한다는 의미입니다.
전체 공개: 충분히 명확하지 않다면 이것은 나만의 도구입니다.