summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfujiwarat <takao.fujiwara1@gmail.com>2013-09-02 14:49:03 +0900
committerfujiwarat <takao.fujiwara1@gmail.com>2013-09-02 14:49:03 +0900
commitdb8f61c0b09ac9cf3d5486a1844f459417cba6ec (patch)
tree9c19f3e8b14fb2689c8b899c5c79e300c839d3f5
parent6aae0a9f145f536515e268dd6b25aa740a5edfe7 (diff)
downloadibus-anthy-db8f61c0b09ac9cf3d5486a1844f459417cba6ec.tar.gz
Implemented ISO 14755 with Ctrl+Shift+u in LATIN mode.
-rw-r--r--engine/engine.py35
1 files changed, 25 insertions, 10 deletions
diff --git a/engine/engine.py b/engine/engine.py
index be66738..5bbd3ba 100644
--- a/engine/engine.py
+++ b/engine/engine.py
@@ -147,6 +147,13 @@ class Engine(IBus.EngineSimple):
round=True)
self.__prop_list = self.__init_props()
+ # Do not use self.do_process_key_event to work ISO 14755
+ # with Ctrl+Shift+u .
+ # The super (parent) method of do_process_key_event is called
+ # loop infinitely if this class overrides it.
+ # self.process_key_event is not accessible too.
+ self.connect('process-key-event', self.__process_key_event)
+
self.__init_signal()
# use reset to init values
self.__reset()
@@ -744,14 +751,6 @@ class Engine(IBus.EngineSimple):
self.__invalidate()
return True
- def do_process_key_event(self, keyval, keycode, state):
- try:
- return self.__process_key_event_internal2(keyval, keycode, state)
- except:
- import traceback
- traceback.print_exc()
- return False
-
def do_property_activate(self, prop_name, state):
if state == IBus.PropState.CHECKED:
@@ -1678,7 +1677,15 @@ class Engine(IBus.EngineSimple):
return repr([int(state), int(keyval)])
- def process_key_event_thumb(self, keyval, keycode, state):
+ def __process_key_event(self, obj, keyval, keycode, state):
+ try:
+ return self.__process_key_event_internal2(keyval, keycode, state)
+ except:
+ import traceback
+ traceback.print_exc()
+ return False
+
+ def __process_key_event_thumb(self, keyval, keycode, state):
if self.__thumb == None:
self._reset_thumb()
@@ -1823,7 +1830,7 @@ class Engine(IBus.EngineSimple):
if Engine.__typing_mode == jastring.TYPING_MODE_THUMB_SHIFT and \
Engine.__input_mode not in [INPUT_MODE_LATIN, INPUT_MODE_WIDE_LATIN]:
- return self.process_key_event_thumb(keyval, keycode, state)
+ return self.__process_key_event_thumb(keyval, keycode, state)
is_press = (state & IBus.ModifierType.RELEASE_MASK) == 0
@@ -1849,6 +1856,14 @@ class Engine(IBus.EngineSimple):
except:
print >> sys.stderr, 'Unknown command = %s' % cmd
+ # If input mode is not LATIN, eat Ctrl+Shift+u
+ hex_mod_mask = IBus.ModifierType.SHIFT_MASK | \
+ IBus.ModifierType.CONTROL_MASK
+ if Engine.__input_mode != INPUT_MODE_LATIN and \
+ keyval == IBus.KEY_U and \
+ state & hex_mod_mask == hex_mod_mask:
+ return True
+
if state & (IBus.ModifierType.CONTROL_MASK | IBus.ModifierType.MOD1_MASK):
return False