Control.ModifierKeys , problem z altem

0

Mam taki kawałek kodu:

if (Keys.Shift == Control.ModifierKeys)
            {
                shift = true;
            }

            if (Keys.Alt == Control.ModifierKeys)
            {
                switch (keycode)
                {
                    case Keys.A:
                    case Keys.S:
                    case Keys.E:
                    case Keys.Z:
                    case Keys.X:
                    case Keys.L:
                    case Keys.N:
                    case Keys.O:
                    case Keys.C:
                        return polskie[keycode].ToString();
                }

            }

Dla shift'a działa dobrze, nie mam problemu z podmianą znaków. Problem pojawia się przy klawiszu alt, muszę wiedzieć czy ktoś go wcisnął, żeby zmienić literę na polską. Siedzę z tym tyle czasu i nie mogę wymyślić o co chodzi...

0

Problem pojawia się przy klawiszu alt, muszę wiedzieć czy ktoś go wcisnął, żeby zmienić literę na polską.

Dlaczego wynajdujesz koło na nowo, zamiast korzystać z systemowego układu klawiatury?

0

Hmm, co masz dokładnie na myśli?

0

Po co w ogóle piszesz ten kod?
Przecież wystarczy „nic nie robić”, i polskie litery działają...

0

Chcę przejąć znaki pisane na klawiaturze a nie znaki pisane w programie

1

Piszesz keyloggera?

0

Nie nazwałbym tego keyloggerem, z resztą byłoby to niezgodne z regulaminem? W ramach nauki i ćwiczeń próbuję rozwiązać ten problem.

0

Problem rozwiązałem sam.

Alt Gr, którego używamy przy wpisywaniu polskich znaków to tak naprawę klawisz control + alt

Dlatego porównanie:

(Keys.Alt == Control.ModifierKeys)

nie działało tak jak należało

Po tym odkryciu zmieniłem kod na:

 ((Keys.Alt | Keys.Control) == Control.ModifierKeys)

Wszystko działa :) ale bez rozróżniania wielkości liter, więc dodałem kolejny warunek

 ((Keys.Alt | Keys.Control | Keys.Shift) == Control.ModifierKeys)

Powyższy dla dużych znaków altr gr + shift :)

0
fifi209 napisał(a):

Alt Gr, którego używamy przy wpisywaniu polskich znaków to tak naprawę klawisz control + alt

To jest chyba oczywista oczywistość dla użytkownika systemu Windows.

0

Dwóch poprzedników jakoś na to nie wpadło, więc chyba nie taka oczywistość :) Nie mniej jednak, problem rozwiązałem, szkoda że nie znalazłem pomocy wcześniej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1