Exemplo n.º 1
0
        def process_key(holded):
            if self.special_char_request:
                self.removePopup()
                self.special_char_request = False
                #if 'ctrl' in holded and key == events.SPACEKEY:
                if key in self.special_char_map:
                    self.curInsertChar(self.special_char_map[key])

            elif 'ctrl' in holded and key == events.SPACEKEY:
                self.removePopup()
                self.AddScrollback('╔' + '═' * 78 + '╗', MESSGS_COLOR)
                self.AddScrollback(
                    '║ 1 ()    2 []     3 {}     4 <>'
                    '     5 \\\'     6 @&     7 ;:   '
                    '  8 +*     9 -/  ║', MESSGS_COLOR)
                self.AddScrollback('╚' + '═' * 78 + '╝', MESSGS_COLOR)
                self.special_char_request = True
                self.doing_autocomplete = False
                self.popup_lines += 3

            else:
                self.curInsertChar(
                    events.EventToCharacter(key, 'shft' in holded).translate(
                        self.my_keyboard))
                if self.doing_autocomplete:
                    self.autocomp()
Exemplo n.º 2
0
    def update(self):
        for w in self.widgets:
            if w.parent is None:
                w.update()

        ## Mouse button event
        mouse_button_events = [
            events.LEFTMOUSE, events.MIDDLEMOUSE, events.RIGHTMOUSE
        ]

        ## Modifiers
        mods = []
        for ev in [
                events.LEFTSHIFTKEY, events.RIGHTSHIFTKEY, events.LEFTALTKEY,
                events.RIGHTALTKEY, events.LEFTCTRLKEY, events.RIGHTCTRLKEY
        ]:
            if logic.keyboard.inputs[ev].active:
                mods.append(ev)

        mx, my, on_screen = self.output.get_mouse_position()
        mbe = MouseButtonEvent(0, 0, mx, my)
        for e in mouse_button_events:
            mbe.modifiers = mods
            mbe.button = e
            if logic.mouse.inputs[e].activated and on_screen:
                mbe.status = True
                self.event_handler.send(mbe)
            elif logic.mouse.inputs[e].released and on_screen:
                mbe.status = False
                self.event_handler.send(mbe)

        ## Mouse motion event
        if on_screen:
            mme = MouseMotionEvent(mx, my, mx - self.px, my - self.py)
            self.event_handler.send(mme)

        ## Mouse wheel events
        if on_screen:
            delta = 0
            if logic.mouse.inputs[events.WHEELUPMOUSE].activated:
                delta = 1
            elif logic.mouse.inputs[events.WHEELDOWNMOUSE].activated:
                delta = -1
            if abs(delta) > 0:
                self.event_handler.send(ScrollEvent(delta))

        self.px = mx
        self.py = my

        ## Key events
        for i in range(0, 256):
            shift = logic.keyboard.inputs[events.LEFTSHIFTKEY].active or \
              logic.keyboard.inputs[events.RIGHTSHIFTKEY].active
            try:
                # Text Event
                if logic.keyboard.inputs[i].activated:
                    c = events.EventToCharacter(i, shift)
                    if len(c) > 0:
                        self.event_handler.send(TextEvent(c))

                # Key Event
                if logic.keyboard.inputs[i].activated:
                    self.event_handler.send(KeyEvent(i, mods, True))
                    self.__keys_down[i] = True
                else:
                    if self.__keys_down[i] == True:
                        self.event_handler.send(KeyEvent(i, mods, False))
                        self.__keys_down[i] = False
            except KeyError:
                continue
Exemplo n.º 3
0
    def onKeyPress(self, data):
        if self.readOnly: return

        key, shift = data["key"], data["shift"]

        chr = events.EventToCharacter(key, shift)
        self.blink = True

        ln = self.text

        if self.numbersOnly:
            if key not in [
                    events.ONEKEY, events.TWOKEY, events.THREEKEY,
                    events.FOURKEY, events.FIVEKEY, events.SIXKEY,
                    events.SEVENKEY, events.EIGHTKEY, events.NINEKEY,
                    events.ZEROKEY, events.PAD0, events.PAD1, events.PAD2,
                    events.PAD3, events.PAD4, events.PAD5, events.PAD6,
                    events.PAD7, events.PAD8, events.PAD9, events.PADPERIOD,
                    events.PADMINUS, events.PERIODKEY, events.MINUSKEY,
                    events.LEFTARROWKEY, events.RIGHTARROWKEY,
                    events.BACKSPACEKEY, events.DELKEY
            ]:
                return

        if key == events.LEFTARROWKEY:
            if self.caretx > 0:
                self.caretx -= 1
            else:
                self.caretx = 0
        elif key == events.RIGHTARROWKEY:
            if self.caretx < len(ln):
                self.caretx += 1
            else:
                self.caretx = len(ln)
        elif key == events.TABKEY:
            ln = ln[:self.caretx] + "    " + ln[self.caretx:]
            self.text = ln
            self.caretx += 4
        elif key == events.BACKSPACEKEY:
            if self.caretx > 0:
                if self.caretx < len(self.text):
                    self.caretx -= 1
                    ln = ln[:self.caretx] + ln[self.caretx + 1:]
                else:
                    ln = ln[:self.caretx - 1] + ln[self.caretx:]
                self.text = ln
            else:
                self.caretx = 0
        elif key == events.DELKEY:
            stln = ln[self.caretx:]
            if len(stln) > 0:
                ln = ln[:self.caretx] + ln[self.caretx + 1:]
                self.text = ln
        elif key == events.LEFTSHIFTKEY or key == events.RIGHTSHIFTKEY:
            pass
        else:
            if self.caretx >= len(ln):
                ln += chr
            else:
                ln = ln[:self.caretx] + chr + ln[self.caretx:]

            self.caretx += 1

            ln = ln.replace("\n", "")
            self.text = ln

        fire_if_possible(self.on_text_changed, self, ln)
        self.text = ln

        self.__update_cx()
