File scim-bridge-agent-add-frontend-mask.patch of Package scim-bridge
Index: scim-bridge-0.4.15/agent/scim-bridge-agent.cpp
===================================================================
--- scim-bridge-0.4.15.orig/agent/scim-bridge-agent.cpp
+++ scim-bridge-0.4.15/agent/scim-bridge-agent.cpp
@@ -144,6 +144,7 @@ class ScimBridgeAgentImpl: public ScimBr
ScimBridgeAgentSignalListener *signal_listener;
ScimBridgeDisplay *display;
+ int m_valid_key_mask;
retval_t initialize_scim ();
retval_t finalize_scim ();
@@ -523,6 +524,17 @@ void ScimBridgeAgentImpl::slot_reload_co
scim_frontend_hotkey_matcher.load_hotkeys (scim_config);
scim_imengine_hotkey_matcher.load_hotkeys (scim_config);
+ KeyEvent key;
+
+ scim_string_to_key (key,
+ config->read (String (SCIM_CONFIG_HOTKEYS_FRONTEND_VALID_KEY_MASK),
+ String ("Shift+Control+Alt+Lock")));
+
+ m_valid_key_mask = (key.mask > 0) ? key.mask : 0xFFFF;
+ m_valid_key_mask |= SCIM_KEY_ReleaseMask;
+ // Special treatment for two backslash keys on jp106 keyboard.
+ m_valid_key_mask |= SCIM_KEY_QuirkKanaRoMask;
+
ScimBridgeAgentIMContext::set_enabled_by_default (scim_config->read (String (SCIM_CONFIG_FRONTEND_IM_OPENED_BY_DEFAULT), ScimBridgeAgentIMContext::is_enabled_by_default ()));
ScimBridgeAgentIMContext::set_imengine_shared (scim_config->read (String (SCIM_CONFIG_FRONTEND_SHARED_INPUT_METHOD), ScimBridgeAgentIMContext::is_imengine_shared ()));
ScimBridgeAgentIMContext::set_on_the_spot_enabled (scim_config->read (String (SCIM_CONFIG_FRONTEND_ON_THE_SPOT), ScimBridgeAgentIMContext::is_on_the_spot_enabled ()));
@@ -680,6 +692,7 @@ bool ScimBridgeAgentImpl::filter_key_eve
scim_bridge_pdebugln (5, "filter_key_event ()");
KeyEvent new_key_event = key_event;
+ new_key_event.mask &= m_valid_key_mask;
new_key_event.layout = scim_keyboard_layout;
ScimBridgeAgentIMContext *imcontext = ScimBridgeAgentIMContext::find (imcontext_id);