Merge pull request #47 from sixels/input_config

Add more input configurations
This commit is contained in:
vaxerski 2022-04-19 19:33:13 +02:00 committed by GitHub
commit b8d88cff79
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 26 additions and 2 deletions

View file

@ -55,6 +55,9 @@ void CConfigManager::setDefaultVars() {
configValues["input:kb_options"].strValue = ""; configValues["input:kb_options"].strValue = "";
configValues["input:kb_rules"].strValue = ""; configValues["input:kb_rules"].strValue = "";
configValues["input:kb_model"].strValue = ""; configValues["input:kb_model"].strValue = "";
configValues["input:repeat_rate"].intValue = 25;
configValues["input:repeat_delay"].intValue = 600;
configValues["input:touchpad:disable_while_typing"].intValue = 1;
configValues["input:follow_mouse"].intValue = 1; configValues["input:follow_mouse"].intValue = 1;
@ -260,7 +263,14 @@ void CConfigManager::parseLine(std::string& line) {
if (line.find(" {") != std::string::npos) { if (line.find(" {") != std::string::npos) {
auto cat = line.substr(0, line.find(" {")); auto cat = line.substr(0, line.find(" {"));
transform(cat.begin(), cat.end(), cat.begin(), ::tolower); transform(cat.begin(), cat.end(), cat.begin(), ::tolower);
currentCategory = cat; if (currentCategory.length() != 0) {
currentCategory.push_back(':');
currentCategory.append(cat);
}
else {
currentCategory = cat;
}
return; return;
} }

View file

@ -19,6 +19,12 @@ input {
kb_model= kb_model=
kb_options= kb_options=
kb_rules= kb_rules=
repeat_rate=
repeat_delay=
touchpad {
disable_while_typing=
}
} }
general { general {

View file

@ -206,10 +206,13 @@ void CInputManager::newKeyboard(wlr_input_device* keyboard) {
const auto CONTEXT = xkb_context_new(XKB_CONTEXT_NO_FLAGS); const auto CONTEXT = xkb_context_new(XKB_CONTEXT_NO_FLAGS);
const auto KEYMAP = xkb_keymap_new_from_names(CONTEXT, &rules, XKB_KEYMAP_COMPILE_NO_FLAGS); const auto KEYMAP = xkb_keymap_new_from_names(CONTEXT, &rules, XKB_KEYMAP_COMPILE_NO_FLAGS);
const auto REPEATRATE = g_pConfigManager->getInt("input:repeat_rate");
const auto REPEATDELAY = g_pConfigManager->getInt("input:repeat_delay");
wlr_keyboard_set_keymap(keyboard->keyboard, KEYMAP); wlr_keyboard_set_keymap(keyboard->keyboard, KEYMAP);
xkb_keymap_unref(KEYMAP); xkb_keymap_unref(KEYMAP);
xkb_context_unref(CONTEXT); xkb_context_unref(CONTEXT);
wlr_keyboard_set_repeat_info(keyboard->keyboard, 25, 600); wlr_keyboard_set_repeat_info(keyboard->keyboard, std::max(0, REPEATRATE), std::max(0, REPEATDELAY));
PNEWKEYBOARD->hyprListener_keyboardMod.initCallback(&keyboard->keyboard->events.modifiers, &Events::listener_keyboardMod, PNEWKEYBOARD, "Keyboard"); PNEWKEYBOARD->hyprListener_keyboardMod.initCallback(&keyboard->keyboard->events.modifiers, &Events::listener_keyboardMod, PNEWKEYBOARD, "Keyboard");
PNEWKEYBOARD->hyprListener_keyboardKey.initCallback(&keyboard->keyboard->events.key, &Events::listener_keyboardKey, PNEWKEYBOARD, "Keyboard"); PNEWKEYBOARD->hyprListener_keyboardKey.initCallback(&keyboard->keyboard->events.key, &Events::listener_keyboardKey, PNEWKEYBOARD, "Keyboard");
@ -271,6 +274,11 @@ void CInputManager::newMouse(wlr_input_device* mouse) {
if (libinput_device_config_scroll_has_natural_scroll(LIBINPUTDEV)) if (libinput_device_config_scroll_has_natural_scroll(LIBINPUTDEV))
libinput_device_config_scroll_set_natural_scroll_enabled(LIBINPUTDEV, 0 /* Natural */); libinput_device_config_scroll_set_natural_scroll_enabled(LIBINPUTDEV, 0 /* Natural */);
if (libinput_device_config_dwt_is_available(LIBINPUTDEV)) {
const auto DWT = static_cast<enum libinput_config_dwt_state>(g_pConfigManager->getInt("input:touchpad:disable_while_typing") != 0);
libinput_device_config_dwt_set_enabled(LIBINPUTDEV, DWT);
}
} }
wlr_cursor_attach_input_device(g_pCompositor->m_sWLRCursor, mouse); wlr_cursor_attach_input_device(g_pCompositor->m_sWLRCursor, mouse);