Exemplo n.º 4
0
from bge import logic as G
from bge import events as GK

cont = G.getCurrentController()
owner = cont.owner
sensor = cont.sensors["s_keyboard"]

if sensor.positive:

    keylist = sensor.events

    # get only the first pressed key
    event = keylist[0]

    pressed_key = event[0]
    status = event[1]

    text = "the key number is: %d\n" % pressed_key
    text += "the key value is: %s\n" % GK.EventToString(pressed_key)
    text += "the character is: %s\n" % GK.EventToCharacter(
        pressed_key, 0)  # (key_code, captalize_flag)

    # optionally you can see the key status too if you want (just activated,
    # text += "the status is: %d\n" % status

    # press space to reset the initial text
    if pressed_key == GK.SPACEKEY:
        text = "Please, press any key."

    owner["Text"] = text
Exemplo n.º 5
0
    def event(self):
        if self.visible and self.enabled:
            bounds = self.transformedBounds()
            mx, my = GFX_mousePosition()

            if bounds.hasPoint(mx, my):
                if self.state == COMP_STATE_NORMAL:
                    self.state = COMP_STATE_HOVER
                    self.events.call(EV_MOUSE_ENTER, self)
            else:
                if self.state == COMP_STATE_HOVER:
                    self.state = COMP_STATE_NORMAL
                    self.events.call(EV_MOUSE_LEAVE, self)

            if GFX_mouseClick(events.LEFTMOUSE):
                if self.state == COMP_STATE_HOVER:
                    self.state = COMP_STATE_CLICK
                    self.__blink = True
                    self.__t.reset()
                    self.events.call(EV_MOUSE_CLICK, self)
                elif self.state == COMP_STATE_CLICK and not bounds.hasPoint(
                        mx, my):
                    self.state = COMP_STATE_NORMAL
                    self.events.call(EV_MOUSE_RELEASE, self)

            if self.__x > len(self.text):
                self.__x = len(self.text)
            if self.state == COMP_STATE_CLICK and not self.readOnly:
                shift = GFX_keyDown(events.LEFTSHIFTKEY) or \
                  GFX_keyDown(events.RIGHTSHIFTKEY)
                if GFX_keyPressed(events.LEFTARROWKEY):
                    if self.__x > 0:
                        self.__x -= 1
                    self.events.call(EV_KEY_PRESS, self, events.LEFTARROWKEY)
                    self.__blink = True
                elif GFX_keyPressed(events.RIGHTARROWKEY):
                    if self.__x < len(self.text):
                        self.__x += 1
                    self.events.call(EV_KEY_PRESS, self, events.RIGHTARROWKEY)
                    self.__blink = True
                elif GFX_keyPressed(events.BACKSPACEKEY):
                    if self.__x > 0:
                        self.__x -= 1
                        s = self.text
                        self.text = s[:self.__x] + s[self.__x + 1:]
                    self.events.call(EV_KEY_PRESS, self, events.BACKSPACEKEY)
                    self.__blink = True
                elif GFX_keyPressed(events.DELKEY):
                    if len(self.text[self.__x:]) != 0:
                        s = self.text
                        self.text = s[:self.__x] + s[self.__x + 1:]
                    self.events.call(EV_KEY_PRESS, self, events.DELKEY)
                    self.__blink = True
                else:
                    for k, v in list(GFX_SupportedKeys.items()):
                        if GFX_keyPressed(v):
                            key = events.EventToCharacter(v, shift)
                            s = self.text
                            self.text = s[:self.__x] + key + s[self.__x:]
                            self.__x += 1
                            self.__blink = True
                            self.events.call(EV_KEY_PRESS, self, v)
                            break
Exemplo n.º 6
0
# #############################

import bge
from bge import logic
from bge import events

cont = logic.getCurrentController()
owner = cont.owner
sensor = cont.sensors["s_keyboard"]

active_events = logic.keyboard.active_events
if len(active_events):

    text = ""
    # get only the first pressed key
    for key,status in active_events.items():

        text += "the key number is: %d\n" % key
        text += "the key value is: %s\n" % events.EventToString(key)
        text += "the character is: %s\n" % events.EventToCharacter(key, 0) # (key_code, captalize_flag)

        # optionally you can see the key status too if you want (just activated, 
        text += "the status is: %d\n" % status

        # press space to reset the initial text
        if key == events.SPACEKEY:
            text = "Please, press any key."
            break

    owner["Text"] = text