设置快捷键

This commit is contained in:
2025-11-22 22:22:54 +08:00
parent 76f9e15130
commit edda316709
9 changed files with 92 additions and 6 deletions

View File

@@ -1,7 +1,11 @@
#include "xwindow.h"
#include <xcb/xcb.h>
#include <xcb/xcb_aux.h>
#include <xcb/xcb_keysyms.h>
#include <xcb/xproto.h>
#include "action.h"
#include "utils.h"
#include "wm.h"
#include "xcursor.h"
@@ -105,3 +109,20 @@ void xwindow_change_cursor(xcb_window_t window, cursor_t cursor) {
xcb_params_cw_t params = {.cursor = xcursor_get_xcb_cursor(cursor)};
xcb_aux_change_window_attributes(wm.xcb_conn, window, XCB_CW_CURSOR, &params);
}
void xwindow_grab_keys(xcb_window_t window, const keyboard_t *keys,
int keys_length) {
xcb_connection_t *conn = wm.xcb_conn;
xcb_ungrab_key(conn, XCB_GRAB_ANY, window, modifier_any);
xcb_grab_mode_t mode = XCB_GRAB_MODE_ASYNC;
xcb_keycode_t *keycode = nullptr;
for (int i = 0; i < keys_length; i++) {
keycode = xcb_key_symbols_get_keycode(wm.key_symbols, keys[i].keysym);
if (keycode) {
xcb_grab_key(conn, true, window, keys[i].modifiers, *keycode, mode, mode);
p_delete(&keycode);
}
}
}