From 0f08a5619f7ea668d29c0d2f2bf32d139764dd31 Mon Sep 17 00:00:00 2001 From: Carl Kittelberger Date: Wed, 15 Jun 2022 18:38:25 +0200 Subject: [PATCH] Implement keyboard fixes. --- home/dotfiles/zkbd/xterm-256color-ssh | 26 ++++++++++++++++++++++++++ home/dotfiles/zshrc | 22 ++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 home/dotfiles/zkbd/xterm-256color-ssh diff --git a/home/dotfiles/zkbd/xterm-256color-ssh b/home/dotfiles/zkbd/xterm-256color-ssh new file mode 100644 index 0000000..d583fee --- /dev/null +++ b/home/dotfiles/zkbd/xterm-256color-ssh @@ -0,0 +1,26 @@ +typeset -g -A key + +key[F1]='^[OP' +key[F2]='^[OQ' +key[F3]='^[OR' +key[F4]='^[OS' +key[F5]='^[[15~' +key[F6]='^[[17~' +key[F7]='^[[18~' +key[F8]='^[[19~' +key[F9]='^[[20~' +key[F10]='''' +key[F11]='^[[23~' +key[F12]='^[[24~' +key[Backspace]='^?' +key[Insert]='^[[2~' +key[Home]='^[[H' +key[PageUp]='^[[5~' +key[Delete]='^[[3~' +key[End]='^[[F' +key[PageDown]='^[[6~' +key[Up]='^[[A' +key[Left]='^[[D' +key[Down]='^[[B' +key[Right]='^[[C' +key[Menu]='''' diff --git a/home/dotfiles/zshrc b/home/dotfiles/zshrc index 259040c..f70074e 100644 --- a/home/dotfiles/zshrc +++ b/home/dotfiles/zshrc @@ -22,6 +22,7 @@ ZSH_DEFAULT_TERM=${ZSH_DEFAULT_TERM:-1} ZSH_GCLOUD_FIXES=${ZSH_GCLOUD_FIXES:=$(when_binary_available gcloud)} ZSH_GPG_PINENTRY_FIX=${ZSH_GPG_PINENTRY_FIX:-1} ZSH_GPG_SSH_AGENT=${ZSH_GPG_SSH_AGENT:-$(has_binary gpgconf && [ -z "${SSH_AUTH_SOCK:-}" ] && [ -f $(gpgconf --list-dirs agent-ssh-socket) ] && printf 1 || printf 0)} +ZSH_KEYBOARD=${ZSH_KEYBOARD:-1} ZSH_LOGO_LS=${ZSH_LOGO_LS:-$(when_binary_available logo-ls)} ZSH_OPAM=${ZSH_OPAM:-$(when_binary_available opam)} ZSH_PIPX=${ZSH_PIPX:-$(when_binary_available pipx)} @@ -265,6 +266,27 @@ if [ $ZSH_ROOT_ALIAS -gt 0 ]; then fi section_end +# keyboard fixes +section "keyboard fixes" +if [ $ZSH_KEYBOARD -gt 0 ]; then + if [ -z "$SSH_CONNECTION" ]; then + keyboard_profile="$TERM-${${DISPLAY:t}:-$VENDOR-$OSTYPE}" + else + keyboard_profile="$TERM-ssh" + fi + if [ -f ~/.zkbd/"$keyboard_profile" ] + then + log "Loading keyboard profile: $HOME/.zkbd/$keyboard_profile" + . ~/.zkbd/"$keyboard_profile" + fi + + # common assignments + bindkey "${key[Delete]}" delete-char + bindkey "${key[Home]}" beginning-of-line + bindkey "${key[End]}" end-of-line +fi +section_end + # Reboot required? (hacky code) section "reboot required?" if [ $ZSH_PRINT_REBOOT_REQUIRED -gt 0 ]; then