画面のxy座標から文字を読む

画面のxy座標から文字を読む

bashで画面のxy座標から文字を読み取る方法はありますか?このコマンドは次のようになります。

cget 12 30

これにより、12行、30列の文字が返されます。

答え1

テキストモードでコンソールttyを使用している場合(/dev/tty1経由/dev/tty7)、そのデバイスから直接画面バッファを読み取ることができます/dev/vcsN

実際には1行に80文字があると仮定してはいけないので、端末に各行の文字を表示するように依頼する必要があります。次に、(x、y)座標をオフセット(y * c + x)に変換する簡単な数学を使用して、目的の文字を取得できます。

#!/bin/bash
#
my_tty=$(tty)
vcs_nr="${my_tty/*tty/}"

# Read Y, X from first two characters of /dev/vcsaN (we only use X)
xwidth=$(
    dd if="/dev/vcsa$vcs_nr" bs=1c count=2 2>/dev/null |
    od -t u1 -A d |
    awk '{print $3; exit}'
)

# Calculate byte offset into the screen
offset=$(( ($2 -1) * xwidth + ($1 -1) ))

# Read the data
dd count=1 skip="$offset" bs=1 if="/dev/vcs$vcs_nr" 2>/dev/null

もちろん、これは/ dev / vcsNデバイスへのルートアクセスを想定しています。

関連情報