WCAG 2.1.4 · A Seviyesi

Klavye Kısayolları

Tek bir harf, rakam veya sembolle çalışan kısayolların kapatılabilmesini, değiştirilebilmesini ya da yalnızca ilgili bileşen odaktayken etkin olmasını ister.

Kısaca

Bazı siteler hız kazandırmak için tek tuşla çalışan kısayollar sunar: "/" arama kutusunu açar, "s" kaydeder, "k" bir sonraki öğeye geçer. Bu kısayollar, sesle yazan veya yanlışlıkla tuşa basabilen kullanıcılar için istenmeyen işlemlere yol açabilir.

Bu kriter, yalnızca tek bir karakterle (harf, rakam, noktalama veya sembol) tetiklenen kısayollar için üç yoldan en az birini ister: kısayolun kapatılabilmesi, Ctrl veya Alt gibi bir değiştirici tuşla yeniden atanabilmesi, ya da yalnızca ilgili bileşen odaktayken çalışması.

Neleri kapsar?

  • Tek karakterli kısayollar: Değiştirici tuş gerektirmeden tek bir harf, rakam, noktalama işareti veya sembolle çalışan komutlar.
  • Kapatma seçeneği: Kullanıcının bu kısayolları tümden devre dışı bırakabilmesi.
  • Yeniden atama: Kısayolun Ctrl, Alt, Command gibi bir tuşla birlikte çalışacak şekilde değiştirilebilmesi.
  • Odakla sınırlama: Kısayolun yalnızca ilgili bileşen (liste kutusu, oynatıcı gibi) odaktayken etkin olması.
  • Kapsam dışı: Ctrl+S gibi değiştirici tuş içeren kısayollar ve Escape, F tuşları, yön tuşları gibi karakter üretmeyen tuşlar bu kriterin kapsamında değildir.

Kimleri etkiler?

Ses komutuyla bilgisayar kullanan kişiler en çok etkilenen gruptur: söyledikleri her kelime bir karakter dizisi olarak sayfaya iletilir ve tek tuşlu kısayolları art arda tetikleyebilir. El titremesi veya kas kontrolü güçlüğü olan kullanıcılar yanlışlıkla tuşlara basabilir. Ekran okuyucu kullanıcıları da tek tuşlu gezinme komutları kullandıkları için sayfanın kısayollarıyla çakışma yaşayabilir.

Kontrol listesinde

Bu kriter, Bakanlığın A Seviyesi Kontrol Listesi'nde 71–72 numaralı soruları kapsar. Yönlendirme soruları sayfada ilgili içerik olup olmadığını belirler; yoksa liste sizi sonraki soruya geçirir. Aşağıdaki açıklamalar sorulardan alıntı değil, özetidir. Soruların tam metni için resmî listeye bakın.

BK 12 kapsamındaki sorular
SoruTürüNe kontrol eder?
71YönlendirmeSayfada tek bir harf, rakam, noktalama işareti veya sembolle tetiklenen kısayol olup olmadığını sorar.
72★ ZorunluBu kısayollar için kapatma, değiştirici tuşla yeniden atama veya yalnızca ilgili bileşen odaktayken çalışma seçeneklerinden en az birinin sağlanıp sağlanmadığını kontrol eder.

Resmî kontrol listesini indirin (PDF), yeni sekmede açılır

Web için kod örnekleri

1. Sayfa genelinde tek tuşlu kısayol

Belge düzeyinde dinlenen ve değiştirici tuş istemeyen bir kısayol, kullanıcı başka bir şey yazarken veya sesle komut verirken tetiklenebilir.

Hatalı
document.addEventListener("keydown", (e) => {
  if (e.key === "s") {
    taslagiKaydet();
  }
});
Doğru
document.addEventListener("keydown", (e) => {
  // Değiştirici tuş gerektirir (Ctrl+S / Cmd+S)
  if ((e.ctrlKey || e.metaKey) && e.key.toLowerCase() === "s") {
    e.preventDefault();
    taslagiKaydet();
  }
});

2. Kısayolları kapatma ayarı

Tek tuşlu kısayolları korumak istiyorsanız, kullanıcıya bunları kapatma seçeneği sunun. Tercih tarayıcıda saklanabilir.

<input type="checkbox" id="kisayollar" checked>
<label for="kisayollar">Tek tuşlu klavye kısayollarını kullan</label>

<script>
  const kutu = document.getElementById("kisayollar");
  try {
    kutu.checked = localStorage.getItem("kisayollar") !== "kapali";
  } catch {}
  kutu.addEventListener("change", () => {
    try {
      localStorage.setItem("kisayollar", kutu.checked ? "acik" : "kapali");
    } catch {}
  });

  document.addEventListener("keydown", (e) => {
    if (!kutu.checked) return;
    if (e.ctrlKey || e.metaKey || e.altKey) return;
    if (e.target.closest("input, textarea, select, [contenteditable]")) return;
    if (e.key === "/") {
      e.preventDefault();
      document.getElementById("arama").focus();
    }
  });
</script>

3. Yalnızca odaktayken çalışan kısayol

Bir medya oynatıcısında Space veya "k" ile duraklatma, olay oynatıcının kendisine bağlanırsa yalnızca oynatıcı odaktayken çalışır ve kriteri karşılar.

Hatalı
document.addEventListener("keydown", (e) => {
  if (e.key === "k") oynatDuraklat();
});
Doğru
const oynatici = document.getElementById("oynatici");
// oynatici: tabindex="0" ve uygun rol/etiket taşıyan kapsayıcı
oynatici.addEventListener("keydown", (e) => {
  if (e.key === "k") oynatDuraklat();
});

4. Kısayolu yeniden atama

