diff --git a/bash/.bash_functions b/bash/.bash_functions index e70a49d..f2503eb 100644 --- a/bash/.bash_functions +++ b/bash/.bash_functions @@ -43,6 +43,18 @@ vifmmv() { cd "$dst" } +# Keyboard layout switching ========================================= +sww() { + if ! [[ -x ~/.configs_pointer/bin/switch_keyboards.sh ]]; then + echo 'No switch_keyboard.sh script found in ~.configs_pointer/bin' + exit 1 + else + ~/.configs_pointer/bin/switch_keyboards.sh "$@" + fi +} + +complete -W "console mac pc standard fn small mini" sww + # Open command source code ========================================== # Only works for scripts and rust executables _viw_completions() { diff --git a/bin/switch_keyboards.sh b/bin/switch_keyboards.sh index b4b0272..6f8c0dd 100755 --- a/bin/switch_keyboards.sh +++ b/bin/switch_keyboards.sh @@ -5,6 +5,7 @@ # console Loads the console version # mac Loads the Mac keyboard version # pc Loads the standard keyboard version +# fn Loads the version for a standard keyboard without an fn row # # Explanation ========= # Mac keyboards place their super key adjacent to the spacebar, while standard @@ -32,6 +33,7 @@ USAGE: $(basename "$0") ARGS: mac Remaps assuming super is adjacent to the spacebar pc Remaps assuming alt is adjacent to the spacebar + fn Remaps assuming pc + no fn row console Only remaps capslock to ctrl help Print this message and exit HELP @@ -51,10 +53,14 @@ case "$(echo "$1" | awk '{print tolower($0)}')" in ln -sf ~/.config/xremap/config_mac.yml ~/.config/xremap/config.yml echo "Switching to mac layout :: ALT | SUPER | SPACE" ;; - pc) + pc | standard) ln -sf ~/.config/xremap/config_standard.yml ~/.config/xremap/config.yml echo "Switching to standard layout :: SUPER | ALT | SPACE" ;; + fn | small | mini) + ln -sf ~/.config/xremap/config_no_fn.yml ~/.config/xremap/config.yml + echo "Switching to no-fn row standard layout :: SUPER | ALT | SPACE" + ;; *) if [[ -n "$1" ]]; then print_help diff --git a/xremap/config_mac.yml b/xremap/config_mac.yml index 285a165..c36ce6c 100644 --- a/xremap/config_mac.yml +++ b/xremap/config_mac.yml @@ -3,6 +3,9 @@ modmap: - name: Better-ctrl remap: KEY_CAPSLOCK: Control_l + - name: Closer-Esc + remap: + Control_l: KEY_ESC keymap: - name: disable-sleep diff --git a/xremap/config_no_fn.yml b/xremap/config_no_fn.yml new file mode 100644 index 0000000..a400e04 --- /dev/null +++ b/xremap/config_no_fn.yml @@ -0,0 +1,82 @@ +# Standard keyboard with alt key adjacent to spacebar and no fn row at the top. +# Retains ` and ~ in the top left, while moving esc to the bottom left key +modmap: + - name: Better-ctrl + remap: + KEY_CAPSLOCK: Control_l + - name: Mac-Command + remap: + Alt_l: Super_l + Super_l: Alt_l + Alt_r: Super_r + Super_r: Alt_r + - name: No-fn-esc + remap: + Control_l: KEY_ESC + KEY_ESC: Grave # Difference from standard/pc config + +keymap: + - name: disable-sleep + remap: + sleep: l + - name: Emacs-ish + application: + not: [Alacritty, zathura, org.pwmt.zathura, vimiv] + remap: + C-j: left + C-f: right + C-p: up + C-n: down + + C-b: C-left + C-w: C-right + + C-a: home + C-e: end + + C-u: { with_mark: Shift-C-Left } + + C-h: [backspace, { set_mark: false}] + C-d: [delete, { set_mark: false}] + + # bracketleft, according to wev + C-leftbrace: esc + #C-space: { set_mark: true } + + - name: Mac-Compatiblity + application: + not: [Alacritty] + remap: + Super_l-a: C-a + + - name: Browsers + # Similar-ish to MacOS. We bind to Alt instead of Super, since Ctrl is + # already used by the emacs bindings. Alt and Super are switched for PC + # keyboards to mimic MacOS + application: + only: [chromium, google-chrome, firefox] + remap: + Alt_l-w: Control_r-w + Alt_l-n: C-n + # For searchbar focusing. L/R to prevent recursion + Control_l-l: Alt_r-l + Alt_l-l: Control_r-l + # Find-in-page + Alt_l-f: Control_r-f + # Extended emacs for discord and online editors + C-k: Shift-end + # Stop getting stuck in tabs without vimium + Alt_l-j: Control_r-Shift-Tab + Alt_l-k: Control_r-Tab + # Prevent 12am discord calls + Ctrl-apostrophe: Apostrophe + - name: Chromium + application: + only: [chromium, google-chrome] + remap: + Alt_l-Shift-n: C-Shift-n + - name: Firefox + application: + only: [firefox] + remap: + Alt_l-Shift-n: C-Shift-p diff --git a/xremap/config_standard.yml b/xremap/config_standard.yml index d8210ef..78f44d0 100644 --- a/xremap/config_standard.yml +++ b/xremap/config_standard.yml @@ -9,6 +9,9 @@ modmap: Super_l: Alt_l Alt_r: Super_r Super_r: Alt_r + - name: Closer-Esc + remap: + Control_l: KEY_ESC keymap: - name: disable-sleep