Changeset View
Changeset View
Standalone View
Standalone View
keyboard_input.cpp
Show First 20 Lines • Show All 383 Lines • ▼ Show 20 Line(s) | 383 | waylandServer()->seat()->updateKeyboardModifiers(xkb_state_serialize_mods(m_state, xkb_state_component(XKB_STATE_MODS_DEPRESSED)), | |||
---|---|---|---|---|---|
384 | xkb_state_serialize_mods(m_state, xkb_state_component(XKB_STATE_MODS_LATCHED)), | 384 | xkb_state_serialize_mods(m_state, xkb_state_component(XKB_STATE_MODS_LATCHED)), | ||
385 | xkb_state_serialize_mods(m_state, xkb_state_component(XKB_STATE_MODS_LOCKED)), | 385 | xkb_state_serialize_mods(m_state, xkb_state_component(XKB_STATE_MODS_LOCKED)), | ||
386 | layout); | 386 | layout); | ||
387 | } | 387 | } | ||
388 | } | 388 | } | ||
389 | 389 | | |||
390 | QString Xkb::layoutName() const | 390 | QString Xkb::layoutName() const | ||
391 | { | 391 | { | ||
392 | return QString::fromLocal8Bit(xkb_keymap_layout_get_name(m_keymap, m_currentLayout)); | 392 | return layoutName(m_currentLayout); | ||
393 | } | ||||
394 | | ||||
395 | QString Xkb::layoutName(xkb_layout_index_t layout) const | ||||
396 | { | ||||
397 | return QString::fromLocal8Bit(xkb_keymap_layout_get_name(m_keymap, layout)); | ||||
398 | } | ||||
399 | | ||||
400 | QMap<xkb_layout_index_t, QString> Xkb::layoutNames() const | ||||
401 | { | ||||
402 | QMap<xkb_layout_index_t, QString> layouts; | ||||
403 | const auto size = xkb_keymap_num_layouts(m_keymap); | ||||
404 | for (xkb_layout_index_t i = 0; i < size; i++) { | ||||
405 | layouts.insert(i, layoutName(i)); | ||||
406 | } | ||||
407 | return layouts; | ||||
393 | } | 408 | } | ||
394 | 409 | | |||
395 | void Xkb::updateConsumedModifiers(uint32_t key) | 410 | void Xkb::updateConsumedModifiers(uint32_t key) | ||
396 | { | 411 | { | ||
397 | Qt::KeyboardModifiers mods = Qt::NoModifier; | 412 | Qt::KeyboardModifiers mods = Qt::NoModifier; | ||
398 | if (xkb_state_mod_index_is_consumed2(m_state, key + 8, m_shiftModifier, XKB_CONSUMED_MODE_GTK) == 1) { | 413 | if (xkb_state_mod_index_is_consumed2(m_state, key + 8, m_shiftModifier, XKB_CONSUMED_MODE_GTK) == 1) { | ||
399 | mods |= Qt::ShiftModifier; | 414 | mods |= Qt::ShiftModifier; | ||
400 | } | 415 | } | ||
▲ Show 20 Lines • Show All 77 Lines • ▼ Show 20 Line(s) | |||||
478 | 493 | | |||
479 | void Xkb::switchToNextLayout() | 494 | void Xkb::switchToNextLayout() | ||
480 | { | 495 | { | ||
481 | if (!m_keymap || !m_state) { | 496 | if (!m_keymap || !m_state) { | ||
482 | return; | 497 | return; | ||
483 | } | 498 | } | ||
484 | const xkb_layout_index_t numLayouts = xkb_keymap_num_layouts(m_keymap); | 499 | const xkb_layout_index_t numLayouts = xkb_keymap_num_layouts(m_keymap); | ||
485 | const xkb_layout_index_t nextLayout = (xkb_state_serialize_layout(m_state, XKB_STATE_LAYOUT_EFFECTIVE) + 1) % numLayouts; | 500 | const xkb_layout_index_t nextLayout = (xkb_state_serialize_layout(m_state, XKB_STATE_LAYOUT_EFFECTIVE) + 1) % numLayouts; | ||
501 | switchToLayout(nextLayout); | ||||
502 | } | ||||
503 | | ||||
504 | void Xkb::switchToLayout(xkb_layout_index_t layout) | ||||
505 | { | ||||
506 | if (!m_keymap || !m_state) { | ||||
507 | return; | ||||
508 | } | ||||
509 | if (layout >= xkb_keymap_num_layouts(m_keymap)) { | ||||
510 | return; | ||||
511 | } | ||||
486 | const xkb_mod_mask_t depressed = xkb_state_serialize_mods(m_state, xkb_state_component(XKB_STATE_MODS_DEPRESSED)); | 512 | const xkb_mod_mask_t depressed = xkb_state_serialize_mods(m_state, xkb_state_component(XKB_STATE_MODS_DEPRESSED)); | ||
487 | const xkb_mod_mask_t latched = xkb_state_serialize_mods(m_state, xkb_state_component(XKB_STATE_MODS_LATCHED)); | 513 | const xkb_mod_mask_t latched = xkb_state_serialize_mods(m_state, xkb_state_component(XKB_STATE_MODS_LATCHED)); | ||
488 | const xkb_mod_mask_t locked = xkb_state_serialize_mods(m_state, xkb_state_component(XKB_STATE_MODS_LOCKED)); | 514 | const xkb_mod_mask_t locked = xkb_state_serialize_mods(m_state, xkb_state_component(XKB_STATE_MODS_LOCKED)); | ||
489 | xkb_state_update_mask(m_state, depressed, latched, locked, 0, 0, nextLayout); | 515 | xkb_state_update_mask(m_state, depressed, latched, locked, 0, 0, layout); | ||
490 | updateModifiers(); | 516 | updateModifiers(); | ||
491 | } | 517 | } | ||
492 | 518 | | |||
493 | KeyboardInputRedirection::KeyboardInputRedirection(InputRedirection *parent) | 519 | KeyboardInputRedirection::KeyboardInputRedirection(InputRedirection *parent) | ||
494 | : QObject(parent) | 520 | : QObject(parent) | ||
495 | , m_input(parent) | 521 | , m_input(parent) | ||
496 | , m_xkb(new Xkb(parent)) | 522 | , m_xkb(new Xkb(parent)) | ||
497 | { | 523 | { | ||
▲ Show 20 Lines • Show All 225 Lines • Show Last 20 Lines |