CCCPaste

Arrow Keys in BASH

#!/bin/bash
###################################################################### 
#Copyright (C) 2022  Kris Occhipinti
#https://filmsbykris.com

#This program is free software: you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation version 3 of the License.

#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#GNU General Public License for more details.

#You should have received a copy of the GNU General Public License
#along with this program.  If not, see .
###################################################################### 

#create a variable that holds an escape character
char=$(printf "\u1b")
while [ 1 ]
do
  read -rsn1 key;
  [[ $key == "q" ]] && exit

  if [[ $key == $char ]]
  then
    read -rsn2 key
    [[ $key == "[A" ]] && echo "Up"
    [[ $key == "[B" ]] && echo "Down"
    [[ $key == "[C" ]] && echo "Right"
    [[ $key == "[D" ]] && echo "Left"
  fi
done

# to find the value of other keys
#while [ 1 ]; do read -rsn1 key;[[ $key == $char ]] && read -rsn2 key;printf %q "$key";done