这是我的相应部分config.h
:
/* Internal keyboard shortcuts. */
#define MODKEY Mod1Mask
#define TERMMOD (ControlMask|ShiftMask)
static Shortcut shortcuts[] = {
/* mask keysym function argument */
{ XK_ANY_MOD, XK_Break, sendbreak, {.i = 0} },
{ ControlMask, XK_Print, toggleprinter, {.i = 0} },
{ ShiftMask, XK_Print, printscreen, {.i = 0} },
{ XK_ANY_MOD, XK_Print, printsel, {.i = 0} },
{ TERMMOD, XK_Prior, zoom, {.f = +1} },
{ TERMMOD, XK_Next, zoom, {.f = -1} },
{ TERMMOD, XK_Home, zoomreset, {.f = 0} },
{ TERMMOD, XK_C, clipcopy, {.i = 0} },
{ TERMMOD, XK_V, clippaste, {.i = 0} },
{ TERMMOD, XK_Y, selpaste, {.i = 0} },
{ TERMMOD, XK_Num_Lock, numlock, {.i = 0} },
};
现在,专栏的目的是什么argument
?
第四列中参数的地址被传递给第三列中列出的函数。例如,请注意
zoom()
函数如何在不同快捷方式的不同参数下列出两次。构成问题中数组的
Shortcut
数据类型shortcuts[]
定义x.c
为四个成员的结构:Shortcut
, ,的最后一个成员Arg
被定义st.h
为四个的并集:使用结构中联合成员的地址调用
func
from的示例发生在from ,其中指向 a :Shortcut
keypress()
x.c
bp
Shortcut
可以在使用联合
zoom()
中的浮点数的地方看到利用此设置的具体示例。Arg
从您问题中的配置来看,arg->f
在此功能中可以+1
或-1
增大或缩小字体大小: