diff --git a/platform/lang-impl/src/com/intellij/application/options/InitialConfigurationDialog.java b/platform/lang-impl/src/com/intellij/application/options/InitialConfigurationDialog.java index fbd344ad95db..8d4374afe7ec 100644 --- a/platform/lang-impl/src/com/intellij/application/options/InitialConfigurationDialog.java +++ b/platform/lang-impl/src/com/intellij/application/options/InitialConfigurationDialog.java @@ -387,7 +387,7 @@ public class InitialConfigurationDialog extends DialogWrapper { else if (KeymapManager.MAC_OS_X_KEYMAP.equals(name) || KeymapManager.MAC_OS_X_10_5_PLUS_KEYMAP.equals(name)) { return SystemInfo.isMac; } - else if (KeymapManager.X_WINDOW_KEYMAP.equals(name) || "Default for GNOME".equals(name) || "Default for KDE".equals(name)) { + else if (KeymapManager.X_WINDOW_KEYMAP.equals(name) || "Default for GNOME".equals(name) || KeymapManager.KDE_KEYMAP.equals(name)) { return SystemInfo.isXWindow; } return true; diff --git a/platform/platform-api/src/com/intellij/openapi/keymap/KeymapManager.java b/platform/platform-api/src/com/intellij/openapi/keymap/KeymapManager.java index 9556115870ae..f15f5f2926d1 100644 --- a/platform/platform-api/src/com/intellij/openapi/keymap/KeymapManager.java +++ b/platform/platform-api/src/com/intellij/openapi/keymap/KeymapManager.java @@ -25,6 +25,7 @@ public abstract class KeymapManager { @NonNls public static final String DEFAULT_IDEA_KEYMAP = "$default"; @NonNls public static final String MAC_OS_X_KEYMAP = "Mac OS X"; @NonNls public static final String X_WINDOW_KEYMAP = "Default for XWin"; + @NonNls public static final String KDE_KEYMAP = "Default for KDE"; @NonNls public static final String MAC_OS_X_10_5_PLUS_KEYMAP = "Mac OS X 10.5+"; public abstract Keymap getActiveKeymap(); diff --git a/platform/platform-impl/src/com/intellij/openapi/keymap/impl/DefaultKeymap.java b/platform/platform-impl/src/com/intellij/openapi/keymap/impl/DefaultKeymap.java index 51c945ce4395..24a4fd621838 100644 --- a/platform/platform-impl/src/com/intellij/openapi/keymap/impl/DefaultKeymap.java +++ b/platform/platform-impl/src/com/intellij/openapi/keymap/impl/DefaultKeymap.java @@ -87,7 +87,12 @@ public class DefaultKeymap { return KeymapManager.MAC_OS_X_KEYMAP; } else if (SystemInfo.isXWindow) { - return KeymapManager.X_WINDOW_KEYMAP; + if (SystemInfo.isKDE) { + return KeymapManager.KDE_KEYMAP; + } + else { + return KeymapManager.X_WINDOW_KEYMAP; + } } else { return KeymapManager.DEFAULT_IDEA_KEYMAP; diff --git a/platform/util/src/com/intellij/openapi/util/SystemInfo.java b/platform/util/src/com/intellij/openapi/util/SystemInfo.java index edb42abcfe44..89ecd04cb53c 100644 --- a/platform/util/src/com/intellij/openapi/util/SystemInfo.java +++ b/platform/util/src/com/intellij/openapi/util/SystemInfo.java @@ -64,6 +64,8 @@ public class SystemInfo extends SystemInfoRt { public static final boolean isWin8OrNewer = isWindows && isOsVersionAtLeast("6.2"); public static final boolean isXWindow = isUnix && !isMac; + // https://userbase.kde.org/KDE_System_Administration/Environment_Variables#KDE_FULL_SESSION + public static final boolean isKDE = !StringUtil.isEmpty(System.getenv("KDE_FULL_SESSION")); // http://www.freedesktop.org/software/systemd/man/os-release.html private static final NotNullLazyValue> ourOsReleaseInfo = new AtomicNotNullLazyValue>() {