예제 #1
0
    def do_other_key(self, keyval):
        """Handle all otherwise unhandled key presses."""
        c = IBus.keyval_to_unicode(keyval)
        if not c or c == '\n' or c == '\r':
            return False

        if not self.lookuptable.get_number_of_candidates() and \
               self.current_input:
            # FIXME: This is really ugly
            if len(self.current_input) == 1 and \
               not self.cangjie.is_input_key(self.current_input):
                self.get_candidates(by_shortcode=True)

            else:
                try:
                    self.get_candidates()

                except cangjie.errors.CangjieNoCharsError:
                    self.play_error_bell()
                    return True

        if self.lookuptable.get_number_of_candidates():
            self.do_select_candidate(1)

        return self.do_fullwidth_char(IBus.keyval_to_unicode(keyval))
예제 #2
0
파일: engine.py 프로젝트: NCHL/ibus-cangjie
    def do_other_key(self, keyval):
        """Handle all otherwise unhandled key presses."""
        c = IBus.keyval_to_unicode(keyval)
        if not c or c == '\n' or c == '\r':
            return False

        if not self.lookuptable.get_number_of_candidates() and \
               self.current_input:
            # FIXME: This is really ugly
            if len(self.current_input) == 1 and \
               not self.cangjie.is_input_key(self.current_input):
                self.get_candidates(by_shortcode=True)

            else:
                try:
                    self.get_candidates()

                except cangjie.errors.CangjieNoCharsError:
                    self.play_error_bell()
                    return True

        if self.lookuptable.get_number_of_candidates():
            self.do_select_candidate(1)

        return self.do_fullwidth_char(IBus.keyval_to_unicode(keyval))
예제 #3
0
파일: engine.py 프로젝트: NCHL/ibus-cangjie
    def do_number(self, keyval):
        """Handle numeric input."""
        if self.lookuptable.get_number_of_candidates():
            return self.do_select_candidate(int(
                IBus.keyval_to_unicode(keyval)))

        return self.do_fullwidth_char(IBus.keyval_to_unicode(keyval))
예제 #4
0
파일: iwubi.py 프로젝트: gitdhsx/iwubi
 def __init__(self, keyval, keycode, state):
     self.val = keyval
     self.code = keycode
     self.state = state
     self.name = IBus.keyval_name(self.val)
     self.unicode = IBus.keyval_to_unicode(self.val)
     self.shift = self.state & IBus.ModifierType.SHIFT_MASK != 0
     self.lock = self.state & IBus.ModifierType.LOCK_MASK != 0
     self.control = self.state & IBus.ModifierType.CONTROL_MASK != 0
     self.mod1 = self.state & IBus.ModifierType.MOD1_MASK != 0
     self.mod2 = self.state & IBus.ModifierType.MOD2_MASK != 0
     self.mod3 = self.state & IBus.ModifierType.MOD3_MASK != 0
     self.mod4 = self.state & IBus.ModifierType.MOD4_MASK != 0
     self.mod5 = self.state & IBus.ModifierType.MOD5_MASK != 0
     self.button1 = self.state & IBus.ModifierType.BUTTON1_MASK != 0
     self.button2 = self.state & IBus.ModifierType.BUTTON2_MASK != 0
     self.button3 = self.state & IBus.ModifierType.BUTTON3_MASK != 0
     self.button4 = self.state & IBus.ModifierType.BUTTON4_MASK != 0
     self.button5 = self.state & IBus.ModifierType.BUTTON5_MASK != 0
     self.super = self.state & IBus.ModifierType.SUPER_MASK != 0
     self.hyper = self.state & IBus.ModifierType.HYPER_MASK != 0
     self.meta = self.state & IBus.ModifierType.META_MASK != 0
     self.release = self.state & IBus.ModifierType.RELEASE_MASK != 0
     # MODIFIER_MASK: Modifier mask for the all the masks above
     self.modifier = self.state & IBus.ModifierType.MODIFIER_MASK != 0
예제 #5
0
 def __init__(self, keyval, keycode, state):
     self.val = keyval
     self.code = keycode
     self.state = state
     self.name = IBus.keyval_name(self.val)
     self.unicode = IBus.keyval_to_unicode(self.val)
     self.shift = self.state & IBus.ModifierType.SHIFT_MASK != 0
     self.lock = self.state & IBus.ModifierType.LOCK_MASK != 0
     self.control = self.state & IBus.ModifierType.CONTROL_MASK != 0
     self.super = self.state & IBus.ModifierType.SUPER_MASK != 0
     self.hyper = self.state & IBus.ModifierType.HYPER_MASK != 0
     self.meta = self.state & IBus.ModifierType.META_MASK != 0
     # mod1: Usually Alt_L (0x40),  Alt_R (0x6c),  Meta_L (0xcd)
     self.mod1 = self.state & IBus.ModifierType.MOD1_MASK != 0
     # mod2: Usually Num_Lock (0x4d)
     self.mod2 = self.state & IBus.ModifierType.MOD2_MASK != 0
     self.mod3 = self.state & IBus.ModifierType.MOD3_MASK != 0
     # mod4: Usually Super_L (0xce),  Hyper_L (0xcf)
     self.mod4 = self.state & IBus.ModifierType.MOD4_MASK != 0
     # mod5: ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)
     self.mod5 = self.state & IBus.ModifierType.MOD5_MASK != 0
     self.button1 = self.state & IBus.ModifierType.BUTTON1_MASK != 0
     self.button2 = self.state & IBus.ModifierType.BUTTON2_MASK != 0
     self.button3 = self.state & IBus.ModifierType.BUTTON3_MASK != 0
     self.button4 = self.state & IBus.ModifierType.BUTTON4_MASK != 0
     self.button5 = self.state & IBus.ModifierType.BUTTON5_MASK != 0
     self.release = self.state & IBus.ModifierType.RELEASE_MASK != 0
     # MODIFIER_MASK: Modifier mask for the all the masks above
     self.modifier = self.state & IBus.ModifierType.MODIFIER_MASK != 0
