PrefWindow // +checkAbusersOfSecureEventInputAPI().
This commit is contained in:
parent
6e946f5db1
commit
7f744589af
|
@ -62,6 +62,8 @@ class CtlPrefWindow: NSWindowController, NSWindowDelegate {
|
|||
@IBOutlet var vwrKeyboard: NSView!
|
||||
@IBOutlet var vwrDevZone: NSView!
|
||||
|
||||
var previousView: NSView?
|
||||
|
||||
public static var shared: CtlPrefWindow?
|
||||
|
||||
@objc var observation: NSKeyValueObservation?
|
||||
|
@ -124,7 +126,7 @@ class CtlPrefWindow: NSWindowController, NSWindowDelegate {
|
|||
toolbar.delegate = self
|
||||
toolbar.selectedItemIdentifier = PrefUITabs.tabGeneral.toolbarIdentifier
|
||||
toolbar.showsBaselineSeparator = true
|
||||
if #available(macOS 13, *) {
|
||||
if #available(macOS 11.0, *) {
|
||||
window?.toolbarStyle = .preference
|
||||
}
|
||||
window?.toolbar = toolbar
|
||||
|
@ -467,14 +469,29 @@ class CtlPrefWindow: NSWindowController, NSWindowDelegate {
|
|||
extension CtlPrefWindow: NSToolbarDelegate {
|
||||
func use(view newView: NSView, animate: Bool = true) {
|
||||
guard let window = window, let existingContentView = window.contentView else { return }
|
||||
guard previousView != newView else { return }
|
||||
previousView = newView
|
||||
let temporaryViewOld = NSView(frame: existingContentView.frame)
|
||||
window.contentView = temporaryViewOld
|
||||
var newWindowRect = NSRect(origin: window.frame.origin, size: newView.bounds.size)
|
||||
let shouldScroll: Bool = newWindowRect.size.height > 577
|
||||
if shouldScroll { newWindowRect.size.height = 577 }
|
||||
newWindowRect.size.height += kWindowTitleHeight
|
||||
newWindowRect.origin.y = window.frame.maxY - newWindowRect.height
|
||||
window.setFrame(newWindowRect, display: true, animate: animate)
|
||||
if shouldScroll {
|
||||
let scrollview = NSScrollView(frame: NSRect(x: 0, y: 0, width: 577, height: 577))
|
||||
scrollview.borderType = .noBorder
|
||||
scrollview.hasVerticalScroller = true
|
||||
scrollview.hasHorizontalScroller = false
|
||||
scrollview.verticalScroller?.scrollerStyle = .legacy
|
||||
scrollview.autoresizingMask = [.width, .height]
|
||||
scrollview.documentView = newView
|
||||
window.contentView = scrollview
|
||||
} else {
|
||||
window.contentView = newView
|
||||
}
|
||||
}
|
||||
|
||||
var toolbarIdentifiers: [NSToolbarItem.Identifier] {
|
||||
PrefUITabs.allCases.filter {
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22154" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22155" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22154"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22155"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
|
@ -928,14 +928,14 @@
|
|||
</view>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<view id="XWo-36-xGi" userLabel="vwrBehavior">
|
||||
<rect key="frame" x="0.0" y="0.0" width="577" height="589"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="577" height="695"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<stackView distribution="fill" orientation="vertical" alignment="leading" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" translatesAutoresizingMaskIntoConstraints="NO" id="j9R-fB-ttM">
|
||||
<rect key="frame" x="20" y="38" width="530" height="531"/>
|
||||
<rect key="frame" x="20" y="32" width="537" height="643"/>
|
||||
<subviews>
|
||||
<stackView distribution="fill" orientation="vertical" alignment="leading" spacing="4" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" translatesAutoresizingMaskIntoConstraints="NO" id="pwZ-0Z-1ID">
|
||||
<rect key="frame" x="0.0" y="390" width="530" height="141"/>
|
||||
<rect key="frame" x="0.0" y="502" width="530" height="141"/>
|
||||
<subviews>
|
||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="109">
|
||||
<rect key="frame" x="-1" y="124.5" width="285" height="17"/>
|
||||
|
@ -1057,7 +1057,7 @@
|
|||
</customSpacing>
|
||||
</stackView>
|
||||
<stackView distribution="fill" orientation="vertical" alignment="leading" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" translatesAutoresizingMaskIntoConstraints="NO" id="fO5-4y-X0y">
|
||||
<rect key="frame" x="0.0" y="344" width="365" height="38"/>
|
||||
<rect key="frame" x="0.0" y="456" width="365" height="38"/>
|
||||
<subviews>
|
||||
<textField focusRingType="none" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="TMn-LX-3Ub">
|
||||
<rect key="frame" x="-2" y="23" width="369" height="15"/>
|
||||
|
@ -1105,7 +1105,7 @@
|
|||
</customSpacing>
|
||||
</stackView>
|
||||
<stackView distribution="fill" orientation="vertical" alignment="leading" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" translatesAutoresizingMaskIntoConstraints="NO" id="EOx-os-rU9">
|
||||
<rect key="frame" x="0.0" y="262" width="381" height="74"/>
|
||||
<rect key="frame" x="0.0" y="374" width="381" height="74"/>
|
||||
<subviews>
|
||||
<textField focusRingType="none" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="sjl-L6-qdY">
|
||||
<rect key="frame" x="-2" y="59" width="385" height="15"/>
|
||||
|
@ -1155,7 +1155,7 @@
|
|||
</customSpacing>
|
||||
</stackView>
|
||||
<stackView distribution="fill" orientation="vertical" alignment="leading" spacing="7" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" translatesAutoresizingMaskIntoConstraints="NO" id="L1h-Ce-g4Z">
|
||||
<rect key="frame" x="0.0" y="145" width="449" height="109"/>
|
||||
<rect key="frame" x="0.0" y="257" width="449" height="109"/>
|
||||
<subviews>
|
||||
<textField focusRingType="none" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="6q5-OP-iEb">
|
||||
<rect key="frame" x="-2" y="94" width="332" height="15"/>
|
||||
|
@ -1213,7 +1213,7 @@
|
|||
</customSpacing>
|
||||
</stackView>
|
||||
<stackView distribution="fill" orientation="vertical" alignment="leading" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" translatesAutoresizingMaskIntoConstraints="NO" id="NOW-jd-XBh">
|
||||
<rect key="frame" x="0.0" y="81" width="358" height="56"/>
|
||||
<rect key="frame" x="0.0" y="193" width="358" height="56"/>
|
||||
<subviews>
|
||||
<textField focusRingType="none" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="J0f-Aw-dxC">
|
||||
<rect key="frame" x="-2" y="41" width="336" height="15"/>
|
||||
|
@ -1259,7 +1259,7 @@
|
|||
</customSpacing>
|
||||
</stackView>
|
||||
<stackView distribution="fill" orientation="vertical" alignment="leading" spacing="7" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" translatesAutoresizingMaskIntoConstraints="NO" id="s47-wG-vKA">
|
||||
<rect key="frame" x="0.0" y="0.0" width="348" height="73"/>
|
||||
<rect key="frame" x="0.0" y="112" width="348" height="73"/>
|
||||
<subviews>
|
||||
<textField focusRingType="none" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="iCL-n8-VTP">
|
||||
<rect key="frame" x="-2" y="58" width="323" height="15"/>
|
||||
|
@ -1308,12 +1308,76 @@
|
|||
<real value="3.4028234663852886e+38"/>
|
||||
</customSpacing>
|
||||
</stackView>
|
||||
<stackView distribution="fill" orientation="vertical" alignment="leading" spacing="5" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="UFf-Pi-9Jt" userLabel="stkShiftKeyASCIITogglesPane">
|
||||
<rect key="frame" x="0.0" y="0.0" width="537" height="104"/>
|
||||
<subviews>
|
||||
<box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="2zC-9V-ryy">
|
||||
<rect key="frame" x="0.0" y="101" width="530" height="5"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="530" id="ppo-kg-vfE"/>
|
||||
</constraints>
|
||||
</box>
|
||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="47z-Kc-MdV">
|
||||
<rect key="frame" x="-1" y="81.5" width="268" height="17"/>
|
||||
<buttonCell key="cell" type="check" title="Toggle alphanumerical mode with Left-Shift" bezelStyle="regularSquare" imagePosition="left" controlSize="small" inset="2" id="CVy-8U-3qQ">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="cellTitle"/>
|
||||
</buttonCell>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="70" id="JyP-8L-nph"/>
|
||||
<constraint firstAttribute="height" constant="16" id="uE2-0S-Bgm"/>
|
||||
</constraints>
|
||||
<connections>
|
||||
<binding destination="32" name="value" keyPath="values.TogglingAlphanumericalModeWithLShift" id="L1D-gV-tCC"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="taP-hv-eg2">
|
||||
<rect key="frame" x="-1" y="60.5" width="276" height="17"/>
|
||||
<buttonCell key="cell" type="check" title="Toggle alphanumerical mode with Right-Shift" bezelStyle="regularSquare" imagePosition="left" controlSize="small" inset="2" id="nxP-CV-ZAu">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="cellTitle"/>
|
||||
</buttonCell>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="70" id="mzA-do-IWc"/>
|
||||
<constraint firstAttribute="height" constant="16" id="uiX-bl-Lww"/>
|
||||
</constraints>
|
||||
<connections>
|
||||
<binding destination="32" name="value" keyPath="values.TogglingAlphanumericalModeWithRShift" id="4qK-TY-SFb"/>
|
||||
</connections>
|
||||
</button>
|
||||
<textField wantsLayer="YES" focusRingType="none" verticalHuggingPriority="750" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Dec-3q-bsx">
|
||||
<rect key="frame" x="-2" y="0.0" width="541" height="56"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="537" id="wkg-gt-KuK"/>
|
||||
</constraints>
|
||||
<textFieldCell key="cell" controlSize="small" sendsActionOnEndEditing="YES" alignment="left" id="Rl7-3a-RDn">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<string key="title">This feature only needs to parse consecutive NSEvents passed by macOS built-in InputMethodKit framework, hence no necessity of asking end-users for extra privileges of monitoring global keyboard inputs. You are free to investigate our codebase or reverse-engineer this input method to see whether the above statement is trustable.</string>
|
||||
<color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</subviews>
|
||||
<visibilityPriorities>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
</visibilityPriorities>
|
||||
<customSpacing>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
</customSpacing>
|
||||
</stackView>
|
||||
</subviews>
|
||||
<visibilityPriorities>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
</visibilityPriorities>
|
||||
|
@ -1324,6 +1388,7 @@
|
|||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
</customSpacing>
|
||||
</stackView>
|
||||
</subviews>
|
||||
|
@ -1332,7 +1397,7 @@
|
|||
<constraint firstItem="j9R-fB-ttM" firstAttribute="top" secondItem="XWo-36-xGi" secondAttribute="top" constant="20" symbolic="YES" id="CuZ-dn-mQZ"/>
|
||||
</constraints>
|
||||
<accessibility identifier="vwrBehavior"/>
|
||||
<point key="canvasLocation" x="-1351.5" y="615.5"/>
|
||||
<point key="canvasLocation" x="-1351.5" y="668.5"/>
|
||||
</view>
|
||||
<userDefaultsController representsSharedInstance="YES" id="32"/>
|
||||
<view id="Rnp-LM-RIF" userLabel="vwrDictionary">
|
||||
|
@ -1685,7 +1750,7 @@
|
|||
<rect key="frame" x="0.0" y="71" width="538" height="370"/>
|
||||
<clipView key="contentView" drawsBackground="NO" id="x8s-wo-bxi">
|
||||
<rect key="frame" x="0.0" y="0.0" width="538" height="370"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textView wantsLayer="YES" importsGraphics="NO" richText="NO" verticallyResizable="YES" allowsUndo="YES" smartInsertDelete="YES" id="kSG-dz-P2N">
|
||||
<rect key="frame" x="0.0" y="0.0" width="538" height="370"/>
|
||||
|
@ -2454,17 +2519,17 @@ DQ
|
|||
<constraint firstItem="0gn-BJ-qid" firstAttribute="top" secondItem="U4q-xw-mc0" secondAttribute="top" constant="20" symbolic="YES" id="qgB-J1-68N"/>
|
||||
</constraints>
|
||||
<accessibility identifier="vwrKeyboard"/>
|
||||
<point key="canvasLocation" x="-716" y="453"/>
|
||||
<point key="canvasLocation" x="-716" y="475"/>
|
||||
</view>
|
||||
<view id="MaQ-Xm-8TB" userLabel="vwrDevZone">
|
||||
<rect key="frame" x="0.0" y="0.0" width="577" height="364"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<stackView distribution="fill" orientation="vertical" alignment="leading" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" translatesAutoresizingMaskIntoConstraints="NO" id="gjM-uG-XkW">
|
||||
<rect key="frame" x="20" y="39" width="537" height="305"/>
|
||||
<rect key="frame" x="20" y="43" width="537" height="301"/>
|
||||
<subviews>
|
||||
<textField wantsLayer="YES" focusRingType="none" verticalHuggingPriority="750" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="hBd-sS-cWq">
|
||||
<rect key="frame" x="-2" y="277" width="541" height="28"/>
|
||||
<rect key="frame" x="-2" y="273" width="541" height="28"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="537" id="Kvp-PL-Pes"/>
|
||||
</constraints>
|
||||
|
@ -2477,14 +2542,14 @@ Features listed here may not work as expected.</string>
|
|||
</textFieldCell>
|
||||
</textField>
|
||||
<box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="ul4-N6-Ybi">
|
||||
<rect key="frame" x="0.0" y="266" width="537" height="5"/>
|
||||
<rect key="frame" x="0.0" y="262" width="537" height="5"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="537" id="2lI-El-JtD"/>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="400" id="kJZ-E8-eDL"/>
|
||||
</constraints>
|
||||
</box>
|
||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="mCf-kK-FJc">
|
||||
<rect key="frame" x="-1" y="243.5" width="321" height="17"/>
|
||||
<rect key="frame" x="-1" y="239.5" width="321" height="17"/>
|
||||
<buttonCell key="cell" type="check" title="Security-harden the composition buffer for all clients" bezelStyle="regularSquare" imagePosition="left" controlSize="small" inset="2" id="3N6-LT-HPv">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="cellTitle"/>
|
||||
|
@ -2498,7 +2563,7 @@ Features listed here may not work as expected.</string>
|
|||
</connections>
|
||||
</button>
|
||||
<textField wantsLayer="YES" focusRingType="none" verticalHuggingPriority="750" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="uTe-PD-0NE">
|
||||
<rect key="frame" x="-2" y="208" width="541" height="28"/>
|
||||
<rect key="frame" x="-2" y="204" width="541" height="28"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="537" id="RXL-dq-gV0"/>
|
||||
</constraints>
|
||||
|
@ -2510,7 +2575,7 @@ Features listed here may not work as expected.</string>
|
|||
</textFieldCell>
|
||||
</textField>
|
||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="yJg-tV-hH6">
|
||||
<rect key="frame" x="-1" y="183.5" width="429" height="17"/>
|
||||
<rect key="frame" x="-1" y="179.5" width="429" height="17"/>
|
||||
<buttonCell key="cell" type="check" title="Disable segmented thick underline in marking mode for managed clients" bezelStyle="regularSquare" imagePosition="left" controlSize="small" inset="2" id="N6e-bR-mVa">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="cellTitle"/>
|
||||
|
@ -2524,7 +2589,7 @@ Features listed here may not work as expected.</string>
|
|||
</connections>
|
||||
</button>
|
||||
<textField wantsLayer="YES" focusRingType="none" verticalHuggingPriority="750" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="uK3-cc-UcW">
|
||||
<rect key="frame" x="-2" y="106" width="541" height="70"/>
|
||||
<rect key="frame" x="-2" y="102" width="541" height="70"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="537" id="qOi-aV-LQX"/>
|
||||
</constraints>
|
||||
|
@ -2535,45 +2600,28 @@ Features listed here may not work as expected.</string>
|
|||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<stackView distribution="fill" orientation="vertical" alignment="leading" spacing="5" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="UFf-Pi-9Jt" userLabel="stkShiftKeyASCIITogglesPane">
|
||||
<rect key="frame" x="0.0" y="0.0" width="537" height="98"/>
|
||||
<subviews>
|
||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="47z-Kc-MdV">
|
||||
<rect key="frame" x="-1" y="81.5" width="268" height="17"/>
|
||||
<buttonCell key="cell" type="check" title="Toggle alphanumerical mode with Left-Shift" bezelStyle="regularSquare" imagePosition="left" controlSize="small" inset="2" id="CVy-8U-3qQ">
|
||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="PAX-gG-dDq">
|
||||
<rect key="frame" x="-1" y="77.5" width="395" height="17"/>
|
||||
<buttonCell key="cell" type="check" title="Actively check those processes abusing the SecureEventInput API" bezelStyle="regularSquare" imagePosition="left" controlSize="small" inset="2" id="chkCheckAbusersOfSecureEventInputAPI">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="cellTitle"/>
|
||||
</buttonCell>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="70" id="JyP-8L-nph"/>
|
||||
<constraint firstAttribute="height" constant="16" id="uE2-0S-Bgm"/>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="70" id="CPH-Ec-61k"/>
|
||||
<constraint firstAttribute="height" constant="16" id="Sl3-ON-r6A"/>
|
||||
</constraints>
|
||||
<connections>
|
||||
<binding destination="32" name="value" keyPath="values.TogglingAlphanumericalModeWithLShift" id="L1D-gV-tCC"/>
|
||||
<binding destination="32" name="value" keyPath="values.CheckAbusersOfSecureEventInputAPI" id="j92-od-32w"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="taP-hv-eg2">
|
||||
<rect key="frame" x="-1" y="60.5" width="276" height="17"/>
|
||||
<buttonCell key="cell" type="check" title="Toggle alphanumerical mode with Right-Shift" bezelStyle="regularSquare" imagePosition="left" controlSize="small" inset="2" id="nxP-CV-ZAu">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="cellTitle"/>
|
||||
</buttonCell>
|
||||
<textField wantsLayer="YES" focusRingType="none" verticalHuggingPriority="750" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="7xr-bA-Gg5">
|
||||
<rect key="frame" x="-2" y="0.0" width="541" height="70"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="70" id="mzA-do-IWc"/>
|
||||
<constraint firstAttribute="height" constant="16" id="uiX-bl-Lww"/>
|
||||
<constraint firstAttribute="width" constant="537" id="uIU-Qp-xCh"/>
|
||||
</constraints>
|
||||
<connections>
|
||||
<binding destination="32" name="value" keyPath="values.TogglingAlphanumericalModeWithRShift" id="4qK-TY-SFb"/>
|
||||
</connections>
|
||||
</button>
|
||||
<textField wantsLayer="YES" focusRingType="none" verticalHuggingPriority="750" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Dec-3q-bsx">
|
||||
<rect key="frame" x="-2" y="0.0" width="541" height="56"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="537" id="wkg-gt-KuK"/>
|
||||
</constraints>
|
||||
<textFieldCell key="cell" controlSize="small" sendsActionOnEndEditing="YES" alignment="left" id="Rl7-3a-RDn">
|
||||
<textFieldCell key="cell" controlSize="small" sendsActionOnEndEditing="YES" alignment="left" id="lblCheckAbusersOfSecureEventInputAPI">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<string key="title">This feature only needs to parse consecutive NSEvents passed by macOS built-in InputMethodKit framework, hence no necessity of asking end-users for extra privileges of monitoring global keyboard inputs. You are free to investigate our codebase or reverse-engineer this input method to see whether the above statement is trustable.</string>
|
||||
<string key="title">Such abuse of SecureEventInput API in the background can hinder all 3rd-party input methods from being able to switch to. It is fine to use SecureEventInput for sensitive input fields. However, an app calling EnableSecureEventInput() is responsible to call DisableSecureEventInput() immediately right after the input field loses focus. This situation may also happen if an app is hanging in the background (or working as a helper application in the background) with its SecureEventInput left enabled.</string>
|
||||
<color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
|
@ -2583,17 +2631,6 @@ Features listed here may not work as expected.</string>
|
|||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
</visibilityPriorities>
|
||||
<customSpacing>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
</customSpacing>
|
||||
</stackView>
|
||||
</subviews>
|
||||
<visibilityPriorities>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
|
@ -2608,6 +2645,7 @@ Features listed here may not work as expected.</string>
|
|||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
</customSpacing>
|
||||
</stackView>
|
||||
</subviews>
|
||||
|
|
|
@ -47,6 +47,7 @@
|
|||
"chkAllowBoostingSingleKanjiAsUserPhrase.title" = "Allow boosting / excluding a candidate of single kanji when marking";
|
||||
"chkAlsoConfirmAssociatedCandidatesByEnter.title" = "Allow using Enter key to confirm associated candidate selection";
|
||||
"chkAutoCorrectReadingCombination.title" = "Automatically correct reading combinations when typing";
|
||||
"chkCheckAbusersOfSecureEventInputAPI.title" = "Actively check those processes abusing the SecureEventInput API";
|
||||
"chkConsolidateContextOnCandidateSelection.title" = "Consolidate the context on confirming candidate selection";
|
||||
"chkFetchSuggestionsFromUserOverrideModel.title" = "Applying typing suggestions from half-life user override model";
|
||||
"chkHardenVerticalPunctuations.title" = "Harden vertical punctuations during vertical typing";
|
||||
|
@ -84,6 +85,7 @@
|
|||
"kcM-O6-mLN.title" = "This hinders all client apps from unwelcomely accessing your uncommitted contents in the composition buffer. A popup composition buffer will be shown instead.";
|
||||
"lblAcceptLeadingIntonations.title" = "Accept leading intonations in rare cases";
|
||||
"lblAlwaysShowTooltipTextsHorizontally.title" = "Always show tooltip texts horizontally";
|
||||
"lblCheckAbusersOfSecureEventInputAPI.title" = "Such abuse of SecureEventInput API in the background can hinder all 3rd-party input methods from being able to switch to. It is fine to use SecureEventInput for sensitive input fields. However, an app calling EnableSecureEventInput() is responsible to call DisableSecureEventInput() immediately right after the input field loses focus. This situation may also happen if an app is hanging in the background (or working as a helper application in the background) with its SecureEventInput left enabled.";
|
||||
"lblDevZoneTitleDescription.title" = "Warning: This page is for testing future features. \nFeatures listed here may not work as expected.";
|
||||
"lblIntonationKeyBehavior.title" = "Specify what intonation key does when syllable composer is empty.";
|
||||
"lblShiftBkspKeyBehavior.title" = "Choose the attempted behavior of Shift+BackSpace key.";
|
||||
|
|
|
@ -47,6 +47,7 @@
|
|||
"chkAllowBoostingSingleKanjiAsUserPhrase.title" = "マーキングモードで即排除/即最優先にできる候補の文字数の最低限は1字とする";
|
||||
"chkAlsoConfirmAssociatedCandidatesByEnter.title" = "Enter キーを連想語彙候補の確認のために使う";
|
||||
"chkAutoCorrectReadingCombination.title" = "入力中で打ち間違った発音組み合わせを自動的に訂正する";
|
||||
"chkCheckAbusersOfSecureEventInputAPI.title" = "SecureEventInput API を不正利用しているバクグラウンド・プロセスを自動検知";
|
||||
"chkConsolidateContextOnCandidateSelection.title" = "候補陳列ウィンドウで候補を選ぶ時に文脈を強固する";
|
||||
"chkFetchSuggestionsFromUserOverrideModel.title" = "入力中で臨時記憶モジュールからお薦めの候補を自動的に選ぶ";
|
||||
"chkHardenVerticalPunctuations.title" = "縦書きの時に、引用符・括弧などを強制的に縦書き文字と変換する(不推奨)";
|
||||
|
@ -84,6 +85,7 @@
|
|||
"kcM-O6-mLN.title" = "これで、どの客体アプリも、入力緩衝列の送り出さなかった内容を(勝手に)読み用いることは不可能になる。すなわち「吹き出し入力緩衝列ウィンドウ」の「常に出番」である。";
|
||||
"lblAcceptLeadingIntonations.title" = "まれな場合には、音調記号の優先入力を許容する";
|
||||
"lblAlwaysShowTooltipTextsHorizontally.title" = "ヒントを常に横書きにする";
|
||||
"lblCheckAbusersOfSecureEventInputAPI.title" = "このような不正利用は「システム内蔵入力以外の全ての入力アプリがメニューで灰色状態で選べなくて使えない」の元凶である。センシティブな資料の記入どころでSecureEventInputをEnableSecureEventInput()で使うのは当然であるが、「入力中」状態が終わった後必ずDisableSecureEventInput()で状態解消すべきだと義務である。いくつかヘルパーアプリも、あるいはSecureEventInputを呼び起こしてからすぐ固まったアプリも、この状態になりやすい。特に、他のアプリの画面へ切り替えたとしても、固まったアプリのSecureEventInput状態は自動的に解消できぬ。";
|
||||
"lblDevZoneTitleDescription.title" = "警告:これからの新機能テストのために作ったページですから、\nここで陳列されている諸機能は予想通り動けるだと思わないでください。";
|
||||
"lblIntonationKeyBehavior.title" = "音調組立緩衝列が空かされた時の音調キーの行為をご指定ください。";
|
||||
"lblShiftBkspKeyBehavior.title" = "Shift+BackSpace キーの優先行為をご指定ください。";
|
||||
|
|
|
@ -47,6 +47,7 @@
|
|||
"chkAllowBoostingSingleKanjiAsUserPhrase.title" = "允许借由标记模式将可以就地升权/排除的候选字词的最短词长设为单个汉字";
|
||||
"chkAlsoConfirmAssociatedCandidatesByEnter.title" = "允许使用 Enter 确认当前选中的联想词";
|
||||
"chkAutoCorrectReadingCombination.title" = "敲字时自动纠正读音组合";
|
||||
"chkCheckAbusersOfSecureEventInputAPI.title" = "主动检测正在滥用 SecureEventInput API 的后台进程";
|
||||
"chkConsolidateContextOnCandidateSelection.title" = "在使用选字窗选字时,自动巩固上下文";
|
||||
"chkFetchSuggestionsFromUserOverrideModel.title" = "在敲字时自动套用来自半衰记忆模组的建议";
|
||||
"chkHardenVerticalPunctuations.title" = "在纵排书写时,强制转换标点为纵排形式(不推荐)";
|
||||
|
@ -84,6 +85,7 @@
|
|||
"kcM-O6-mLN.title" = "这会阻止任何客体擅自存取尚未递交的组字区内容。此举也会全局启用浮动组字窗。";
|
||||
"lblAcceptLeadingIntonations.title" = "在个别情况下,允许声调前置键入";
|
||||
"lblAlwaysShowTooltipTextsHorizontally.title" = "始终使用横排来显示工具提示视窗";
|
||||
"lblCheckAbusersOfSecureEventInputAPI.title" = "这种滥用会导致系统内的所有第三方输入法全都无法正常使用(在输入法选单内会变成灰色)。针对需要填写敏感数据的场合,使用 SecureEventInput 无可厚非。但是,用 EnableSecureEventInput() 开启该模式之后,就有义务在输入窗格失焦的那一刻呼叫 DisableSecureEventInput() 来结束这种状态。这种状态还常见于后台辅助 App 当中、或者某个 App 在叫出该模式之后失去响应(这样的话,哪怕被切换到后台,SecureEventInput 也不会自动解除)。";
|
||||
"lblDevZoneTitleDescription.title" = "警告:该页面仅作未来功能测试所用。\n在此列出的功能并非处于完全可用之状态。";
|
||||
"lblIntonationKeyBehavior.title" = "指定声调键(在注拼槽为「空」状态时)的行为。";
|
||||
"lblShiftBkspKeyBehavior.title" = "指定 Shift+BackSpace 组合键率先尝试的行为。";
|
||||
|
|
|
@ -47,6 +47,7 @@
|
|||
"chkAllowBoostingSingleKanjiAsUserPhrase.title" = "允許藉由標記模式將可以就地升權/排除的候選字詞的最短詞長設為單個漢字";
|
||||
"chkAlsoConfirmAssociatedCandidatesByEnter.title" = "允許使用 Enter 確認當前選中的聯想詞";
|
||||
"chkAutoCorrectReadingCombination.title" = "敲字時自動糾正讀音組合";
|
||||
"chkCheckAbusersOfSecureEventInputAPI.title" = "主動偵測正在濫用 SecureEventInput API 的後檯執行緒";
|
||||
"chkConsolidateContextOnCandidateSelection.title" = "在使用選字窗選字時,自動鞏固上下文";
|
||||
"chkFetchSuggestionsFromUserOverrideModel.title" = "在敲字時自動套用來自半衰記憶模組的建議";
|
||||
"chkHardenVerticalPunctuations.title" = "在縱排書寫時,強制轉換標點為縱排形式(不推薦)";
|
||||
|
@ -84,6 +85,7 @@
|
|||
"kcM-O6-mLN.title" = "這會阻止任何客體擅自存取尚未遞交的組字區內容。此舉也會全局啟用浮動組字窗。";
|
||||
"lblAcceptLeadingIntonations.title" = "在個別情況下,允許聲調前置鍵入";
|
||||
"lblAlwaysShowTooltipTextsHorizontally.title" = "始終使用橫排來顯示工具提示視窗";
|
||||
"lblCheckAbusersOfSecureEventInputAPI.title" = "這種濫用會導致系統內的所有第三方輸入法全都無法正常使用(在輸入法選單內會變成灰色)。針對需要填寫敏感資料的場合,使用 SecureEventInput 無可厚非。但是,用 EnableSecureEventInput() 開啟該模式之後,就有義務在輸入窗格失焦的那一刻呼叫 DisableSecureEventInput() 來結束這種狀態。這種狀態還常見於後檯輔助 App 當中、或者某個 App 在叫出該模式之後失去回應(這樣的話,哪怕被切換到後檯,SecureEventInput 也不會自動解除)。";
|
||||
"lblDevZoneTitleDescription.title" = "警告:該頁面僅作未來功能測試所用。\n在此列出的功能並非處於完全可用之狀態。";
|
||||
"lblIntonationKeyBehavior.title" = "指定聲調鍵(在注拼槽為「空」狀態時)的行為。";
|
||||
"lblShiftBkspKeyBehavior.title" = "指定 Shift+BackSpace 組合鍵率先嘗試的行為。";
|
||||
|
|
Loading…
Reference in New Issue