wlmaker
Loading...
Searching...
No Matches
Classes | Macros | Functions | Variables
keyboard.c File Reference
#include "keyboard.h"
#include <ctype.h>
#include <ini.h>
#include <libbase/libbase.h>
#include <libbase/plist.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <wayland-server-core.h>
#include <wayland-server-protocol.h>
#include <wayland-util.h>
#include <wlr/types/wlr_keyboard.h>
#include <wlr/types/wlr_seat.h>
#include <xkbcommon/xkbcommon.h>
#include "toolkit/toolkit.h"
Include dependency graph for keyboard.c:

Classes

struct  _wlmim_keyboard_t
 

Functions

static bspl_dict_t * _wlmim_keyboard_populate_rules (bspl_dict_t *dict_ptr, struct xkb_rule_names *rules_ptr)
 
static bool _wlmim_keyboard_populate_repeat (bspl_dict_t *dict_ptr, int32_t *rate_ptr, int32_t *delay_ptr)
 
static int _wlmim_keyboard_config_ini_handler (void *user_ptr, const char *section_ptr, const char *name_ptr, const char *value_ptr)
 
static void handle_key (struct wl_listener *listener_ptr, void *data_ptr)
 
static void handle_modifiers (struct wl_listener *listener_ptr, void *data_ptr)
 
wlmim_keyboard_twlmim_keyboard_create (wlmim_t *input_manager_ptr, bspl_dict_t *wlmaker_config_dict_ptr, struct wlr_keyboard *wlr_keyboard_ptr, struct wlr_seat *wlr_seat_ptr, wlmtk_element_t *root_element_ptr)
 
void wlmim_keyboard_destroy (wlmim_keyboard_t *keyboard_ptr)
 
static void _wlmim_keyboard_test_rmlvo (bs_test_t *test_ptr)
 
static void _wlmim_keyboard_test_keyboard_file (bs_test_t *test_ptr)
 

Variables

static const bs_test_case_t wlmim_keyboard_test_cases []
 
const bs_test_set_t wlmim_keyboard_test_set
 

Detailed Description

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Function Documentation

◆ _wlmim_keyboard_config_ini_handler()

int _wlmim_keyboard_config_ini_handler ( void *  user_ptr,
const char *  section_ptr,
const char *  name_ptr,
const char *  value_ptr 
)
static

inih parser callback. Fills XKB config file values into the dict.

Parameters
user_ptrPoints to a bspl_dict_t.
section_ptr
name_ptr
value_ptr
Returns
0 on success.

◆ _wlmim_keyboard_populate_repeat()

bool _wlmim_keyboard_populate_repeat ( bspl_dict_t *  dict_ptr,
int32_t *  rate_ptr,
int32_t *  delay_ptr 
)
static

Retrieves and converts the 'Repeat' parameters from the config dict.

Parameters
dict_ptr
rate_ptr
delay_ptr
Returns
true on success.

◆ _wlmim_keyboard_populate_rules()

bspl_dict_t * _wlmim_keyboard_populate_rules ( bspl_dict_t *  dict_ptr,
struct xkb_rule_names *  rules_ptr 
)
static

Populates the XKB rules struct from the config dict.

Parameters
dict_ptr
rules_ptr
Returns
A referenced bspl_dict_t holding rules details, or NULL on error.

◆ _wlmim_keyboard_test_keyboard_file()

void _wlmim_keyboard_test_keyboard_file ( bs_test_t *  test_ptr)
static

Tests keyboard rules are loaded from XKB configuration file.

◆ _wlmim_keyboard_test_rmlvo()

void _wlmim_keyboard_test_rmlvo ( bs_test_t *  test_ptr)
static

Tests keyboard rules are loaded from a given RMLVO dict.

◆ handle_key()

void handle_key ( struct wl_listener *  listener_ptr,
void *  data_ptr 
)
static

Handles key signals, ie. key presses.

Parameters
listener_ptr
data_ptrPoints to a wlr_keyboard_key_event.

◆ handle_modifiers()

void handle_modifiers ( struct wl_listener *  listener_ptr,
void *  data_ptr 
)
static

Handles modifiers signals, ie. updates to the modifiers.

Parameters
listener_ptr
data_ptrPoints to wlr_keyboard.

◆ wlmim_keyboard_create()

wlmim_keyboard_t * wlmim_keyboard_create ( wlmim_t input_manager_ptr,
bspl_dict_t *  wlmaker_config_dict_ptr,
struct wlr_keyboard *  wlr_keyboard_ptr,
struct wlr_seat *  wlr_seat_ptr,
wlmtk_element_t root_element_ptr 
)

Creates a handle for a registered keyboard.

Parameters
input_manager_ptr
wlmaker_config_dict_ptr
wlr_keyboard_ptr
wlr_seat_ptr
root_element_ptr
Returns
The handle or NULL on error. Free via wlmim_keyboard_destroy().

◆ wlmim_keyboard_destroy()

void wlmim_keyboard_destroy ( wlmim_keyboard_t keyboard_ptr)

Destroys the keyboard handle.

Parameters
keyboard_ptr

Variable Documentation

◆ wlmim_keyboard_test_cases

const bs_test_case_t wlmim_keyboard_test_cases[]
static
Initial value:
= {
{ true, "rmlvo", _wlmim_keyboard_test_rmlvo },
{ true, "keyboard_file", _wlmim_keyboard_test_keyboard_file },
}
static void _wlmim_keyboard_test_rmlvo(bs_test_t *test_ptr)
Definition keyboard.c:476
static void _wlmim_keyboard_test_keyboard_file(bs_test_t *test_ptr)
Definition keyboard.c:497

Unit test cases.

◆ wlmim_keyboard_test_set

const bs_test_set_t wlmim_keyboard_test_set
Initial value:
= BS_TEST_SET(
true, "keyboard", wlmim_keyboard_test_cases)
static const bs_test_case_t wlmim_keyboard_test_cases[]
Definition keyboard.c:465

Unit test set for wlmim_keyboard_t.