diff --git a/kaccess/CMakeLists.txt b/kaccess/CMakeLists.txt index e28fc8f76..7359d0124 100644 --- a/kaccess/CMakeLists.txt +++ b/kaccess/CMakeLists.txt @@ -1,34 +1,34 @@ # KI18N Translation Domain for this application add_definitions(-DTRANSLATION_DOMAIN=\"kaccess\") find_package(Phonon4Qt5 REQUIRED NO_MODULE) include_directories(${PHONON_INCLUDE_DIR}) set(kaccess_KDEINIT_SRCS kaccess.cpp main.cpp ) kf5_add_kdeinit_executable(kaccess ${kaccess_KDEINIT_SRCS}) target_link_libraries(kdeinit_kaccess Qt5::Widgets Qt5::X11Extras KF5::CoreAddons KF5::ConfigCore KF5::Completion KF5::GlobalAccel KF5::I18n KF5::Notifications KF5::WidgetsAddons KF5::WindowSystem KF5::DBusAddons Phonon::phonon4qt5 ${X11_LIBRARIES} ) install(TARGETS kdeinit_kaccess ${KDE_INSTALL_TARGETS_DEFAULT_ARGS} ) install(TARGETS kaccess ${KDE_INSTALL_TARGETS_DEFAULT_ARGS} ) ########### install files ############### -install( FILES kaccess.desktop DESTINATION ${KDE_INSTALL_KSERVICES5DIR} ) +install( FILES kaccess.desktop DESTINATION ${KDE_INSTALL_AUTOSTARTDIR} ) install( FILES kaccess.notifyrc DESTINATION ${KDE_INSTALL_KNOTIFY5RCDIR} ) diff --git a/kaccess/kaccess.desktop b/kaccess/kaccess.desktop index e3fbf2094..a23fdb463 100644 --- a/kaccess/kaccess.desktop +++ b/kaccess/kaccess.desktop @@ -1,97 +1,95 @@ [Desktop Entry] Type=Service Name=KDE Accessibility Tool Name[af]=KDE toeganklikheid program Name[ar]=أداة كدي للإتاحة Name[ast]=Ferramienta d'accesibilidá de KDE Name[be]=Інструмент даступнасці KDE Name[be@latin]=Pryłada dastupnaści KDE Name[bg]=Равностоен достъп Name[bn]=কে.ডি.ই. সহায়ক প্রযুক্তি টুল Name[br]=Ostilh haezadusted KDE Name[bs]=KDE alat za pristupačnost Name[ca]=Eina d'accessibilitat KDE Name[ca@valencia]=Eina d'accessibilitat KDE Name[cs]=Nástroj pro zpřístupnění prostředí KDE Name[csb]=Pòmòce przëstãpù KDE Name[cy]=Erfyn Hygyrchedd KDE Name[da]=KDE Tilgængelighedsværktøj Name[de]=KDE-Zugangshilfen Name[el]=Εργαλείο προσιτότητας του KDE Name[en_GB]=KDE Accessibility Tool Name[eo]=KDE-ilo por alirebleco Name[es]=Herramienta de accesibilidad de KDE Name[et]=KDE hõlbustustööriist Name[eu]=KDEren irisgarritasun tresna Name[fa]=ابزار دستیابی‌پذیری KDE Name[fi]=KDE:n esteettömyystyökalu Name[fr]=Outil d'accessibilité de KDE Name[fy]=KDE Tagonklikens Name[ga]=Uirlis Inrochtaineachta KDE Name[gl]=Utilidade de accesibilidade de KDE Name[gu]=KDE ઉપયોગિતા સાધન Name[he]=כלי הנגישות של KDE Name[hi]=केडीई पहुँच औज़ार Name[hne]=केडीई पहुंच औजार Name[hr]=KDE pristupačnost Name[hsb]=KDE pomocnik za přistupnosć Name[hu]=KDE kezelési segédeszköz Name[ia]=Instrumento de Accessibilitate de KDE Name[id]=Alat Aksesibilitas KDE Name[is]=KDE aðgengistól Name[it]=Strumento di KDE per l'accessibilità Name[ja]=KDE アクセシビリティ支援ツール Name[ka]=KDE-ს სპეცეციალური შესაძლებლობების ხელსაწყოები Name[kk]=KDE арнайы мүмкіндіктер құралы Name[km]=ឧបករណ៍​មធ្យោបាយ​ងាយស្រួល​របស់ KDE Name[kn]=ಕೆಡಿಇ ನಿಲುಕಣೆ (ಅಕ್ಸೆಸಿಬಲಿಟಿ) ಸಲಕರಣೆ Name[ko]=KDE 접근성 도구 Name[ku]=KDE Amûra Xwegihandinê Name[lt]=KDE prieinamumo įrankis Name[lv]=KDE pieejamības rīks Name[mai]=केडीई पहुँच अओजार Name[mk]=Алатка за пристапливост во KDE Name[ml]=കെഡിഇ സാമീപ്യതാ ഉപകരണം Name[mr]=केडीई सुलभता साधन Name[ms]=Alat Keaksesan KDE Name[nb]=Tilgjengelighetsverktøy for KDE Name[nds]=KDE-Togangwarktüüch Name[ne]=केडीई पहुँचयोग्य उपकरण Name[nl]=KDE Toegankelijkheid Name[nn]=Tilgjengeverktøy for KDE Name[oc]=Esplech d'accessibilitat de KDE Name[or]=KDE ଅଭିଗମ୍ୟତା ଉପକରଣ Name[pa]=KDE ਸਹਾਇਕ ਟੂਲ Name[pl]=Narzędzie ułatwień dostępu KDE Name[pt]=Ferramenta de Acessibilidade do KDE Name[pt_BR]=Ferramenta de Acessibilidade do KDE Name[ro]=Utilitar de accesibilitate pentru KDE Name[ru]=Специальные возможности Name[se]=KDE reaidu álkkibut geavaheami várás Name[si]=KDE ප්‍රවේශන මෙවලම Name[sk]=Nástroj na sprístupnenie KDE Name[sl]=Orodje za dostopnost KDE Name[sr]=КДЕ‑ова алатка за приступачност Name[sr@ijekavian]=КДЕ‑ова алатка за приступачност Name[sr@ijekavianlatin]=KDE‑ova alatka za pristupačnost Name[sr@latin]=KDE‑ova alatka za pristupačnost Name[sv]=Handikappverktyg för KDE Name[ta]=KDE அணுகும் கருவி Name[te]=KDE అందుబాటు సాధనం Name[tg]=Абзори қобилияти дастрасии KDE Name[th]=เครื่องมือปรับการช่วยการใช้งานของ KDE Name[tr]=KDE Erişilebilirlik Aracı Name[ug]=ك د ئې(KDE) ياردەمچى ئىقتىدار قوراللىرى Name[uk]=Утиліта керування доступності KDE Name[uz]=KDE qulaylik vositasi Name[uz@cyrillic]=KDE қулайлик воситаси Name[vi]=Công cụ hỗ trợ truy cập của KDE Name[wa]=Usteye d' accessibilité di KDE Name[x-test]=xxKDE Accessibility Toolxx Name[zh_CN]=KDE 辅助工具 Name[zh_TW]=KDE 無障礙工具 Exec=kaccess X-DBUS-StartupType=None -X-KDE-Library=kcm_access -X-KDE-ParentApp=kcontrol -X-DocPath=kcontrol/kcmaccess/index.html +X-KDE-autostart-phase=0 diff --git a/kcms/access/kcmaccess.cpp b/kcms/access/kcmaccess.cpp index bc90a3302..82259bbd6 100644 --- a/kcms/access/kcmaccess.cpp +++ b/kcms/access/kcmaccess.cpp @@ -1,568 +1,556 @@ /* Copyright 2000 Matthias Hölzer-Klüpfel Copyright 2014 Frederik Gladhorn This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) version 3, or any later version accepted by the membership of KDE e.V. (or its successor approved by the membership of KDE e.V.), which shall act as a proxy defined in Section 6 of version 3 of the license. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library. If not, see . */ #include "kcmaccess.h" #include #include #include #include #include #include #include #include #include #include #include #include -#include #include #include #define XK_MISCELLANY #define XK_XKB_KEYS #include K_PLUGIN_FACTORY(KAccessConfigFactory, registerPlugin();) QString mouseKeysShortcut(Display *display) { // Calculate the keycode KeySym sym = XK_MouseKeys_Enable; KeyCode code = XKeysymToKeycode(display, sym); if (code == 0) { sym = XK_Pointer_EnableKeys; code = XKeysymToKeycode(display, sym); if (code == 0) return QString(); // No shortcut available? } // Calculate the modifiers by searching the keysym in the X keyboard mapping XkbDescPtr xkbdesc = XkbGetMap(display, XkbKeyTypesMask | XkbKeySymsMask, XkbUseCoreKbd); if (!xkbdesc) return QString(); // Failed to obtain the mapping from server bool found = false; unsigned char modifiers = 0; int groups = XkbKeyNumGroups(xkbdesc, code); for (int grp = 0; grp < groups && !found; grp++) { int levels = XkbKeyGroupWidth(xkbdesc, code, grp); for (int level = 0; level < levels && !found; level++) { if (sym == XkbKeySymEntry(xkbdesc, code, level, grp)) { // keysym found => determine modifiers int typeIdx = xkbdesc->map->key_sym_map[code].kt_index[grp]; XkbKeyTypePtr type = &(xkbdesc->map->types[typeIdx]); for (int i = 0; i < type->map_count && !found; i++) { if (type->map[i].active && (type->map[i].level == level)) { modifiers = type->map[i].mods.mask; found = true; } } } } } XkbFreeClientMap(xkbdesc, 0, true); if (!found) return QString(); // Somehow the keycode -> keysym mapping is flawed XEvent ev; ev.type = KeyPress; ev.xkey.display = display; ev.xkey.keycode = code; ev.xkey.state = 0; int key; KKeyServer::xEventToQt(&ev, &key); QString keyname = QKeySequence(key).toString(); unsigned int AltMask = KKeyServer::modXAlt(); unsigned int WinMask = KKeyServer::modXMeta(); unsigned int NumMask = KKeyServer::modXNumLock(); unsigned int ScrollMask = KKeyServer::modXScrollLock(); unsigned int MetaMask = XkbKeysymToModifiers(display, XK_Meta_L); unsigned int SuperMask = XkbKeysymToModifiers(display, XK_Super_L); unsigned int HyperMask = XkbKeysymToModifiers(display, XK_Hyper_L); unsigned int AltGrMask = XkbKeysymToModifiers(display, XK_Mode_switch) | XkbKeysymToModifiers(display, XK_ISO_Level3_Shift) | XkbKeysymToModifiers(display, XK_ISO_Level3_Latch) | XkbKeysymToModifiers(display, XK_ISO_Level3_Lock); unsigned int mods = ShiftMask | ControlMask | AltMask | WinMask | LockMask | NumMask | ScrollMask; AltGrMask &= ~mods; MetaMask &= ~(mods | AltGrMask); SuperMask &= ~(mods | AltGrMask | MetaMask); HyperMask &= ~(mods | AltGrMask | MetaMask | SuperMask); if ((modifiers & AltGrMask) != 0) keyname = i18n("AltGraph") + QLatin1Char('+') + keyname; if ((modifiers & HyperMask) != 0) keyname = i18n("Hyper") + QLatin1Char('+') + keyname; if ((modifiers & SuperMask) != 0) keyname = i18n("Super") + QLatin1Char('+') + keyname; if ((modifiers & WinMask) != 0) keyname = QKeySequence(Qt::META).toString() + QLatin1Char('+') + keyname; if ((modifiers & AltMask) != 0) keyname = QKeySequence(Qt::ALT).toString() + QLatin1Char('+') + keyname; if ((modifiers & ControlMask) != 0) keyname = QKeySequence(Qt::CTRL).toString() + QLatin1Char('+') + keyname; if ((modifiers & ShiftMask) != 0) keyname = QKeySequence(Qt::SHIFT).toString() + QLatin1Char('+') + keyname; QString result; if ((modifiers & ScrollMask) != 0) if ((modifiers & LockMask) != 0) if ((modifiers & NumMask) != 0) result = i18n("Press %1 while NumLock, CapsLock and ScrollLock are active", keyname); else result = i18n("Press %1 while CapsLock and ScrollLock are active", keyname); else if ((modifiers & NumMask) != 0) result = i18n("Press %1 while NumLock and ScrollLock are active", keyname); else result = i18n("Press %1 while ScrollLock is active", keyname); else if ((modifiers & LockMask) != 0) if ((modifiers & NumMask) != 0) result = i18n("Press %1 while NumLock and CapsLock are active", keyname); else result = i18n("Press %1 while CapsLock is active", keyname); else if ((modifiers & NumMask) != 0) result = i18n("Press %1 while NumLock is active", keyname); else result = i18n("Press %1", keyname); return result; } KAccessConfig::KAccessConfig(QWidget *parent, const QVariantList& args) : KCModule(parent, args) { KAboutData *about = new KAboutData(QStringLiteral("kcmaccess"), i18n("KDE Accessibility Tool"), QStringLiteral("1.0"), QString(), KAboutLicense::GPL, i18n("(c) 2000, Matthias Hoelzer-Kluepfel")); about->addAuthor(i18n("Matthias Hoelzer-Kluepfel"), i18n("Author") , QStringLiteral("hoelzer@kde.org")); setAboutData(about); ui.setupUi(this); connect(ui.soundButton, &QPushButton::clicked, this, &KAccessConfig::selectSound); connect(ui.customBell, &QCheckBox::clicked, this, &KAccessConfig::checkAccess); connect(ui.systemBell, &QCheckBox::clicked, this, &KAccessConfig::configChanged); connect(ui.customBell, &QCheckBox::clicked, this, &KAccessConfig::configChanged); connect(ui.soundEdit, &QLineEdit::textChanged, this, &KAccessConfig::configChanged); connect(ui.invertScreen, &QRadioButton::clicked, this, &KAccessConfig::configChanged); connect(ui.flashScreen, &QRadioButton::clicked, this, &KAccessConfig::configChanged); connect(ui.visibleBell, &QCheckBox::clicked, this, &KAccessConfig::configChanged); connect(ui.visibleBell, &QCheckBox::clicked, this, &KAccessConfig::checkAccess); connect(ui.colorButton, &KColorButton::clicked, this, &KAccessConfig::changeFlashScreenColor); connect(ui.invertScreen, &QRadioButton::clicked, this, &KAccessConfig::invertClicked); connect(ui.flashScreen, &QRadioButton::clicked, this, &KAccessConfig::flashClicked); connect(ui.duration, static_cast(&QSpinBox::valueChanged), this, &KAccessConfig::configChanged); // modifier key settings ------------------------------- connect(ui.stickyKeys, &QCheckBox::clicked, this, &KAccessConfig::configChanged); connect(ui.stickyKeysLock, &QCheckBox::clicked, this, &KAccessConfig::configChanged); connect(ui.stickyKeysAutoOff, &QCheckBox::clicked, this, &KAccessConfig::configChanged); connect(ui.stickyKeys, &QCheckBox::clicked, this, &KAccessConfig::checkAccess); connect(ui.stickyKeysBeep, &QCheckBox::clicked, this, &KAccessConfig::configChanged); connect(ui.toggleKeysBeep, &QCheckBox::clicked, this, &KAccessConfig::configChanged); connect(ui.kNotifyModifiers, &QCheckBox::clicked, this, &KAccessConfig::configChanged); connect(ui.kNotifyModifiers, &QCheckBox::clicked, this, &KAccessConfig::checkAccess); connect(ui.kNotifyModifiersButton, &QPushButton::clicked, this, &KAccessConfig::configureKNotify); // key filter settings --------------------------------- connect(ui.slowKeysDelay, static_cast(&QSpinBox::valueChanged), this, &KAccessConfig::configChanged); connect(ui.slowKeys, &QCheckBox::clicked, this, &KAccessConfig::configChanged); connect(ui.slowKeys, &QCheckBox::clicked, this, &KAccessConfig::checkAccess); connect(ui.slowKeysPressBeep, &QCheckBox::clicked, this, &KAccessConfig::configChanged); connect(ui.slowKeysAcceptBeep, &QCheckBox::clicked, this, &KAccessConfig::configChanged); connect(ui.slowKeysRejectBeep, &QCheckBox::clicked, this, &KAccessConfig::configChanged); connect(ui.bounceKeysDelay, static_cast(&QSpinBox::valueChanged), this, &KAccessConfig::configChanged); connect(ui.bounceKeys, &QCheckBox::clicked, this, &KAccessConfig::configChanged); connect(ui.bounceKeysRejectBeep, &QCheckBox::clicked, this, &KAccessConfig::configChanged); connect(ui.bounceKeys, &QCheckBox::clicked, this, &KAccessConfig::checkAccess); // gestures -------------------------------------------- QString shortcut = mouseKeysShortcut(QX11Info::display()); if (shortcut.isEmpty()) ui.gestures->setToolTip(i18n("Here you can activate keyboard gestures that turn on the following features: \n" "Sticky keys: Press Shift key 5 consecutive times\n" "Slow keys: Hold down Shift for 8 seconds")); else ui.gestures->setToolTip(i18n("Here you can activate keyboard gestures that turn on the following features: \n" "Mouse Keys: %1\n" "Sticky keys: Press Shift key 5 consecutive times\n" "Slow keys: Hold down Shift for 8 seconds", shortcut)); connect(ui.gestures, &QCheckBox::clicked, this, &KAccessConfig::configChanged); connect(ui.timeout, &QCheckBox::clicked, this, &KAccessConfig::configChanged); connect(ui.timeout, &QCheckBox::clicked, this, &KAccessConfig::checkAccess); connect(ui.timeoutDelay, static_cast(&QSpinBox::valueChanged), this, &KAccessConfig::configChanged); connect(ui.accessxBeep, &QCheckBox::clicked, this, &KAccessConfig::configChanged); connect(ui.gestureConfirmation, &QCheckBox::clicked, this, &KAccessConfig::configChanged); connect(ui.kNotifyAccess, &QCheckBox::clicked, this, &KAccessConfig::configChanged); connect(ui.kNotifyAccess, &QCheckBox::clicked, this, &KAccessConfig::checkAccess); connect(ui.kNotifyAccessButton, &QPushButton::clicked, this, &KAccessConfig::configureKNotify); // keynboard navigation connect(ui.mouseKeys, &QCheckBox::clicked, this, &KAccessConfig::configChanged); connect(ui.mk_delay, static_cast(&QSpinBox::valueChanged), this, &KAccessConfig::configChanged); connect(ui.mk_interval, static_cast(&QSpinBox::valueChanged), this, &KAccessConfig::configChanged); connect(ui.mk_time_to_max, static_cast(&QSpinBox::valueChanged), this, &KAccessConfig::configChanged); connect(ui.mk_max_speed, static_cast(&QSpinBox::valueChanged), this, &KAccessConfig::configChanged); connect(ui.mk_curve, static_cast(&QSpinBox::valueChanged), this, &KAccessConfig::configChanged); // screen reader connect(ui.screenReaderEnabled, &QCheckBox::clicked, this, &KAccessConfig::configChanged); connect(ui.launchOrcaConfiguration, &QPushButton::clicked, this, &KAccessConfig::launchOrcaConfiguration); } KAccessConfig::~KAccessConfig() { } void KAccessConfig::configureKNotify() { KNotifyConfigWidget::configure(this, QStringLiteral("kaccess")); } void KAccessConfig::launchOrcaConfiguration() { const QStringList gsettingArgs = { QStringLiteral("set"), QStringLiteral("org.gnome.desktop.a11y.applications"), QStringLiteral("screen-reader-enabled"), QStringLiteral("true") }; int ret = QProcess::execute(QStringLiteral("gsettings"), gsettingArgs); if (ret) { const QString errorStr = QLatin1String("gsettings ") + gsettingArgs.join(QLatin1Char(' ')); ui.orcaLaunchFeedbackLabel->setText(i18n("Could not set gsettings for Orca: \"%1\" failed", errorStr)); return; } qint64 pid = 0; bool started = QProcess::startDetached(QStringLiteral("orca"), {QStringLiteral("--setup")}, QString(), &pid); if (!started) { ui.orcaLaunchFeedbackLabel->setText(i18n("Error: Could not launch \"orca --setup\"")); } } void KAccessConfig::changeFlashScreenColor() { ui.invertScreen->setChecked(false); ui.flashScreen->setChecked(true); configChanged(); } void KAccessConfig::selectSound() { const QStringList list = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QStringLiteral("sound/")); QString start; if (!list.isEmpty()) start = list[0]; const QString fname = QFileDialog::getOpenFileName(this, QString(), start); if (!fname.isEmpty()) ui.soundEdit->setText(fname); } void KAccessConfig::configChanged() { emit changed(true); } void KAccessConfig::load() { KConfigGroup cg(KSharedConfig::openConfig(QStringLiteral("kaccessrc")), "Bell"); ui.systemBell->setChecked(cg.readEntry("SystemBell", true)); ui.customBell->setChecked(cg.readEntry("ArtsBell", false)); ui.soundEdit->setText(cg.readPathEntry("ArtsBellFile", QString())); ui.visibleBell->setChecked(cg.readEntry("VisibleBell", false)); ui.invertScreen->setChecked(cg.readEntry("VisibleBellInvert", true)); ui.flashScreen->setChecked(!ui.invertScreen->isChecked()); ui.colorButton->setColor(cg.readEntry("VisibleBellColor", QColor(Qt::red))); ui.duration->setValue(cg.readEntry("VisibleBellPause", 500)); KConfigGroup keyboardGroup(KSharedConfig::openConfig(QStringLiteral("kaccessrc")), "Keyboard"); ui.stickyKeys->setChecked(keyboardGroup.readEntry("StickyKeys", false)); ui.stickyKeysLock->setChecked(keyboardGroup.readEntry("StickyKeysLatch", true)); ui.stickyKeysAutoOff->setChecked(keyboardGroup.readEntry("StickyKeysAutoOff", false)); ui.stickyKeysBeep->setChecked(keyboardGroup.readEntry("StickyKeysBeep", true)); ui.toggleKeysBeep->setChecked(keyboardGroup.readEntry("ToggleKeysBeep", false)); ui.kNotifyModifiers->setChecked(keyboardGroup.readEntry("kNotifyModifiers", false)); ui.slowKeys->setChecked(keyboardGroup.readEntry("SlowKeys", false)); ui.slowKeysDelay->setValue(keyboardGroup.readEntry("SlowKeysDelay", 500)); ui.slowKeysPressBeep->setChecked(keyboardGroup.readEntry("SlowKeysPressBeep", true)); ui.slowKeysAcceptBeep->setChecked(keyboardGroup.readEntry("SlowKeysAcceptBeep", true)); ui.slowKeysRejectBeep->setChecked(keyboardGroup.readEntry("SlowKeysRejectBeep", true)); ui.bounceKeys->setChecked(keyboardGroup.readEntry("BounceKeys", false)); ui.bounceKeysDelay->setValue(keyboardGroup.readEntry("BounceKeysDelay", 500)); ui.bounceKeysRejectBeep->setChecked(keyboardGroup.readEntry("BounceKeysRejectBeep", true)); ui.gestures->setChecked(keyboardGroup.readEntry("Gestures", false)); ui.timeout->setChecked(keyboardGroup.readEntry("AccessXTimeout", false)); ui.timeoutDelay->setValue(keyboardGroup.readEntry("AccessXTimeoutDelay", 30)); ui.accessxBeep->setChecked(keyboardGroup.readEntry("AccessXBeep", true)); ui.gestureConfirmation->setChecked(keyboardGroup.readEntry("GestureConfirmation", false)); ui.kNotifyAccess->setChecked(keyboardGroup.readEntry("kNotifyAccess", false)); KConfigGroup mouseGroup(KSharedConfig::openConfig(QStringLiteral("kaccessrc")), "Mouse"); ui.mouseKeys->setChecked(mouseGroup.readEntry("MouseKeys", false)); ui.mk_delay->setValue(mouseGroup.readEntry("MKDelay", 160)); const int interval = mouseGroup.readEntry("MKInterval", 5); ui.mk_interval->setValue(interval); // Default time to reach maximum speed: 5000 msec int time_to_max = mouseGroup.readEntry("MKTimeToMax", (5000+interval/2)/interval); time_to_max = mouseGroup.readEntry("MK-TimeToMax", time_to_max*interval); ui.mk_time_to_max->setValue(time_to_max); // Default maximum speed: 1000 pixels/sec // (The old default maximum speed from KDE <= 3.4 // (100000 pixels/sec) was way too fast) long max_speed = mouseGroup.readEntry("MKMaxSpeed", interval); max_speed = max_speed * 1000 / interval; if (max_speed > 2000) { max_speed = 2000; } max_speed = mouseGroup.readEntry("MK-MaxSpeed", int(max_speed)); ui.mk_max_speed->setValue(max_speed); ui.mk_curve->setValue(mouseGroup.readEntry("MKCurve", 0)); KConfigGroup screenReaderGroup(KSharedConfig::openConfig(QStringLiteral("kaccessrc")), "ScreenReader"); ui.screenReaderEnabled->setChecked(screenReaderGroup.readEntry("Enabled", false)); checkAccess(); emit changed(false); } void KAccessConfig::save() { KConfigGroup cg(KSharedConfig::openConfig(QStringLiteral("kaccessrc")), "Bell"); cg.writeEntry("SystemBell", ui.systemBell->isChecked()); cg.writeEntry("ArtsBell", ui.customBell->isChecked()); cg.writePathEntry("ArtsBellFile", ui.soundEdit->text()); cg.writeEntry("VisibleBell", ui.visibleBell->isChecked()); cg.writeEntry("VisibleBellInvert", ui.invertScreen->isChecked()); cg.writeEntry("VisibleBellColor", ui.colorButton->color()); cg.writeEntry("VisibleBellPause", ui.duration->value()); cg.sync(); KConfigGroup keyboardGroup(KSharedConfig::openConfig(QStringLiteral("kaccessrc")), "Keyboard"); keyboardGroup.writeEntry("StickyKeys", ui.stickyKeys->isChecked()); keyboardGroup.writeEntry("StickyKeysLatch", ui.stickyKeysLock->isChecked()); keyboardGroup.writeEntry("StickyKeysAutoOff", ui.stickyKeysAutoOff->isChecked()); keyboardGroup.writeEntry("StickyKeysBeep", ui.stickyKeysBeep->isChecked()); keyboardGroup.writeEntry("ToggleKeysBeep", ui.toggleKeysBeep->isChecked()); keyboardGroup.writeEntry("kNotifyModifiers", ui.kNotifyModifiers->isChecked()); keyboardGroup.writeEntry("SlowKeys", ui.slowKeys->isChecked()); keyboardGroup.writeEntry("SlowKeysDelay", ui.slowKeysDelay->value()); keyboardGroup.writeEntry("SlowKeysPressBeep", ui.slowKeysPressBeep->isChecked()); keyboardGroup.writeEntry("SlowKeysAcceptBeep", ui.slowKeysAcceptBeep->isChecked()); keyboardGroup.writeEntry("SlowKeysRejectBeep", ui.slowKeysRejectBeep->isChecked()); keyboardGroup.writeEntry("BounceKeys", ui.bounceKeys->isChecked()); keyboardGroup.writeEntry("BounceKeysDelay", ui.bounceKeysDelay->value()); keyboardGroup.writeEntry("BounceKeysRejectBeep", ui.bounceKeysRejectBeep->isChecked()); keyboardGroup.writeEntry("Gestures", ui.gestures->isChecked()); keyboardGroup.writeEntry("AccessXTimeout", ui.timeout->isChecked()); keyboardGroup.writeEntry("AccessXTimeoutDelay", ui.timeoutDelay->value()); keyboardGroup.writeEntry("AccessXBeep", ui.accessxBeep->isChecked()); keyboardGroup.writeEntry("GestureConfirmation", ui.gestureConfirmation->isChecked()); keyboardGroup.writeEntry("kNotifyAccess", ui.kNotifyAccess->isChecked()); keyboardGroup.sync(); KConfigGroup mouseGroup(KSharedConfig::openConfig(QStringLiteral("kaccessrc")), "Mouse"); const int interval = ui.mk_interval->value(); mouseGroup.writeEntry("MouseKeys", ui.mouseKeys->isChecked()); mouseGroup.writeEntry("MKDelay", ui.mk_delay->value()); mouseGroup.writeEntry("MKInterval", interval); mouseGroup.writeEntry("MK-TimeToMax", ui.mk_time_to_max->value()); mouseGroup.writeEntry("MKTimeToMax", (ui.mk_time_to_max->value() + interval/2)/interval); mouseGroup.writeEntry("MK-MaxSpeed", ui.mk_max_speed->value()); mouseGroup.writeEntry("MKMaxSpeed", (ui.mk_max_speed->value()*interval + 500)/1000); mouseGroup.writeEntry("MKCurve", ui.mk_curve->value()); mouseGroup.sync(); KConfigGroup screenReaderGroup(KSharedConfig::openConfig(QStringLiteral("kaccessrc")), "ScreenReader"); screenReaderGroup.writeEntry("Enabled", ui.screenReaderEnabled->isChecked()); if (ui.systemBell->isChecked() || ui.customBell->isChecked() || ui.visibleBell->isChecked()) { KConfig _cfg(QStringLiteral("kdeglobals"), KConfig::NoGlobals); KConfigGroup cfg(&_cfg, "General"); cfg.writeEntry("UseSystemBell", true); cfg.sync(); } // make kaccess reread the configuration // turning a11y features off needs to be done by kaccess // so run it to clear any enabled features and it will exit if it should - KToolInvocation::startServiceByDesktopName(QStringLiteral("kaccess")); + QProcess::startDetached(QStringLiteral("kaccess")); emit changed(false); } void KAccessConfig::defaults() { ui.systemBell->setChecked(true); ui.customBell->setChecked(false); ui.soundEdit->setText(QString()); ui.visibleBell->setChecked(false); ui.invertScreen->setChecked(true); ui.flashScreen->setChecked(false); ui.colorButton->setColor(QColor(Qt::red)); ui.duration->setValue(500); ui.slowKeys->setChecked(false); ui.slowKeysDelay->setValue(500); ui.slowKeysPressBeep->setChecked(true); ui.slowKeysAcceptBeep->setChecked(true); ui.slowKeysRejectBeep->setChecked(true); ui.bounceKeys->setChecked(false); ui.bounceKeysDelay->setValue(500); ui.bounceKeysRejectBeep->setChecked(true); ui.stickyKeys->setChecked(false); ui.stickyKeysLock->setChecked(true); ui.stickyKeysAutoOff->setChecked(false); ui.stickyKeysBeep->setChecked(true); ui.toggleKeysBeep->setChecked(false); ui.kNotifyModifiers->setChecked(false); ui.gestures->setChecked(false); ui.timeout->setChecked(false); ui.timeoutDelay->setValue(30); ui.accessxBeep->setChecked(true); ui.gestureConfirmation->setChecked(true); ui.kNotifyAccess->setChecked(false); ui.mouseKeys->setChecked(false); ui.mk_delay->setValue(160); ui.mk_interval->setValue(5); ui.mk_time_to_max->setValue(5000); ui.mk_max_speed->setValue(1000); ui.mk_curve->setValue(0); ui.screenReaderEnabled->setChecked(false); checkAccess(); emit changed(true); } void KAccessConfig::invertClicked() { ui.flashScreen->setChecked(false); } void KAccessConfig::flashClicked() { ui.invertScreen->setChecked(false); } void KAccessConfig::checkAccess() { bool custom = ui.customBell->isChecked(); ui.soundEdit->setEnabled(custom); ui.soundButton->setEnabled(custom); ui.soundLabel->setEnabled(custom); bool visible = ui.visibleBell->isChecked(); ui.invertScreen->setEnabled(visible); ui.flashScreen->setEnabled(visible); ui.colorButton->setEnabled(visible); ui.duration->setEnabled(visible); bool sticky = ui.stickyKeys->isChecked(); ui.stickyKeysLock->setEnabled(sticky); ui.stickyKeysAutoOff->setEnabled(sticky); ui.stickyKeysBeep->setEnabled(sticky); bool slow = ui.slowKeys->isChecked(); ui.slowKeysDelay->setEnabled(slow); ui.slowKeysPressBeep->setEnabled(slow); ui.slowKeysAcceptBeep->setEnabled(slow); ui.slowKeysRejectBeep->setEnabled(slow); bool bounce = ui.bounceKeys->isChecked(); ui.bounceKeysDelay->setEnabled(bounce); ui.bounceKeysRejectBeep->setEnabled(bounce); bool useTimeout = ui.timeout->isChecked(); ui.timeoutDelay->setEnabled(useTimeout); } -extern "C" -{ - /* This one gets called by kcminit - - */ - Q_DECL_EXPORT void kcminit_access() - { - KToolInvocation::startServiceByDesktopName(QStringLiteral("kaccess")); - } -} - #include "kcmaccess.moc" diff --git a/kcms/access/kcmaccess.desktop b/kcms/access/kcmaccess.desktop index 22f0837f3..f6ece151b 100644 --- a/kcms/access/kcmaccess.desktop +++ b/kcms/access/kcmaccess.desktop @@ -1,198 +1,196 @@ [Desktop Entry] Exec=kcmshell5 kcmaccess Icon=preferences-desktop-accessibility Type=Service -X-KDE-ServiceTypes=KCModule,KCModuleInit +X-KDE-ServiceTypes=KCModule X-DocPath=kcontrol/kcmaccess/index.html X-KDE-Library=kcm_access -X-KDE-Init-Symbol=kcminit_access X-KDE-ParentApp=kcontrol X-KDE-OnlyShowOnQtPlatforms=xcb; -X-KDE-Init-Phase=0 X-KDE-System-Settings-Parent-Category=personalization X-KDE-Weight=70 Name=Accessibility Name[af]=Toeganklikheid Name[ar]=الإتاحة Name[as]=অভিগম্যতা Name[ast]=Accesibilidá Name[be]=Даступнасць Name[be@latin]=Dastupnaść Name[bg]=Равностоен достъп Name[bn]=সহায়ক প্রযুক্তি Name[bn_IN]=বিশেষ ব্যবহারের সহায়তা Name[br]=Haezadusted Name[bs]=Pristupačnost Name[ca]=Accessibilitat Name[ca@valencia]=Accessibilitat Name[cs]=Zpřístupnění Name[csb]=Pòmòce przëstãpù Name[cy]=Hygyrchedd Name[da]=Tilgængelighed Name[de]=Zugangshilfen Name[el]=Προσιτότητα Name[en_GB]=Accessibility Name[eo]=Alirebleco Name[es]=Accesibilidad Name[et]=Hõlbustus Name[eu]=Irisgarritasun Name[fa]=دستیابی‌پذیری Name[fi]=Esteettömyys Name[fr]=Accessibilité Name[fy]=Tagonklikens Name[ga]=Inrochtaineacht Name[gl]=Accesibilidade Name[gu]=ઉપયોગિતા Name[he]=נגישות Name[hi]=पहुँच Name[hne]=पहुंच Name[hr]=Pristupačnost Name[hsb]=Přistupnosć Name[hu]=Kezelési segítség Name[ia]=Accessibilitate Name[id]=Aksesibilitas Name[is]=Auðveldað aðgengi Name[it]=Accessibilità Name[ja]=アクセシビリティ Name[ka]=სპეციალური შესაძლბლობები Name[kk]=Арнайы мүмкіндіктер Name[km]=មធ្យោបាយ​ងាយស្រួល Name[kn]=ನಿಲುಕಣೆ (ಆಕ್ಸೆಸಿಬಿಲಿಟಿ) Name[ko]=내게 필요한 설정 Name[ku]=Gihîştin Name[lt]=Prieinamumas Name[lv]=Pieejamība Name[mai]=अभिगम्यता Name[mk]=Пристапливост Name[ml]=പ്രാപ്യത Name[mr]=सुलभता Name[ms]=Kebolehcapaian Name[nb]=Tilgjengelighet Name[nds]=Toganghülp Name[ne]=पहुँचता Name[nl]=Toegankelijkheid Name[nn]=Tilgjenge Name[oc]=Accessibilitat Name[or]=ଅଭିଗମ୍ୟତା Name[pa]=ਸਹੂਲਤਾਂ Name[pl]=Ułatwienia Name[pt]=Acessibilidade Name[pt_BR]=Acessibilidade Name[ro]=Accesibilitate Name[ru]=Специальные возможности Name[se]=Álkkibut geavaheapmi Name[si]=ප්‍රවේශණය Name[sk]=Prístupnosť Name[sl]=Dostopnost Name[sr]=Приступачност Name[sr@ijekavian]=Приступачност Name[sr@ijekavianlatin]=Pristupačnost Name[sr@latin]=Pristupačnost Name[sv]=Handikappstöd Name[ta]=அணுகல் Name[te]=అందుబాటు Name[tg]=Қобилияти дастрасӣ Name[th]=ช่วยการใช้งาน Name[tr]=Erişilebilirlik Name[ug]=ياردەم ئىقتىدارى Name[uk]=Доступність Name[uz]=Qulayliklar Name[uz@cyrillic]=Қулайликлар Name[vi]=Hỗ trợ truy cập Name[wa]=Accessibilité Name[xh]=Unikezelo Name[x-test]=xxAccessibilityxx Name[zh_CN]=辅助功能 Name[zh_TW]=無障礙輔助 Comment=Accessibility Options Comment[ar]=خيارات الإتاحة Comment[bs]=Opcije pristupa Comment[ca]=Opcions d'accessibilitat Comment[ca@valencia]=Opcions d'accessibilitat Comment[cs]=Možnosti zpřístupnění Comment[da]=Tilgængelighedsindstillinger Comment[de]=Einstellungen für Zugangshilfen Comment[el]=Ρυθμίσεις προσιτότητας Comment[en_GB]=Accessibility Options Comment[es]=Opciones de accesibilidad Comment[et]=Hõlbustusvõimalused Comment[eu]=Irisgarritasun aukerak Comment[fi]=Esteettömyysvalinnat Comment[fr]=Options d'accessibilité Comment[gl]=Opcións de accesibilidade Comment[he]=אפשרויות נגישות Comment[hu]=Akadálymentesítési beállítások Comment[ia]=Optiones de Accessibilitate Comment[id]=Opsi Aksesibilitas Comment[is]=Valkostir fyrir auðveldað aðgengi Comment[it]=Opzioni di accessibilità Comment[ja]=アクセシビリティオプション Comment[ko]=내게 필요한 설정 Comment[lt]=Prieinamumo parinktys Comment[ml]=പ്രാപ്യതാസാധ്യതകൾ Comment[mr]=सुलभता पर्याय Comment[nb]=Valg for tilgjengelighet Comment[nds]=Toganghülp-Optschonen Comment[nl]=Opties voor toegankelijkheid Comment[nn]=Tilgjengeval Comment[pa]=ਸਹੂਲਤਾਂ ਚੋਣਾਂ Comment[pl]=Opcje dostępności Comment[pt]=Opções de Acessibilidade Comment[pt_BR]=Opções de acessibilidade Comment[ru]=Особые функции для людей с физическими ограничениями Comment[sk]=Voľby prístupnosti Comment[sl]=Možnosti dostopnosti Comment[sr]=Опције приступачности Comment[sr@ijekavian]=Опције приступачности Comment[sr@ijekavianlatin]=Opcije pristupačnosti Comment[sr@latin]=Opcije pristupačnosti Comment[sv]=Alternativ för handikappstöd Comment[tg]=Имконоти қобилияти дастрасӣ Comment[tr]=Erişilebilirlik Seçenekleri Comment[uk]=Параметри доступності Comment[x-test]=xxAccessibility Optionsxx Comment[zh_CN]=辅助功能选项 Comment[zh_TW]=無障礙輔助選項 X-KDE-Keywords=access,accessibility,deaf,impaired,hearing,hearing loss,bell,audible bell,visible bell,visual bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad,numpad,activation gestures,gestures,sticky,modifier keys,modifier,locking keys X-KDE-Keywords[ca]=accés,accessibilitat,sord,discapacitat,oïda,pèrdua d'oïda,timbre,timbre audible,timbre visual,Teclat,tecles apegaloses,repetició de tecles,tecles lentes,navegació de ratolí,teclat numèric,activació de gestos,gestors,apegalós,tecles modificadores,modificador,tecles bloquejadores X-KDE-Keywords[ca@valencia]=accés,accessibilitat,sord,discapacitat,oïda,pèrdua d'oïda,timbre,timbre audible,timbre visual,Teclat,tecles apegaloses,repetició de tecles,tecles lentes,navegació de ratolí,teclat numèric,activació de gestos,gestors,apegalós,tecles modificadores,modificador,tecles bloquejadores X-KDE-Keywords[da]=tilgang,tilgængelighed,døv,hæmmet,handicappet,hørelse,hørehæmmet,klokke,hørbar klokke,synlig klokke,visuel klokke,tastatur,taster,sticky keys,elastiske taster,bounce,langsomme taster,musenavigation,numerisk tastatur,aktiveringsgestusser,gestusser,klæbende,ændringstaster,låsetaster X-KDE-Keywords[de]=Behinderung,Maussteuerung,Signale,Tastatur,Tasten,Klebende Tasten,Taubheit,Verlangsamte Tasten,Zahlenblock,Zugang,Zugangshilfen,Zahlentasten,Gesten aktivieren,Sondertasten,Sperrtasten X-KDE-Keywords[el]=πρόσβαση,προσβασιμότητα,βαρήκοος,πρόβλημα,ακοής,απώλεια ακοής,κουδούνι,ακουστικό κουδούνι,ορατό κουδούνι,οπτικό κουδούνι,πληκτρολόγιο,πλήκτρα,κολλημένα πλήκτρα,πλήκτρα αναπήδησης,αργά πλήκτρα,πλοήγηση με ποντίκι,αριθμητικό πληκτρολόγιο,numpad,νεύματα ενεργοποίησης,νεύματα,κολλημένο,πλήκτρα τροποποιητή,τροποποιητής,πλήκτρα κλειδώματος X-KDE-Keywords[en_GB]=access,accessibility,deaf,impaired,hearing,hearing loss,bell,audible bell,visible bell,visual bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad,numpad,activation gestures,gestures,sticky,modifier keys,modifier,locking keys X-KDE-Keywords[es]=acceso,accesibilidad,sordera,descapacitado,oído,pérdida de oído,campana,campana audible,campana visible,campana visual,teclado,teclas,teclas adhesivas,repetición de teclas,teclas lentas,navegación con ratón,teclado numérico,gestos de activación,gestos,adhesivo,teclas modificadoras,modificador,teclas de bloqueo X-KDE-Keywords[et]=hõlbustus,kasutusmugavus,kurdid,tummad,kuulmine,kuulmiskaotus,puuetega,kell,kuuldav kell,nähtav kell,klaviatuur,klahvid,kleepuvad klahvid,põrkuvad klahvid,aeglased klahvid,hiirega liikumine,numbriklahvistik,aktiveerimisžestid,žestid,muuteklahvid,lukustusklahvid X-KDE-Keywords[eu]=sarbide,irisgarritasuna,gor,baliaezintasun,entzumen,entzumena galdu,kanpai,kanpai entzungarri,kanpai ikusgarri,kanpai ikusgaia,teklatu,tekla,tekla itsaskor, errebote-teklak,tekla motel,sagu bidezko nabigazio,zenbakizko teklatu,zk teklatu,aktibazio-keinu,keinu,itsaskor,tekla aldatzaile,aldatzaile,blokeo-tekla X-KDE-Keywords[fi]=esteettömyys,kuuro,heikentynyt,kuulo,kuulonalenema,äänimerkki,kuultava äänimerkki,visuaalinen äänimerkki,näppäimistö,näppäimet,alas jäävät näppäimet,tahmeat näppäimet,ponnahdusnäppäimet,hitaat näppäimet,hiirinäppäimet,numeronäppäimistö,aktivointieleet,vaihtonäppäimet,vaihto,lukitusnäppäimet X-KDE-Keywords[fr]=accès, accessibilité, sourd, affaiblis, audition, perte d'audition, cloche, cloche audible, cloche visuelle, clavier, touches, touches collantes, touche rebondissante, touches lentes, navigation de la souris, pavé numérique, gestes d'activation, gestes, collant, touches modifiantes, modificateur, touche de verrouillage X-KDE-Keywords[gl]=acceso, accesibilidade, xordo, discapacitado, minusválido, audición, auditiva, campá audíbel,badalada visible,badalada visíbel,badalada visual,campá visible,campá visíbel,campá visual, teclado, tecla pegañentas, teclas lentas, navegación co rato, teclado numérico, acenos, teclas modificadoras X-KDE-Keywords[hu]=kezelés,akadálymentesítés,süket,károsodott,hallás,halláskárosodás,csengő,hallható csengő,látható csengő,vizuális csengő,Billentyűzet,billentyűk,ragadós billentyűk,pattogó billentyűk,lassú billentyűk,egérnavigáció,numerikus billentyűzet X-KDE-Keywords[ia]=access,accessibility,deaf,impaired,hearing,hearing loss,bell,audible bell,visible bell,visual bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad,numpad,activation gestures,gestures,sticky,modifier keys,modifier,locking keys X-KDE-Keywords[id]=akses,aksesibilitas,tuli,gangguan,pendengaran,kehilangan pendengaran,bel,bel dapat teraudio,bel terlihat,bel visual,Keyboard,tuts,tuts lekat,tuts mentul,tuts pelan,navigasi mouse,papan numerik,numpad,gestur pengaktifan,gestur,lengket,tuts pengubah,pengubah,tuts penguncian X-KDE-Keywords[it]=accesso,accessibilità,sordo,handicap,udito,sordità,campanella,campanella udibile,campanella visiva,tastiera,tasti,permanenza dei tasti,pressione ravvicinata dei tasti,rallentamento dei tasti,navigazione col mouse,tastierino numerico,attivazione gesti,gesti,tasti modificatori,modificatore,tasti di blocco X-KDE-Keywords[ko]=access,accessibility,deaf,impaired,hearing,hearing loss,bell,audible bell,visible bell,visual bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad,numpad,activation gestures,gestures,sticky,modifier keys,modifier,locking keys,접근,접근성,청각장애,청각 장애,시각장애,시각 장애,키보드,키,고정키,튕김키,느린키,마우스키,숫자패드,제스처 X-KDE-Keywords[lt]=prieiga,prieinamumas,kurti,kurčias,kurcias,neprigirdintis,klausa,klausos sutrikimai,skambutis,matomas skambutis,klaviatūra,klaviatura,klavišai,klavisai,atmenieji klavisai,atmenieji klavišai,pasikartojantys klavišai,pasikartojantys klavisai,tamprus klavisai,tamprūs klavišai,lipnieji klavišai,lipnieji klavisai,lėtieji klavišai,letieji klavisai,narsymas pele,naršymas pele,skaitmenų klaviatūra,skaitmenu klaviatura,aktyvavimo gestai,gestai,modifikavimo klavišai,modifikavimo klavisai,modifikatorius,užrakto klavišai,uzrakto klavisai X-KDE-Keywords[nl]=toegang,toegankelijkheid,doof,gehandicapt,gehoor,gehoorverlies,bel,hoorbare bel,zichtbare bel,toetsenbord,toetsen,dode toetsen,herhaaltoetsen,langzame toetsen,muisnavigatie,numeriek toetsenbord,activeringsgebaren,gebaren,plakkerig,modificatietoetsen,samensteltoets,vergrendeltoetsen X-KDE-Keywords[nn]=tilgjenge,tilgjengelegheit,døv,funksjonshemma,handikappa,høyrsle,høyrsletap,bjølle,høyrbar bjølle,synleg bjølle,visuell bjølle,tastatur,låsetastar,faste tastar,trege tastar,musnavigering,taltastatur,numerisk tastatur,aktiveringsrørsler,musrørsler,muserørsler,rørsler,valtastar,låsetastar X-KDE-Keywords[pl]=dostęp,dostępność,głuchota,upośledzenie,dzwonek,słyszalny dzwonek,widoczny dzwonek,słyszalny dzwonek,Klawiatura,klawisze,lepkie klawisze,odbijające klawisze,powolne klawisze, ruchy myszą,klawiatura numeryczna X-KDE-Keywords[pt]=acesso,acessibilidade,surdo,deficiente,campainha,campainha audível,campainha visível,teclado,teclas,teclas fixas,teclas lentas,teclas sonoras,navegação do rato,teclado numérico,numérico,gestos de activação,gestos,fixo,teclas modificadoras,modificadora,teclas de bloqueio X-KDE-Keywords[pt_BR]=acesso,acessibilidade,surdo,deficiente,audição,campainha,campainha audível,campainha visível,campainha visual,Teclado,teclas,teclas de aderência,teclas lentas,teclas de repercussão,navegação do mouse,teclado numérico numérico,gestos de ativação,gestos,fixo,teclas modificadoras,modificadora,teclas de bloqueio X-KDE-Keywords[ru]=access,accessibility,deaf,impaired,hearing,hearing loss,bell,audible bell,visible bell,visual bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad,numpad,activation gestures,gestures,sticky,modifier keys,modifier,locking keys,доступ,доступность,глухота,слух,ослабленный,слабый,потеря слуха,звонок,сигнал,звуковой сигнал,визуальный сигнал,видимый сигнал,клавиатура,кнопки,клавиши,залипание,залипающие клавиши,липкие клавиши,прыгающие клавиши,«прыгающие» клавиши,замедленные клавиши,навигация с помощью мыши,управление мышью,цифровая клавиатура,жесты активации,жесты,клавиши-модификаторы,модификаторы,модификатор,клавиши индикаторов X-KDE-Keywords[sk]=prístup,prístupnosť,hluchý,opitý,sluch,strata sluchu,zvonček,hlasný zvonček,viditeľný zvonček,Klávesnica,klávesy,lepkavé klávesy,skákajúce klávesy,pomalé klávesy,navigácia myšou,numerická klávesnica,numpad,aktivačné gestá,lepkavé,modifikačné klávesy,modifikátor,zamykacie klávesy X-KDE-Keywords[sl]=dostop,dostopnost,gluh,oviran,sluh,slušno,izguba sluha,zvonec,slišen zvonec,slišni zvonec,viden zvonec,vidni zvonec,tipkovnica,tipke,lepljive tipke,odbijajoče tipke,počasne tipke,krmarjenje z miško,številčnica,številske tipke,kretnje za vklop,kretnje,lepljivo,spremenilne tipke,zaklepne tipke X-KDE-Keywords[sr]=access,accessibility,deaf,impaired,hearing,hearing loss,bell,audible bell,visible bell,visual bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad,numpad,activation gestures,gestures,sticky,modifier keys,modifier,locking keys,приступ,приступачност,глув,оштећен,слух,губитак,звоно,чујно,видно,тастатура,тастери,лепљиви,одскачући,спори,нумеричка,активација,гестови,лепљив,модификаторски,тастери,закључавање X-KDE-Keywords[sr@ijekavian]=access,accessibility,deaf,impaired,hearing,hearing loss,bell,audible bell,visible bell,visual bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad,numpad,activation gestures,gestures,sticky,modifier keys,modifier,locking keys,приступ,приступачност,глув,оштећен,слух,губитак,звоно,чујно,видно,тастатура,тастери,лепљиви,одскачући,спори,нумеричка,активација,гестови,лепљив,модификаторски,тастери,закључавање X-KDE-Keywords[sr@ijekavianlatin]=access,accessibility,deaf,impaired,hearing,hearing loss,bell,audible bell,visible bell,visual bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad,numpad,activation gestures,gestures,sticky,modifier keys,modifier,locking keys,pristup,pristupačnost,gluv,oštećen,sluh,gubitak,zvono,čujno,vidno,tastatura,tasteri,lepljivi,odskačući,spori,numerička,aktivacija,gestovi,lepljiv,modifikatorski,tasteri,zaključavanje X-KDE-Keywords[sr@latin]=access,accessibility,deaf,impaired,hearing,hearing loss,bell,audible bell,visible bell,visual bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad,numpad,activation gestures,gestures,sticky,modifier keys,modifier,locking keys,pristup,pristupačnost,gluv,oštećen,sluh,gubitak,zvono,čujno,vidno,tastatura,tasteri,lepljivi,odskačući,spori,numerička,aktivacija,gestovi,lepljiv,modifikatorski,tasteri,zaključavanje X-KDE-Keywords[sv]=åtkomst,handikappstöd,döva,funktionshindrade,hörsel,hörselförlust,summer,hörbar summer,visuellt alarm,Tangentbord,tangenter,klistriga tangenter,studsande tangenter,långsamma tangenter,musnavigering,numeriskt tangentbord,aktiveringsgester,gester,klistrig,väljartangenter,väljare,låstangenter X-KDE-Keywords[uk]=access,accessibility,deaf,impaired,hearing,hearing loss,bell,audible bell,visible bell,visual bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad,numpad,activation gestures,gestures,sticky,modifier keys,modifier,locking keys,доступ,доступність,спеціальні можливості,глухий,слух,враження,вади,звук,сповіщення,видиме сповіщення,візуальне сповіщення,видимий дзвінок,візуальний дзвінок,клавіатура,клавіші,клавіша,липкі клавіші,утримування,повільні клавіші,миша,навігація,цифри,цифровий блок,слух,втрата слуху,жести активування,жести,липка,липкі клавіші,клавіші-модифікатори,модифікатори,клавіші фіксування,фіксування,блокування X-KDE-Keywords[x-test]=xxaccessxx,xxaccessibilityxx,xxdeafxx,xximpairedxx,xxhearingxx,xxhearing lossxx,xxbellxx,xxaudible bellxx,xxvisible bellxx,xxvisual bellxx,xxKeyboardxx,xxkeysxx,xxsticky keysxx,xxbounce keysxx,xxslow keysxx,xxmouse navigationxx,xxnum padxx,xxnumpadxx,xxactivation gesturesxx,xxgesturesxx,xxstickyxx,xxmodifier keysxx,xxmodifierxx,xxlocking keysxx X-KDE-Keywords[zh_CN]=access,accessibility,deaf,impaired,hearing,hearing loss,bell,audible bell,visible bell,visual bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad,numpad,activation gestures,gestures,sticky,modifier keys,modifier,locking keys,通用辅助,聋,听力受损,响铃,视觉铃声,键盘,按键,粘滞键,鼠标导航,数字键盘,手势,修饰键,锁定键 X-KDE-Keywords[zh_TW]=access,accessibility,deaf,impaired,hearing,hearing loss,bell,audible bell,visible bell,visual bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad,numpad,activation gestures,gestures,sticky,modifier keys,modifier,locking keys Categories=Qt;KDE;X-KDE-settings-accessibility;