Kullanıcının bir kısayolu değiştirici tuşla birlikte kullanılacak şekilde değiştirmesine izin vermek de kriteri karşılar.

<fieldset>
  <legend>"Yeni başvuru" kısayolu</legend>
  <input type="radio" id="tek" name="yeni-kisayol" value="n" checked>
  <label for="tek">N</label>
  <input type="radio" id="alt" name="yeni-kisayol" value="alt+n">
  <label for="alt">Alt + N</label>
</fieldset>

<script>
  document.addEventListener("keydown", (e) => {
    if (e.target.closest("input, textarea, select, [contenteditable]")) return;
    const secim = document.querySelector('[name="yeni-kisayol"]:checked').value;
    const tus = e.key.toLowerCase() === "n";
    const eslesti = secim === "alt+n" ? (e.altKey && tus) : (!e.altKey && !e.ctrlKey && !e.metaKey && tus);
    if (eslesti) yeniBasvuruAc();
  });
</script>

Not: Alt ile birlikte bazı klavye düzenlerinde e.key farklı bir karakter döndürebilir. Gerçek uygulamada e.code (örneğin "KeyN") kullanmak daha güvenilirdir.

5. Kısayolları belgelemek

Kriterin zorunlu bir parçası olmasa da kısayolların bir yardım sayfasında listelenmesi ve ayarın nerede olduğunun belirtilmesi kullanıcıların işini kolaylaştırır.

<section aria-labelledby="kisayol-baslik">
  <h2 id="kisayol-baslik">Klavye kısayolları</h2>
  <p>Tek tuşlu kısayolları <a href="/ayarlar#kisayollar">Ayarlar</a>
     sayfasından kapatabilirsiniz.</p>
  <dl>
    <dt><kbd>/</kbd></dt><dd>Arama kutusuna git</dd>
    <dt><kbd>Ctrl</kbd> + <kbd>S</kbd></dt><dd>Taslağı kaydet</dd>
  </dl>
</section>

Mobil için kod örnekleri

Mobil uygulamalarda bu kriter harici klavye bağlandığında geçerlidir. Kısayolları değiştirici tuşla tanımlamak en basit çözümdür.

iOS (SwiftUI)

import SwiftUI

struct TaslakEkrani: View {
    @State private var metin = ""

    var body: some View {
        VStack {
            TextEditor(text: $metin)
                .accessibilityLabel("Başvuru açıklaması")

            Button("Taslağı kaydet") { kaydet() }
                // Harici klavyede Command + S; tek karakterli değildir.
                .keyboardShortcut("s", modifiers: .command)
        }
    }

    private func kaydet() { /* taslağı kaydet */ }
}

Android (Jetpack Compose)

import androidx.compose.foundation.layout.Column
import androidx.compose.material3.*
import androidx.compose.runtime.*
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.key.*

@Composable
fun TaslakEkrani(onKaydet: () -> Unit) {
    var metin by remember { mutableStateOf("") }

    Column(
        Modifier.onPreviewKeyEvent { olay ->
            // Yalnızca Ctrl + S ile çalışır; tek başına "S" metne yazılır.
            if (olay.type == KeyEventType.KeyDown &&
                olay.isCtrlPressed && olay.key == Key.S) {
                onKaydet(); true
            } else false
        }
    ) {
        OutlinedTextField(
            value = metin,
            onValueChange = { metin = it },
            label = { Text("Başvuru açıklaması") }
        )
        Button(onClick = onKaydet) { Text("Taslağı kaydet") }
    }
}

Nasıl test edilir?

  • Kısayolları bulun: Yardım sayfalarına ve belgelere bakın; geliştiricilerle konuşun. Ardından odak bir metin alanında değilken klavyede harflere, rakamlara ve sembollere tek tek basarak beklenmedik işlem olup olmadığını gözlemleyin.
  • Çözüm yolunu doğrulayın: Bulduğunuz her tek tuşlu kısayol için kapatma ayarı, yeniden atama seçeneği veya odakla sınırlama mevcut ve çalışıyor mu?
  • Sesle yazma ile deneyin: Ses komutu yazılımıyla sayfaya birkaç cümle söyleyin; bir işlem yanlışlıkla tetikleniyor mu?
  • Otomatik araçların sınırı: Otomatik araçlar accesskey özniteliğini bulabilir, ancak betikle tanımlanmış kısayolları güvenilir biçimde tespit edemez. Bu kriter elle ve kod incelemesiyle test edilmelidir.

Sık yapılan hatalar

  • Belge düzeyinde tek tuşlu dinleyiciler: Özellikle hazır kütüphanelerden gelen kısayollar fark edilmeden sayfaya eklenir.
  • Metin alanlarını hariç tutmamak: Kullanıcı yazarken harfler kısayolu tetikler.
  • Kısayolları belgelememek: Kapatma ayarı olsa bile kullanıcı nerede olduğunu bilmiyorsa işe yaramaz.
  • Ekran okuyucu komutlarıyla çakışma: Ekran okuyucuların tek tuşlu gezinme komutları (örneğin "h" ile başlığa geçme) sayfa kısayollarıyla çakışabilir.

Kaynaklar

Kontrol listesi sürümü: V2.2.30.01 (2026). Bu sayfa bilgilendirme amaçlıdır; bağlayıcı metin için Aile ve Sosyal Hizmetler Bakanlığı'nın resmî kontrol listesini esas alın.

Sitenizde bu kriter nasıl görünüyor?

Ücretsiz tarama, bu kriterdeki sorunları ve diğerlerini Bakanlığın A Seviyesi Kontrol Listesi esas alınarak listeler.

Sitemi ücretsiz tara