.[ ČeskéHry.cz ].
název klávesy při události

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Obecné
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
bolejt



Založen: 02. 05. 2009
Příspěvky: 45

PříspěvekZaslal: 24. říjen 2009, 00:37:24    Předmět: název klávesy při události Odpovědět s citátem

mám aplikaci v c++, která odchytává události operačního systému a při stisku klávesy chce upozornit objekt v pythonu. zde se nachází můj problém: jak mu rozumně předat název klávesy?

dejme tomu právě vymyšlený kód v pythonu:
kód:
class Dude(KeyListener):
  def keyDown(self,key):
    # s čím bych to měl porovnávat?
    if (key == ???):
      self.doSomething()


co jsem zatím vymyslel:
1) napadlo mě zasílat název klávesy jako string, v C++ kódu bych měl velké pole stringů, ke kterým by šlo přistupovat tímto způsobem :
kód:
string[] keyNames = {
// hromada stringů vytahaných z keycodes používaného API (jmenovitě SDL) pomoci nějakého skriptu
// stringy například: "K","A", "Esc", "Up", "Down", "Left Shift"
};
// key code by sloužil jako index v poli keyNames
string currentKeyName = keyNames[keyCode];

kód:
class Object(KeyListener):
  def keyDown(self,key):
    if (key == "Up"):
      self.doSomething()


2) další nápad je podstrčit pythonu "konstanty" (ve skutečnosti proměnné, konstanty v pythonu nejsou):
kód:
# modul Keys, proměnné vytvořené v c++ aplikaci a strčené do pythoního modulu
keyModule["KEY_ESC"] = KEY_CODE_ESC;
keyModule["KEY_UP"] = KEY_CODE_UP;
keyModule["KEY_K"] = KEY_CODE_K;

kód:

# samotný objekt
import Keys
class Object(KeyListener):
  def keyDown(self,key):
    if (key == Keys.KEY_UP):
      self.doSomething()[


sám se přikláním k té první variantě, ale stále si říkám, jestli je to to správné řešení...
_________________
Ball ball8;
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Quiark



Založen: 29. 07. 2007
Příspěvky: 816
Bydliště: Chlívek 401

PříspěvekZaslal: 24. říjen 2009, 10:08:34    Předmět: Odpovědět s citátem

Já bych se přiklonil spíš k té druhé, je to čistší a koneckonců dělá to tak imho většina programů, třeba wxWidgets.
_________________
Mám strach
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
bolejt



Založen: 02. 05. 2009
Příspěvky: 45

PříspěvekZaslal: 24. říjen 2009, 20:43:30    Předmět: Odpovědět s citátem

ano, máš pravdu, před chvílí mi došlo, že první varianta krom tebou popsaných důvodů není vhodná už třeba kvůli:
kód:
keyState.isKeyPressed("Up")
// ->  tj. zbytečně musím implementovat nalezení klávesy


ve druhé variantě bude v nějakém modulu kláves nalezena hodnota VK_UP, ale to už bude záležitost pythonu a jeho svižného dictionary.

děkuji za nesouhlas, zbytečně bych ztrácel čas Smile
_________________
Ball ball8;
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Obecné Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna