[ sensei @ 13.11.2006. 14:38 ] @
Za seminarski sam dobio zadatak da iskodiram program koji ce kada se klikne na njega "promjeniti raspored slova na tastaturi". Ja sam to zamislio tako sto cu iskodirati dio koji ce svaki ASCI broj uvecati za 1-2 ili vise cime pritiskom na a necemo kao izlaz dobiti a nego neki drugi znak, zavisno od toga koliko se bude uvecavao ili smanjivao ASCI broj.
Eh sada buni me kako da to postavim kao aktivni Keyboard leyout, dakle kada pokrenem taj program da se on postavi kao aktivan. S cim ga trebam povezati i kako?
Thx.
[ sensei @ 14.11.2006. 08:57 ] @
Itko
[ savkic @ 14.11.2006. 09:09 ] @
I ta promena treba da bude aktivna u svim programima na sistemu ili samo u tvom? Ako je u svim, onda moraš pisati ili drajver ili hookovati pritiske na tastaturu, pogledaj SetWindowsHookEx, nedavno je bilo to pitanje pa možeš potražiti.
[ sensei @ 15.11.2006. 09:00 ] @
trebala bi biti aktivna u svim programima.
Osim pisanja drajvera ili hookovanja, ima li neki drugi nacin?
[ X Files @ 15.11.2006. 11:41 ] @
Ja ipak savetujem da ponovo pitaš profesora na šta je mislio, da li na
postavljanje neke već postojeće tastature ili pravljenje neke proizvoljne.

Takođe pitaj da li se to odnosi samo na tvoj program, ili na bilo koji program.

Sve što mi je poznato o tastaturama je sledeće:

Promena aktivne tastature se ostvaruje API pozivom:
LoadKeyboardLayout()

Identifikator aktivne tastature se dobija API pozivom:
GetKeyboardLayoutName()
Primer:
Code:

char KLID[KL_NAMELENGTH+1]  = {0}; 
GetKeyboardLayoutName( KLID ); 
// upotrebi string KLID 


Konstante od interesa (za LoadKeyboardLayout) možeš pogledati ovde:
http://msdn.microsoft.com/libr...lt.asp?url=/library/en-us/intl...

Koji ID broj je u uoptrebi aktivne kodne strane, možeš pogledati ovako:
Code:

// by kiklop74
std::string GetSysLanguage(void)

   char buffer[5] = {}; 
   int ret = ::GetLocaleInfo( LOCALE_SYSTEM_DEFAULT, LOCALE_IDEFAULTLANGUAGE , buffer, 5 ); 
   return std::string( buffer ); 
}

...ili brljanjem po Registry-ju:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Language\Default
Name: Default, Type: REG_SZ, Data: [ovo treba pročitati]

Aktivna kodna strana se može dobiti API pozivom:
GetACP()

A što se tiče "custom" rasporeda, zaista ne znam: Pogledaj ovde, ako je verovati izvoru:
http://www.microsoft.com/globa...rIntl/columns/003/default.mspx

"There is no way provided by Windows to create your own custom keyboard layouts.
This is a feature that many people have asked for, and people at Microsoft are
very aware of the interest in this area."


E sad, to i dalje ne znači da ne može. U elektronskom svetu, sve se svodi na to da
se neki binarni fajl modifikuje, pa pretpostavljam da je ipak izvodljivo. Postojao je
nekad neki takozvani "Jankov maper", doduše za stare sisteme, pa probaj Google-om da
vidiš o čemu se radi.