kla*_*aus 6 keyboard-shortcuts
这是我的相应部分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} },
};
Run Code Online (Sandbox Code Playgroud)
现在,该专栏的目的是什么argument?
小智 4
第四列中的参数地址被传递给第三列中列出的函数。例如,请注意该zoom()函数如何在不同快捷方式的不同参数下列出两次。
Shortcut构成问题中数组的数据类型定义shortcuts[]为由x.c四个成员组成的结构:
typedef struct {
uint mod;
KeySym keysym;
void (*func)(const Arg *);
const Arg arg;
} Shortcut;
Run Code Online (Sandbox Code Playgroud)
Shortcut, ,的最后一个成员Arg被定义为st.h四个的并集:
typedef union {
int i;
uint ui;
float f;
const void *v;
} Arg;
Run Code Online (Sandbox Code Playgroud)
使用结构中联合成员的地址调用funcfrom的示例发生在from中,其中指向 a :Shortcutkeypress()x.cbpShortcut
if (ksym == bp->keysym && match(bp->mod, e->state)) {
bp->func(&(bp->arg));
...
Run Code Online (Sandbox Code Playgroud)
利用此设置的具体示例可以在联合中使用zoom()浮动的地方看到。Arg根据您问题中的配置,arg->f在此功能中可以+1或-1来增大或缩小字体大小:
void
zoom(const Arg *arg)
{
Arg larg;
larg.f = usedfontsize + arg->f;
zoomabs(&larg);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3815 次 |
| 最近记录: |