diff --git a/src/main/kotlin/com/chylex/intellij/inspectionlens/editor/lens/LensRenderer.kt b/src/main/kotlin/com/chylex/intellij/inspectionlens/editor/lens/LensRenderer.kt
index bd7e164..810b1db 100644
--- a/src/main/kotlin/com/chylex/intellij/inspectionlens/editor/lens/LensRenderer.kt
+++ b/src/main/kotlin/com/chylex/intellij/inspectionlens/editor/lens/LensRenderer.kt
@@ -1,5 +1,6 @@
 package com.chylex.intellij.inspectionlens.editor.lens
 
+import com.chylex.intellij.inspectionlens.settings.LensHoverMode
 import com.chylex.intellij.inspectionlens.settings.LensSettingsState
 import com.intellij.codeInsight.daemon.impl.HighlightInfo
 import com.intellij.codeInsight.daemon.impl.HintRenderer
@@ -26,8 +27,7 @@ import javax.swing.SwingUtilities
 /**
  * Renders the text of an inspection lens.
  */
-class LensRenderer(private var info: HighlightInfo, settings: LensSettingsState) : HintRenderer(null), InputHandler {
-	private val useEditorFont = settings.useEditorFont
+class LensRenderer(private var info: HighlightInfo, private val settings: LensSettingsState) : HintRenderer(null), InputHandler {
 	private lateinit var inlay: Inlay<*>
 	private lateinit var attributes: LensSeverityTextAttributes
 	private var extraRightPadding = 0
@@ -81,7 +81,7 @@ class LensRenderer(private var info: HighlightInfo, settings: LensSettingsState)
 	}
 	
 	override fun useEditorFont(): Boolean {
-		return useEditorFont
+		return settings.useEditorFont
 	}
 	
 	override fun mouseMoved(event: MouseEvent, translated: Point) {
@@ -93,6 +93,10 @@ class LensRenderer(private var info: HighlightInfo, settings: LensSettingsState)
 	}
 	
 	private fun setHovered(hovered: Boolean) {
+		if (hovered && settings.lensHoverMode == LensHoverMode.DISABLED) {
+			return
+		}
+		
 		if (this.hovered == hovered) {
 			return
 		}
@@ -109,17 +113,18 @@ class LensRenderer(private var info: HighlightInfo, settings: LensSettingsState)
 	}
 	
 	override fun mousePressed(event: MouseEvent, translated: Point) {
-		if (!isHoveringText(translated)) {
+		val hoverMode = settings.lensHoverMode
+		if (hoverMode == LensHoverMode.DISABLED || !isHoveringText(translated)) {
 			return
 		}
 		
-		if (SwingUtilities.isLeftMouseButton(event) || SwingUtilities.isMiddleMouseButton(event)) {
+		if (event.button.let { it == MouseEvent.BUTTON1 || it == MouseEvent.BUTTON2 }) {
 			event.consume()
 			
 			val editor = inlay.editor
 			moveToOffset(editor, info.actualStartOffset)
 			
-			if (SwingUtilities.isLeftMouseButton(event)) {
+			if ((event.button == MouseEvent.BUTTON1) xor (hoverMode != LensHoverMode.DEFAULT)) {
 				IntentionsPopup.show(editor)
 			}
 		}
diff --git a/src/main/kotlin/com/chylex/intellij/inspectionlens/settings/LensApplicationConfigurable.kt b/src/main/kotlin/com/chylex/intellij/inspectionlens/settings/LensApplicationConfigurable.kt
index d15b64a..2621698 100644
--- a/src/main/kotlin/com/chylex/intellij/inspectionlens/settings/LensApplicationConfigurable.kt
+++ b/src/main/kotlin/com/chylex/intellij/inspectionlens/settings/LensApplicationConfigurable.kt
@@ -13,11 +13,13 @@ import com.intellij.openapi.ui.DialogPanel
 import com.intellij.openapi.util.Disposer
 import com.intellij.ui.DisabledTraversalPolicy
 import com.intellij.ui.EditorTextFieldCellRenderer.SimpleRendererComponent
+import com.intellij.ui.SimpleListCellRenderer
 import com.intellij.ui.components.JBCheckBox
 import com.intellij.ui.dsl.builder.Cell
 import com.intellij.ui.dsl.builder.RightGap
 import com.intellij.ui.dsl.builder.Row
 import com.intellij.ui.dsl.builder.RowLayout
+import com.intellij.ui.dsl.builder.bindItem
 import com.intellij.ui.dsl.builder.bindSelected
 import com.intellij.ui.dsl.builder.panel
 import java.awt.Cursor
@@ -74,6 +76,20 @@ class LensApplicationConfigurable : BoundConfigurable("Inspection Lens"), Config
 		val settings = settingsService.state
 		
 		return panel {
+			group("Appearance") {
+				row {
+					checkBox("Use editor font").bindSelected(settings::useEditorFont)
+				}
+			}
+			
+			group("Behavior") {
+				row("Hover mode:") {
+					val items = LensHoverMode.values().toList()
+					val renderer = SimpleListCellRenderer.create("", LensHoverMode::description)
+					comboBox(items, renderer).bindItem(settings::lensHoverMode) { settings.lensHoverMode = it ?: LensHoverMode.DEFAULT }
+				}
+			}
+			
 			group("Shown Severities") {
 				for ((id, severity, textAttributes) in allSeverities) {
 					row {
@@ -89,12 +105,6 @@ class LensApplicationConfigurable : BoundConfigurable("Inspection Lens"), Config
 					checkBox("Other").bindSelected(settings::showUnknownSeverities)
 				}
 			}
-			
-			group("Appearance") {
-				row {
-					checkBox("Use editor font").bindSelected(settings::useEditorFont)
-				}
-			}
 		}
 	}
 	
diff --git a/src/main/kotlin/com/chylex/intellij/inspectionlens/settings/LensHoverMode.kt b/src/main/kotlin/com/chylex/intellij/inspectionlens/settings/LensHoverMode.kt
new file mode 100644
index 0000000..89a049d
--- /dev/null
+++ b/src/main/kotlin/com/chylex/intellij/inspectionlens/settings/LensHoverMode.kt
@@ -0,0 +1,7 @@
+package com.chylex.intellij.inspectionlens.settings
+
+enum class LensHoverMode(val description: String) {
+	DISABLED("Disabled"),
+	DEFAULT("Left click shows intentions, middle click jumps to highlight"),
+	SWAPPED("Left click jumps to highlight, middle click shows intentions")
+}
diff --git a/src/main/kotlin/com/chylex/intellij/inspectionlens/settings/LensSettingsState.kt b/src/main/kotlin/com/chylex/intellij/inspectionlens/settings/LensSettingsState.kt
index c375e15..c5fc76d 100644
--- a/src/main/kotlin/com/chylex/intellij/inspectionlens/settings/LensSettingsState.kt
+++ b/src/main/kotlin/com/chylex/intellij/inspectionlens/settings/LensSettingsState.kt
@@ -21,6 +21,7 @@ class LensSettingsState : SimplePersistentStateComponent<LensSettingsState.State
 		
 		var showUnknownSeverities by property(true)
 		var useEditorFont by property(true)
+		var lensHoverMode by enum(LensHoverMode.DEFAULT)
 	}
 	
 	@get:Synchronized
@@ -31,6 +32,9 @@ class LensSettingsState : SimplePersistentStateComponent<LensSettingsState.State
 	val useEditorFont
 		get() = state.useEditorFont
 	
+	val lensHoverMode
+		get() = state.lensHoverMode
+	
 	override fun loadState(state: State) {
 		super.loadState(state)
 		update()