为什么在 ncurses 函数和参数中 y 在 x 之前?

Why is y before x in ncurses functions and arguments?

我注意到对于大多数 ncurses 函数,无论是在函数名还是函数参数中,y 都在 x 之前(getmaxyx()、getparyx()、getyx() 等),但几乎所有地方都恰恰相反别的。一般的编程语言和数学。

这是为什么?

匹配terminal description capability移动光标的顺序:

   cursor_address            cup    cm   move to row #1 col-
                                         umns #2

对于支持游标地址的终端,原则上您可以使用 row,col 或 col,row 以及其他变体,例如使用 1-based set of coordinates:

   %i   add 1 to first two parameters (for ANSI terminals)

一个 ANSI 终端使用 row,col 排序,如在许多终端中使用的这个 fragment 所示:

ansi+cup,
        cup=\E[%i%p1%d;%p2%dH, home=\E[H,

cup是一个转义符,后面跟着[和行列值(p1p2) 由 ; 分隔并由 H.

终止

为什么为标准选择特定的顺序是模糊的(大约 40 年前),但它肯定对编写使用这些转义序列的库有影响。

进一步阅读: