Nie można pisać polskich liter – jak okiełznać ustawienia języka i niesforne skróty klawiszowe

Problem z wprowadzaniem polskich znaków w środowisku Windows jest dość powszechny. Tak to już niestety jest, że nasz język ojczysty nie może obyć się bez charakterystycznych dla niego znaków diakrytycznych. Mimo tego, że w dobie błyskawicznych komunikatorów pęd komunikacji zmusza nas niekiedy do galopowania po klawiszach i ułatwiania sobie sprawy poprzez pomijanie ogonków i innych fanaberii polskiego języka to jednak nadal w dobrym tonie i przez szacunek dla rozmówcy jest pisanie poprawnie po polsku. Zresztą o tym, że ogonki pełnią czasem kluczową rolę możecie szybko sprawdzić empirycznie pisząc komuś, że „robicie mu laske”, pamiętajcie, zawsze trzeba być czujnym ;). Niestety, niekiedy mimo najszczerszych chęci Windows nie pozwala nam na pisanie poprawną polszczyzną. Zanim jednak zaczniecie winić za to ukrytą opcję antypolską zaszytą w trzewiach systemu operacyjnego sprawdźmy co jest prawdziwą przyczyną takiego stanu rzeczy.

Dlaczego nie mogę pisać po polsku?

Najczęściej winowajcą są ustawienia regionalne i wprowadzanego języka. Najprawdopodobniej będziecie mieli zainstalowany język polski i angielski. Żeby nie było jednak zbyt prosto, to języków polskich są dwa. Polski programisty (jedyny słuszny :)) i Polski (214). 214-tka to taki zabawny wymysł, który zmusza producentów klawiatur do nadrukowywania znaków diakrytycznych na „kapslach”, a klientów do kupowania naklejek, aby móc potem jej normalnie używać ;P. Jeżeli chcecie mieć możliwość wstukiwania polskich literek, to musicie ustawić sobie odpowiedni. To jeszcze nie koniec. Tak się złożyło, że język możemy zmienić sobie skrótem klawiszowym. Domyślnie jest to Shift + lewy Alt i najczęściej zdarza się go przypadkowo wcisnąć w najmniej odpowiednim momencie. Chęć przełączania języka nie jest jednak często spotykana dla przeważającej liczby użytkowników, więc całkiem bezpiecznie możecie po prostu wyłączyć ten skrót lub usunąć wszystkie inne zainstalowane języki, aby nie wchodziły wam w drogę. Ustawienia regionalne znajdziecie w panelu sterowania. Możecie sobie wylkikać

skrot klawiszowy3

lub uruchomić szybciej

Win+R > intl.cpl > enter

Aby pozbyć się skrótu wchodzi w zaawansowane ustawienia języka i wyłączamy skrót

skrot klawiszowy2

Usunąć inne języki możemy na zakładce „Ogólne”
skrot klawiszowy

Nie działa jedna polska litera?

Odrębnym jest przypadek gdy część literek wam działa, a część albo po prostu nie, albo powoduje wykonanie jakichś dziwnych działań. Wtedy najpewniej winowajcą jest skrót klawiszowy. Może to być skrót, który skonfigurowany jest w aktualnie aktywnej aplikacji lub globalnie (w systemie lub innej aplikacji działającej w tle). Potwierdzenie, któregoś ze scenariuszy jest proste. Wystarczy odpalić systemowy notatnik i tam wypróbować niedziałające polskie litery. To cudowne narzędzie jest gołe ze wszystkich nowomodnych wodotrysków i możecie mu zaufać, że w żaden sposób nie będzie ingerował we wpisywany tekst. Jeżeli polskie litery nadal nie działają to trzeba będzie poszukać głębiej, jeżeli wyświetlają się tak jak tego oczekujecie to znaczy, że aplikacja której używaliście wcześniej jest winowajcą i trzeba w jej ustawieniach znaleźć opcje odpowiedzialne za skróty klawiszowe i zrobić z nimi porządek.

Jak odnaleźć przeszkadzający skrót?

Jeżeli sponsorem zamieszania z „ogonkami” jest system lub inny program działający podstępnie z ukrycia (w notatniku tez się nie wyświetlają), to sprawa jest nieco bardziej skomplikowana. Od czego mamy jednak pomysłowych programistów :). Do wyświetlenia wszystkich aktywnych skrótów klawiszowych posłużyć nam może aplikacja. Windows Hotkey Explorer jest darmowym programem, który szybko wyświetli wam aktywne skróty oraz aplikacje, które je utworzyły. Na liście wystarczy odnaleźć interesujący nas skrót, który zazwyczaj służy nam do wpisania polskiego znaku, a następnie rozprawić się z aplikacją, która powołała go do życia. Przykładowo, nie działa litera „ą”, po sprawdzeniu okazało się, że to Keepass używał skrótu ctrl+lewy alt+A (co równoznaczne jest z prawym Altem)

skrot klawiszowy4

Przeczytaj także...

6 komentarzy

  1. Zdzich napisał(a):

    Z mojego doświadczenia:
    1) najczęściej „polskie klawisze” są zabierane przez oprogramowanie grafiki Intel lub ATI/AMD CCC – wystarczy wejść w konfigurację tego softu (z ikony widocznej w system tray lub z panelu sterowania), odnaleźć tam sekcje związaną z „klawisze” lub „keys” i wyłączyć ją.
    2) Dodatkowo: „polskie klawisze” znikają też od czasu do czasu na systemie który hostuje jakieś maszyny wirtualne np. Virtual PC (w szczególności: XP mode) – wówczas pomaga przekliknięcie się do takiej maszyny wirtualnej po czym z powrotem na pulpit systemu fizycznego, choć czasami i to może nie pomagać, a wówczas przydaje się możliwość szybkiego „zresetowania” języka klawiatury przez przekliknięcie się z ikony języka w system tray’u (lub wspomnianą w artykule kombinacją klawiszy) na chwilę na język EN po czym z powrotem na język PL i „wracają polskie klawisze”.

  2. Łukasz Skalikow napisał(a):

    U mnie Keepass. Zawsze.

  3. Artur Zgadzaj napisał(a):

    Tak, to ciągły problem i zaszłość przy przejściu z DOS do Windows i nie uzgodnione od razu zasady z Microsoft ze strony polskiego środowiska informatycznego. Brak reakcji polskiego środowiska w tamtym czasie spowodował narzucenie wtedy przez Microsoft swojej koncepcji i wyszło, jak wyszło, a teraz trudno to odkręcić. Stara sprawa ciągnie się do dzisiaj.

    Jeśli chodzi o skrypty Batch i korzystanie z plików tekstowych i wiersza polecenia CMD, to można użyć skryptu / funkcji Zamien_polskie_litery, który opracowałem na własne potrzeby. Najprostsze jego użycie to:

    CALL Zamien_polskie_litery /TXT zmienna

    W „zmienna” zawieramy tekst z polskimi literami do zamiany ze środowiska plików tekstowych TXT edytowanych Notatnikiem (w tym plików Batch BAT) do prawidłowego wyświetlania tego w wierszu polecenia CMD, czyli jest to zamiana ze środowiska TXT na CMD. Resztę przekaże sam skrypt (funkcja), którą załączam poniżej. Można też po dalsze szczegóły wejść na stronę http://www.widzenia.com/info (login: info hasło: computer)

    Pozdrawiam Artur Zgadzaj

    ——————————————-

    @echo off

    :Zamien_polskie_litery – Parametr pierwszy określa typ zamiany: /TXT lub /CMD lub /ANGT lub /ANGC
    REM Parametry kolejne to nazwy zmiennych: nazwa_zmiennej_1 [ nazwa_zmiennej_2 … nazwa_zmiennej_60 ]
    REM Podawać tylko nazwy zmiennych, a nie ich wartości, zaś rezultat zamiany uzyskujemy do tej samej zmiennej
    REM /TXT – zamienia z formatu plików tekstowych TXT, w tym Batch (BAT) >>> na tryb poleceń CMD
    REM /CMD – zamienia z trybu poleceń CMD >>> na format plików tekstowych TXT, w tym Batch (BAT)
    REM Uwaga: trzeba najpierw wczytać wynik polecenia CMD do zmiennej i dopiero wtedy podać nazwę tej zmiennej
    REM /ANGT – usuwanie polskich znaków z trybu tekstowego TXT, czyli zamiana na odpowiedniki angielskie (ANG)
    REM /ANGC – usuwanie polskich znaków z trybu poleceń CMD, czyli zamiana na odpowiedniki angielskie (ANG)
    REM Ver.1.4 Opracowanie: Artur Zgadzaj http://www.widzenia.com/info (Login: info Hasło: computer)

    Set /A LICZ_PL=%RANDOM% * 1000 / 32768 + 1
    Setlocal
    Set „Rozwijanie=!”
    Setlocal EnableDelayedExpansion

    Set CMD=165,198,202,163,209,211,140,143,175,185,230,234,179,241,243,156,159,191
    Set TXT=164,143,168,157,227,224,151,141,189,165,134,169,136,228,162,152,171,190
    Set ANG=65,67,69,76,78,79,83,90,90,97,99,101,108,110,111,115,122,122

    Set „Zestaw_1=”
    If /I „%~1″==”/TXT” Set Zestaw_1=%TXT%&Set Zestaw_2=%CMD%&shift
    If /I „%~1″==”/CMD” Set Zestaw_1=%CMD%&Set Zestaw_2=%TXT%&shift
    If /I „%~1″==”/ANGT” Set Zestaw_1=%ANG%&Set Zestaw_2=%CMD%&shift
    If /I „%~1″==”/ANGC” Set Zestaw_1=%ANG%&Set Zestaw_2=%TXT%&shift
    If „%Zestaw_1%”==”” (echo.&echo Funkcja: Zamien_polskie_litery&echo.&echo Bledny pierwszy parametr /CMD lub /TXT lub /ANGT lub /ANGC&TIMEOUT /T 15>nul&exit /b)
    If „%~1″==”” (echo.&echo Funkcja: Zamien_polskie_litery&echo.&echo Brak nazwy pierwszej zmiennej zawierajacej tekst&TIMEOUT /T 15>nul&exit /b)

    If not Exist CHARLIB.BAT (For /F %%I IN („CHARLIB.BAT”) DO (If „%%~$PATH:I”==”” echo.&echo Funkcja: Zamien_polskie_litery&echo.&echo Brak CHARLIB.BAT, znajdz w Google lub na:&echo https://sites.google.com/site/dbenhamfiles&echo.&TIMEOUT /T 60>nul&exit /b))
    Call CHARLIB initLib

    If Exist „%TEMP%%LICZ_PL%_Wyniki_PL.BAT” Del „%TEMP%%LICZ_PL%_Wyniki_PL.BAT”

    :nastepna_zmienna
    If „%~1″==”” Goto koniec_PL
    If „!%~1!”==”” (shift&If not „%~1″==”” Goto nastepna_zmienna)
    Set /A L=0&Set Wynik=

    Call:znaczniki_transformuj „%~1”

    :kolejny_znak
    Set Y=!str:~%L%,1!&If „!Y!”==”” Goto pomin_kolejny_znak

    Call CHARLIB asc str !L! Kod>nul

    If „%Kod%”==”94” Set „Y=”

    For /F „tokens=1-18 delims=,” %%A IN („!Zestaw_2!”) DO (
    For /F „tokens=1-18 delims=,” %%a IN („!Zestaw_1!”) DO (
    If %Kod%==%%A Call CHARLIB chr %%a Y
    If %Kod%==%%B Call CHARLIB chr %%b Y
    If %Kod%==%%C Call CHARLIB chr %%c Y
    If %Kod%==%%D Call CHARLIB chr %%d Y
    If %Kod%==%%E Call CHARLIB chr %%e Y
    If %Kod%==%%F Call CHARLIB chr %%f Y
    If %Kod%==%%G Call CHARLIB chr %%g Y
    If %Kod%==%%H Call CHARLIB chr %%h Y
    If %Kod%==%%I Call CHARLIB chr %%i Y
    If %Kod%==%%J Call CHARLIB chr %%j Y
    If %Kod%==%%K Call CHARLIB chr %%k Y
    If %Kod%==%%L Call CHARLIB chr %%l Y
    If %Kod%==%%M Call CHARLIB chr %%m Y
    If %Kod%==%%N Call CHARLIB chr %%n Y
    If %Kod%==%%O Call CHARLIB chr %%o Y
    If %Kod%==%%P Call CHARLIB chr %%p Y
    If %Kod%==%%Q Call CHARLIB chr %%q Y
    If %Kod%==%%R Call CHARLIB chr %%r Y
    ))

    Set Wynik=!Wynik!!Y!&Set /A L+=1&If not „!str:~%L%,1!”==”” Goto kolejny_znak

    :pomin_kolejny_znak
    Call:znaczniki_transformuj_wynik Wynik „%~1”

    shift&If not „%~1″==”” Goto nastepna_zmienna

    :koniec_PL
    Endlocal
    Endlocal
    If Exist „%TEMP%%LICZ_PL%_Wyniki_PL.BAT” (Call „%TEMP%%LICZ_PL%_Wyniki_PL.BAT”) else (echo.&echo Funkcja: Zamien_polskie_litery&echo.&echo Blad wykonania, nie mozna uzyskac wynikow&TIMEOUT /T 60>nul&exit /b)
    If Exist „%TEMP%%LICZ_PL%_*.BAT” Del „%TEMP%%LICZ_PL%_*.BAT”
    Set „LICZ_PL=”
    Exit /b

    :znaczniki_transformuj
    Setlocal
    Setlocal DisableDelayedExpansion
    echo SET „str=%%%~1%%”>”%TEMP%%LICZ_PL%_Zamien_znaczniki.bat”
    Call „%TEMP%%LICZ_PL%_Zamien_znaczniki.bat”
    Set „str=%str:^^^!=!%”
    Set „str=%str:^^!=!%”
    Set „str=%str:^!=!%”
    Set „str=%str:!=^^^^^!%”
    echo SET „str=%str%”>”%TEMP%%LICZ_PL%_Zamien_znaczniki.bat”
    Endlocal
    Endlocal
    Call „%TEMP%%LICZ_PL%_Zamien_znaczniki.bat”
    Goto:eof

    :znaczniki_transformuj_wynik
    Setlocal
    Setlocal DisableDelayedExpansion
    echo SET „str=%%%~1%%”>”%TEMP%%LICZ_PL%_Zamien_znaczniki.bat”
    Call „%TEMP%%LICZ_PL%_Zamien_znaczniki.bat”
    Set „str=%str:^^!=!%”
    Set „str=%str:^!=!%”
    If not defined Rozwijanie (
    Set „str=%str:(=^^^(%”
    Set „str=%str:)=^^^)%”
    Set „str=%str:!=^^^!%”
    ) else (
    Set „str=%str:(=^(%”
    Set „str=%str:)=^)%”
    Set „str=%str:!=^!%”)
    echo SET „%~2=%str%”>>”%TEMP%%LICZ_PL%_Wyniki_PL.BAT”
    Exit /b

  4. Marek Terlecki napisał(a):

    Pomocny artykuł, dzięki niemu odzyskałem literę „ę”. Dzięki Darku

  5. Janusz Dorożyński napisał(a):

    B. dobry tekst. Jedynie programu Windows Hotkey Explorer bym nie polecał. U mnie (W’10) przeskanował wszystkie skróty uruchamiając je, ale przypisania do KeePassa (mam go) nie wykrył. I na marginesie – co do trybu CMD (o czym pisze A. Zgadzaj), to sprawa jest prosta (jak się już to wie – ja odkryłem to po latach przypadkiem). Skrypty wsadowe Windows należy pisać w kodowaniu OEM 852 – litery polskie oczywiście wchodzą z AlrGr i poprawnie wyświetlają się (np. przez echo) na konsoli. Nie ma potrzeby ich konwertowania na łacińskie (angielskie) odpowiedniki. Jest tylko mały problem z ustawieniem dla pliku skryptu kodowania OEM 852 – Notatnik nie daje takie możliwości, ale jest Notepad++ – wchodzimy Format->Zestaw znaków->Środkowoeuropejskie i tu mamy OEM 852 (też).

    Janusz „Ency” Dorożyński

  6. storem napisał(a):

    shift + alt i zadziałało u mnie…ćżął….

Dodaj komentarz