예제 #6
0
	def set_keys_and_shortcuts_to_ui(self,widget,data=None):
		for item in self.key_dict.keys():
			widget = self.guibuilder.get_object(item)
			hardware_keycode = int(self.config.get('cfg',item))
			map = Gdk.Keymap.get_default()
			var1, var2, var3 = map.get_entries_for_keycode(hardware_keycode+8)
			text = IBus.keyval_to_unicode(var3[0])
			widget.set_text(text)		
예제 #7
0
 def forward_key_event(self, val, code, state):
     if (val == IBus.KEY_Left and self.mock_committed_text_cursor_pos > 0):
         self.mock_committed_text_cursor_pos -= 1
         return
     unicode = IBus.keyval_to_unicode(val)
     if unicode:
         self.mock_committed_text = (
             self.mock_committed_text[:self.mock_committed_text_cursor_pos]
             + unicode +
             self.mock_committed_text[self.mock_committed_text_cursor_pos:])
         self.mock_committed_text_cursor_pos += len(unicode)
예제 #8
0
    def do_process_key_event(self, keyval, keycode, state):
        """Handle `process-key-event` events.

        This event is fired when the user presses a key.
        """
        # Ignore key release events
        if (state & IBus.ModifierType.RELEASE_MASK):
            return False

        # Work around integer overflow bug on 32 bits systems:
        #     https://bugzilla.gnome.org/show_bug.cgi?id=693121
        # The bug is fixed in pygobject 3.7.91, but many distributions will
        # ship the previous version for some time. (e.g Fedora 18)
        if (state & 1073741824):
            return False

        if state & (IBus.ModifierType.CONTROL_MASK |
                    IBus.ModifierType.MOD1_MASK):
            # Ignore Alt+<key> and Ctrl+<key>
            return False

        if keyval == IBus.Escape:
            return self.do_cancel_input()

        if keyval == IBus.space:
            return self.do_space()

        if keyval == IBus.Page_Down:
            return self.do_page_down()

        if keyval == IBus.Page_Up:
            return self.do_page_up()

        if keyval == IBus.BackSpace:
            return self.do_backspace()

        if is_inputnumber(keyval):
            return self.do_number(keyval)

        c = IBus.keyval_to_unicode(keyval)

        if c and c == "*":
            return self.do_star()

        if c and self.cangjie.is_input_key(c):
            return self.do_inputchar(c)

        return self.do_other_key(keyval)
예제 #9
0
    def do_process_key_event(self, keyval, keycode, state):
        """Handle `process-key-event` events.

        This event is fired when the user presses a key.
        """
        # Ignore key release events
        if (state & IBus.ModifierType.RELEASE_MASK):
            return False

        # Work around integer overflow bug on 32 bits systems:
        #     https://bugzilla.gnome.org/show_bug.cgi?id=693121
        # The bug is fixed in pygobject 3.7.91, but many distributions will
        # ship the previous version for some time. (e.g Fedora 18)
        if (state & 1073741824):
            return False

        if state & (IBus.ModifierType.CONTROL_MASK |
                    IBus.ModifierType.MOD1_MASK):
            # Ignore Alt+<key> and Ctrl+<key>
            return False

        if keyval == IBus.Escape:
            return self.do_cancel_input()

        if keyval == IBus.space:
            return self.do_space()

        if keyval == IBus.Page_Down:
            return self.do_page_down()

        if keyval == IBus.Page_Up:
            return self.do_page_up()

        if keyval == IBus.BackSpace:
            return self.do_backspace()

        if is_inputnumber(keyval):
            return self.do_number(keyval)

        c = IBus.keyval_to_unicode(keyval)

        if c and c == "*":
            return self.do_star()

        if c and self.cangjie.is_input_key(c):
            return self.do_inputchar(c)

        return self.do_other_key(keyval)
예제 #10
0
    def do_process_key_event(self, keyval, keycode, state):
        """Handle `process-key-event` events.

        This event is fired when the user presses a key."""
        # Ignore key release events
        if (state & IBus.ModifierType.RELEASE_MASK):
            return False

        if state & (IBus.ModifierType.CONTROL_MASK |
                    IBus.ModifierType.MOD1_MASK):
            # Ignore Alt+<key> and Ctrl+<key>
            return False

        if keyval == IBus.Escape:
            return self.do_cancel_input()

        if keyval == IBus.space:
            return self.do_space()

        if keyval == IBus.Page_Down:
            return self.do_page_down()

        if keyval == IBus.Page_Up:
            return self.do_page_up()

        if keyval == IBus.BackSpace:
            return self.do_backspace()

        if is_inputnumber(keyval):
            return self.do_number(keyval)

        c = IBus.keyval_to_unicode(keyval)
        # TODO: should wildcard support be optional?
        if c and self.cangjie.isCangJieInputKey(c) or c == "*":
            return self.do_inputchar(c)

        return self.do_other_key(keyval)
예제 #11
0
    def do_number(self, keyval):
        """Handle numeric input."""
        if self.lookuptable.get_number_of_candidates():
            return self.do_select_candidate(int(IBus.keyval_to_unicode(keyval)))

        return self.do_fullwidth_char(IBus.keyval_to_unicode(keyval))