diff --git a/files/prefpane/checkbox.xml b/files/prefpane/checkbox.xml
index c91a598..5bc7454 100644
--- a/files/prefpane/checkbox.xml
+++ b/files/prefpane/checkbox.xml
@@ -8294,6 +8294,27 @@
-
+ For Finnish
+
+ -
+ Command_L+Shift_L to Command_L+Shift_L (when inputmode == finnish)
+ (+ When you type Command_L+Shift_L only, change inputmode to english)
+ FINNISH
+ remap.finnish_shiftcommandL2shiftLcommandL_english
+ --KeyOverlaidModifier-- KeyCode::SHIFT_L, VK_COMMAND, KeyCode::SHIFT_L, ModifierFlag::COMMAND_L, KeyCode::VK_CHANGE_INPUTMODE_ENGLISH
+ --KeyOverlaidModifier-- KeyCode::COMMAND_L, VK_SHIFT, KeyCode::COMMAND_L, ModifierFlag::SHIFT_L, KeyCode::VK_CHANGE_INPUTMODE_ENGLISH
+
+ -
+ Command_L+Shift_L to Command_L+Shift_L
+ (+ When you type Command_L+Shift_L only, change inputmode to finnish)
+
+ remap.finnish_shiftcommandL2shiftLcommandL_finnish
+ --KeyOverlaidModifier-- KeyCode::SHIFT_L, VK_COMMAND, KeyCode::SHIFT_L, ModifierFlag::COMMAND_L, KeyCode::VK_CHANGE_INPUTMODE_FINNISH
+ --KeyOverlaidModifier-- KeyCode::COMMAND_L, VK_SHIFT, KeyCode::COMMAND_L, ModifierFlag::SHIFT_L, KeyCode::VK_CHANGE_INPUTMODE_FINNISH
+
+
+
+ -
For French
-
diff --git a/src/core/bridge/keycode/data/InputMode.data b/src/core/bridge/keycode/data/InputMode.data
index 4522888..397bb59 100644
--- a/src/core/bridge/keycode/data/InputMode.data
+++ b/src/core/bridge/keycode/data/InputMode.data
@@ -15,6 +15,7 @@ AINU --AUTO--
RUSSIAN --AUTO--
FRENCH --AUTO--
POLISH --AUTO--
+FINNISH --AUTO--
// http://bepo.fr/wiki/Mac_OS_X
BEPO --AUTO--
diff --git a/src/core/bridge/keycode/data/InputModeDetail.data b/src/core/bridge/keycode/data/InputModeDetail.data
index 230edda..055f7cf 100644
--- a/src/core/bridge/keycode/data/InputModeDetail.data
+++ b/src/core/bridge/keycode/data/InputModeDetail.data
@@ -18,6 +18,7 @@ CANADIAN --AUTO--
AINU --AUTO--
RUSSIAN --AUTO--
FRENCH --AUTO--
+FINNISH --AUTO--
POLISH --AUTO--
POLISH_PRO --AUTO--
diff --git a/src/core/bridge/keycode/data/KeyCode.data b/src/core/bridge/keycode/data/KeyCode.data
index 8f8d5ba..15ee67e 100644
--- a/src/core/bridge/keycode/data/KeyCode.data
+++ b/src/core/bridge/keycode/data/KeyCode.data
@@ -273,6 +273,7 @@ VK_CHANGE_INPUTMODE_RUSSIAN_TYPOGRAPHIC --AUTO--
VK_CHANGE_INPUTMODE_ENGLISH_TYPOGRAPHIC --AUTO--
VK_CHANGE_INPUTMODE_TRADITIONAL_CHINESE_YAHOO_KEYKEY --AUTO--
VK_CHANGE_INPUTMODE_ESTONIAN --AUTO--
+VK_CHANGE_INPUTMODE_FINNISH --AUTO--
//
VK_JIS_TOGGLE_EISUU_KANA --AUTO--
VK_JIS_TEMPORARY_ROMAN --AUTO--
diff --git a/src/core/kext/VirtualKey.cpp b/src/core/kext/VirtualKey.cpp
index 26fae21..2b8ff33 100644
--- a/src/core/kext/VirtualKey.cpp
+++ b/src/core/kext/VirtualKey.cpp
@@ -198,7 +198,8 @@ namespace org_pqrs_KeyRemap4MacBook {
params.key == KeyCode::VK_CHANGE_INPUTMODE_RUSSIAN_TYPOGRAPHIC ||
params.key == KeyCode::VK_CHANGE_INPUTMODE_ENGLISH_TYPOGRAPHIC ||
params.key == KeyCode::VK_CHANGE_INPUTMODE_TRADITIONAL_CHINESE_YAHOO_KEYKEY ||
- params.key == KeyCode::VK_CHANGE_INPUTMODE_ESTONIAN) {
+ params.key == KeyCode::VK_CHANGE_INPUTMODE_ESTONIAN ||
+ params.key == KeyCode::VK_CHANGE_INPUTMODE_FINNISH) {
if (params.ex_iskeydown && params.repeat == false) {
org_pqrs_driver_KeyRemap4MacBook_UserClient_kext::send_notification_to_userspace(BRIDGE_USERCLIENT_NOTIFICATION_TYPE_CHANGE_INPUT_SOURCE, params.key.get());
diff --git a/src/core/server/Classes/WorkSpaceData+InputMode.m b/src/core/server/Classes/WorkSpaceData+InputMode.m
index 9508a32..5e2a18b 100644
--- a/src/core/server/Classes/WorkSpaceData+InputMode.m
+++ b/src/core/server/Classes/WorkSpaceData+InputMode.m
@@ -165,6 +165,8 @@ finish:
language = kInputSourceLanguage_traditional_chinese_yahoo_keykey;
} else if (vk_keycode == [parser keycode:@"KeyCode::VK_CHANGE_INPUTMODE_ESTONIAN"]) {
language = @"et";
+ } else if (vk_keycode == [parser keycode:@"KeyCode::VK_CHANGE_INPUTMODE_FINNISH"]) {
+ language = @"fi";
}
if (! language) return;
@@ -240,6 +242,12 @@ finish:
return;
}
+ if ([name hasPrefix:@"org.pqrs.inputmode.fi."]) {
+ *output_inputmode = [parser keycode:@"InputMode::FINNISH"];
+ *output_inputmodedetail = [parser keycode:@"InputModeDetail::FINNISH"];
+ return;
+ }
+
if ([name hasPrefix:@"org.pqrs.inputmode.ca."]) {
*output_inputmode = [parser keycode:@"InputMode::CANADIAN"];
*output_inputmodedetail = [parser keycode:@"InputModeDetail::CANADIAN"];