#!/usr/bin/python # -*- coding: iso-8859-2 -*- import pygame from pygame.locals import * trtable = {K_1: [u"+",u"1"], K_2: [u"ì",u"2"], K_3: [u"¹",u"3"], K_4: [u"è",u"4"], K_5: [u"ø",u"5"], K_6: [u"¾",u"6"],\ K_7: [u"ý",u"7"], K_8: [u"á",u"8"], K_9: [u"í",u"9"], K_0: [u"é",u"0"], K_MINUS: [u"=",u"%"], K_LEFTBRACKET: [u"ú",u"/"], \ K_RIGHTBRACKET: [u")",u"("], K_SEMICOLON: [u"ù",u'"'], K_QUOTE: [u"§",u"!"], K_COMMA: [u",",u"?"], K_PERIOD: [u".",u":"], K_SLASH: [u"-",u"_"], K_z: [u"y",u"Y"], K_y:[u"z",u"Z"] } hacky = {K_e: [u"ì",u"Ì"], K_r: [u"ø",u"Ø"], K_t: [u"»",u"«"], K_s: [u"¹",u"©"], K_d: [u"ï",u"Ï"], \ K_z: [u"¾",u"®"], K_c: [u"è",u"È"], K_n: [u"ò",u"Ò"]} carky = {K_e: [u"é",u"É"], K_y: [u"ý",u"Ý"], K_u: [u"ú",u"Ú"], K_i: [u"í",u"Í"], K_o: [u"ó",u"Ó"], \ K_a: [u"á",u"Á"]} krouzky = {K_u: [u"ù",u"Ù"]} numkeyb = {K_KP0: "0", K_KP1: "1", K_KP2: "2", K_KP3: "3", K_KP4: "4", K_KP5: "5", K_KP6: "6", K_KP7: "7", \ K_KP8: "8", K_KP9: "9", K_KP_PERIOD: ".", K_KP_DIVIDE: "/", K_KP_MULTIPLY: "/", K_KP_MINUS: "-",\ K_KP_PLUS: "+", K_KP_EQUALS: "="} hacek = carka = krouzek = False def translateEvent(event): global hacek, carka, krouzek newMod = event.mod if event.type == KEYDOWN: # osetrime numerickou klavesnici - na Win nefunguje... if event.mod & KMOD_NUM and event.key in numkeyb: newKey = numkeyb[event.key] elif (event.key == K_v and event.mod & KMOD_RALT) or\ (event.key == K_v and event.mod & KMOD_LALT and event.mod & KMOD_CTRL): # zavinac newKey = u"@" newMod = 0 elif event.key in trtable.keys(): # osetrime klasicke ceske klavesy if event.mod & KMOD_SHIFT or (event.mod & KMOD_CAPS and not event.mod & KMOD_SHIFT): newKey = trtable[event.key][1] else: newKey = trtable[event.key][0] # hacky, carky, krouzky, prehlasky elif event.key == K_EQUALS and not event.mod & KMOD_SHIFT and not carka: carka = True return pygame.event.Event(0) elif event.key == K_EQUALS and event.mod & KMOD_SHIFT and not hacek: hacek = True return pygame.event.Event(0) elif event.key == K_BACKQUOTE and event.mod & KMOD_SHIFT and not krouzek: krouzek = True return pygame.event.Event(0) #vyjimka - krouzek bez shiftu je strednik elif event.key == K_BACKQUOTE: newKey = u";" elif hacek: hacek = False if event.key in hacky: if event.mod & KMOD_SHIFT: newKey = hacky[event.key][1] else: newKey = hacky[event.key][0] else: return event elif carka: carka = False if event.key in carky: if event.mod & KMOD_SHIFT: newKey = carky[event.key][1] else: newKey = carky[event.key][0] else: return event elif krouzek: krouzek = False if event.key in krouzky: if event.mod & KMOD_SHIFT: newKey = krouzky[event.key][1] else: newKey = krouzky[event.key][0] else: return event else: newKey = event.unicode evHash = {} evHash["unicode"] = newKey evHash["key"] = event.key evHash["mod"] = newMod newEv = pygame.event.Event(KEYDOWN, evHash) return newEv else: return event