mirror of
https://github.com/rustdesk/rustdesk.git
synced 2025-06-07 18:02:48 +08:00
feat: numeric one-time password (#11846)
Signed-off-by: fufesou <linlong1266@gmail.com>
This commit is contained in:
parent
6ff679c6b4
commit
3c028fe5b5
@ -110,6 +110,8 @@ const String kOptionAllowRemoteConfigModification =
|
|||||||
"allow-remote-config-modification";
|
"allow-remote-config-modification";
|
||||||
const String kOptionVerificationMethod = "verification-method";
|
const String kOptionVerificationMethod = "verification-method";
|
||||||
const String kOptionApproveMode = "approve-mode";
|
const String kOptionApproveMode = "approve-mode";
|
||||||
|
const String kOptionAllowNumericOneTimePassword =
|
||||||
|
"allow-numeric-one-time-password";
|
||||||
const String kOptionCollapseToolbar = "collapse_toolbar";
|
const String kOptionCollapseToolbar = "collapse_toolbar";
|
||||||
const String kOptionShowRemoteCursor = "show_remote_cursor";
|
const String kOptionShowRemoteCursor = "show_remote_cursor";
|
||||||
const String kOptionFollowRemoteCursor = "follow_remote_cursor";
|
const String kOptionFollowRemoteCursor = "follow_remote_cursor";
|
||||||
|
@ -1097,6 +1097,34 @@ class _SafetyState extends State<_Safety> with AutomaticKeepAliveClientMixin {
|
|||||||
))
|
))
|
||||||
.toList();
|
.toList();
|
||||||
|
|
||||||
|
final isOptFixedNumOTP =
|
||||||
|
isOptionFixed(kOptionAllowNumericOneTimePassword);
|
||||||
|
final isNumOPTChangable = !isOptFixedNumOTP && tmpEnabled && !locked;
|
||||||
|
final numericOneTimePassword = GestureDetector(
|
||||||
|
child: InkWell(
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
Checkbox(
|
||||||
|
value: model.allowNumericOneTimePassword,
|
||||||
|
onChanged: isNumOPTChangable
|
||||||
|
? (bool? v) {
|
||||||
|
model.switchAllowNumericOneTimePassword();
|
||||||
|
}
|
||||||
|
: null)
|
||||||
|
.marginOnly(right: 5),
|
||||||
|
Expanded(
|
||||||
|
child: Text(
|
||||||
|
translate('Numeric one-time password'),
|
||||||
|
style: TextStyle(
|
||||||
|
color: disabledTextColor(context, isNumOPTChangable)),
|
||||||
|
))
|
||||||
|
],
|
||||||
|
)),
|
||||||
|
onTap: isNumOPTChangable
|
||||||
|
? () => model.switchAllowNumericOneTimePassword()
|
||||||
|
: null,
|
||||||
|
).marginOnly(left: _kContentHSubMargin - 5);
|
||||||
|
|
||||||
final modeKeys = <String>[
|
final modeKeys = <String>[
|
||||||
'password',
|
'password',
|
||||||
'click',
|
'click',
|
||||||
@ -1133,6 +1161,7 @@ class _SafetyState extends State<_Safety> with AutomaticKeepAliveClientMixin {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
enabled: tmpEnabled && !locked),
|
enabled: tmpEnabled && !locked),
|
||||||
|
numericOneTimePassword,
|
||||||
if (usePassword) radios[1],
|
if (usePassword) radios[1],
|
||||||
if (usePassword)
|
if (usePassword)
|
||||||
_SubButton('Set permanent password', setPasswordDialog,
|
_SubButton('Set permanent password', setPasswordDialog,
|
||||||
|
@ -56,6 +56,10 @@ class _DropDownAction extends StatelessWidget {
|
|||||||
final verificationMethod = gFFI.serverModel.verificationMethod;
|
final verificationMethod = gFFI.serverModel.verificationMethod;
|
||||||
final showPasswordOption = approveMode != 'click';
|
final showPasswordOption = approveMode != 'click';
|
||||||
final isApproveModeFixed = isOptionFixed(kOptionApproveMode);
|
final isApproveModeFixed = isOptionFixed(kOptionApproveMode);
|
||||||
|
final isNumericOneTimePasswordFixed =
|
||||||
|
isOptionFixed(kOptionAllowNumericOneTimePassword);
|
||||||
|
final isAllowNumericOneTimePassword =
|
||||||
|
gFFI.serverModel.allowNumericOneTimePassword;
|
||||||
return [
|
return [
|
||||||
PopupMenuItem(
|
PopupMenuItem(
|
||||||
enabled: gFFI.serverModel.connectStatus > 0,
|
enabled: gFFI.serverModel.connectStatus > 0,
|
||||||
@ -94,6 +98,14 @@ class _DropDownAction extends StatelessWidget {
|
|||||||
value: "setTemporaryPasswordLength",
|
value: "setTemporaryPasswordLength",
|
||||||
child: Text(translate("One-time password length")),
|
child: Text(translate("One-time password length")),
|
||||||
),
|
),
|
||||||
|
if (showPasswordOption &&
|
||||||
|
verificationMethod != kUsePermanentPassword)
|
||||||
|
PopupMenuItem(
|
||||||
|
value: "allowNumericOneTimePassword",
|
||||||
|
child: listTile(translate("Numeric one-time password"),
|
||||||
|
isAllowNumericOneTimePassword),
|
||||||
|
enabled: !isNumericOneTimePasswordFixed,
|
||||||
|
),
|
||||||
if (showPasswordOption) const PopupMenuDivider(),
|
if (showPasswordOption) const PopupMenuDivider(),
|
||||||
if (showPasswordOption)
|
if (showPasswordOption)
|
||||||
PopupMenuItem(
|
PopupMenuItem(
|
||||||
@ -124,6 +136,9 @@ class _DropDownAction extends StatelessWidget {
|
|||||||
setPasswordDialog();
|
setPasswordDialog();
|
||||||
} else if (value == "setTemporaryPasswordLength") {
|
} else if (value == "setTemporaryPasswordLength") {
|
||||||
setTemporaryPasswordLengthDialog(gFFI.dialogManager);
|
setTemporaryPasswordLengthDialog(gFFI.dialogManager);
|
||||||
|
} else if (value == "allowNumericOneTimePassword") {
|
||||||
|
gFFI.serverModel.switchAllowNumericOneTimePassword();
|
||||||
|
gFFI.serverModel.updatePasswordModel();
|
||||||
} else if (value == kUsePermanentPassword ||
|
} else if (value == kUsePermanentPassword ||
|
||||||
value == kUseTemporaryPassword ||
|
value == kUseTemporaryPassword ||
|
||||||
value == kUseBothPasswords) {
|
value == kUseBothPasswords) {
|
||||||
|
@ -36,6 +36,7 @@ class ServerModel with ChangeNotifier {
|
|||||||
int _connectStatus = 0; // Rendezvous Server status
|
int _connectStatus = 0; // Rendezvous Server status
|
||||||
String _verificationMethod = "";
|
String _verificationMethod = "";
|
||||||
String _temporaryPasswordLength = "";
|
String _temporaryPasswordLength = "";
|
||||||
|
bool _allowNumericOneTimePassword = false;
|
||||||
String _approveMode = "";
|
String _approveMode = "";
|
||||||
int _zeroClientLengthCounter = 0;
|
int _zeroClientLengthCounter = 0;
|
||||||
|
|
||||||
@ -112,6 +113,12 @@ class ServerModel with ChangeNotifier {
|
|||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool get allowNumericOneTimePassword => _allowNumericOneTimePassword;
|
||||||
|
switchAllowNumericOneTimePassword() async {
|
||||||
|
await mainSetBoolOption(
|
||||||
|
kOptionAllowNumericOneTimePassword, !_allowNumericOneTimePassword);
|
||||||
|
}
|
||||||
|
|
||||||
TextEditingController get serverId => _serverId;
|
TextEditingController get serverId => _serverId;
|
||||||
|
|
||||||
TextEditingController get serverPasswd => _serverPasswd;
|
TextEditingController get serverPasswd => _serverPasswd;
|
||||||
@ -227,6 +234,8 @@ class ServerModel with ChangeNotifier {
|
|||||||
final temporaryPasswordLength =
|
final temporaryPasswordLength =
|
||||||
await bind.mainGetOption(key: "temporary-password-length");
|
await bind.mainGetOption(key: "temporary-password-length");
|
||||||
final approveMode = await bind.mainGetOption(key: kOptionApproveMode);
|
final approveMode = await bind.mainGetOption(key: kOptionApproveMode);
|
||||||
|
final numericOneTimePassword =
|
||||||
|
await mainGetBoolOption(kOptionAllowNumericOneTimePassword);
|
||||||
/*
|
/*
|
||||||
var hideCm = option2bool(
|
var hideCm = option2bool(
|
||||||
'allow-hide-cm', await bind.mainGetOption(key: 'allow-hide-cm'));
|
'allow-hide-cm', await bind.mainGetOption(key: 'allow-hide-cm'));
|
||||||
@ -265,6 +274,10 @@ class ServerModel with ChangeNotifier {
|
|||||||
_temporaryPasswordLength = temporaryPasswordLength;
|
_temporaryPasswordLength = temporaryPasswordLength;
|
||||||
update = true;
|
update = true;
|
||||||
}
|
}
|
||||||
|
if (_allowNumericOneTimePassword != numericOneTimePassword) {
|
||||||
|
_allowNumericOneTimePassword = numericOneTimePassword;
|
||||||
|
update = true;
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
if (_hideCm != hideCm) {
|
if (_hideCm != hideCm) {
|
||||||
_hideCm = hideCm;
|
_hideCm = hideCm;
|
||||||
@ -817,8 +830,8 @@ class Client {
|
|||||||
|
|
||||||
RxInt unreadChatMessageCount = 0.obs;
|
RxInt unreadChatMessageCount = 0.obs;
|
||||||
|
|
||||||
Client(this.id, this.authorized, this.isFileTransfer, this.isViewCamera, this.name, this.peerId,
|
Client(this.id, this.authorized, this.isFileTransfer, this.isViewCamera,
|
||||||
this.keyboard, this.clipboard, this.audio);
|
this.name, this.peerId, this.keyboard, this.clipboard, this.audio);
|
||||||
|
|
||||||
Client.fromJson(Map<String, dynamic> json) {
|
Client.fromJson(Map<String, dynamic> json) {
|
||||||
id = json['id'];
|
id = json['id'];
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit 53709d8f8dd09a1491f4d8866e9643804caa380b
|
Subproject commit 15a71f07a5bd8f7951b6869bea06f85064e41c67
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", ""),
|
("Use WebSocket", ""),
|
||||||
("Trackpad speed", ""),
|
("Trackpad speed", ""),
|
||||||
("Default trackpad speed", ""),
|
("Default trackpad speed", ""),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", ""),
|
("Use WebSocket", ""),
|
||||||
("Trackpad speed", ""),
|
("Trackpad speed", ""),
|
||||||
("Default trackpad speed", ""),
|
("Default trackpad speed", ""),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", ""),
|
("Use WebSocket", ""),
|
||||||
("Trackpad speed", ""),
|
("Trackpad speed", ""),
|
||||||
("Default trackpad speed", ""),
|
("Default trackpad speed", ""),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", ""),
|
("Use WebSocket", ""),
|
||||||
("Trackpad speed", ""),
|
("Trackpad speed", ""),
|
||||||
("Default trackpad speed", ""),
|
("Default trackpad speed", ""),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", "使用 WebSocket"),
|
("Use WebSocket", "使用 WebSocket"),
|
||||||
("Trackpad speed", "触控板速度"),
|
("Trackpad speed", "触控板速度"),
|
||||||
("Default trackpad speed", "默认触控板速度"),
|
("Default trackpad speed", "默认触控板速度"),
|
||||||
|
("Numeric one-time password", "一次性密码为数字"),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", ""),
|
("Use WebSocket", ""),
|
||||||
("Trackpad speed", ""),
|
("Trackpad speed", ""),
|
||||||
("Default trackpad speed", ""),
|
("Default trackpad speed", ""),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", ""),
|
("Use WebSocket", ""),
|
||||||
("Trackpad speed", ""),
|
("Trackpad speed", ""),
|
||||||
("Default trackpad speed", ""),
|
("Default trackpad speed", ""),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", "WebSocket verwenden"),
|
("Use WebSocket", "WebSocket verwenden"),
|
||||||
("Trackpad speed", "Geschwindigkeit des Trackpads"),
|
("Trackpad speed", "Geschwindigkeit des Trackpads"),
|
||||||
("Default trackpad speed", "Standardgeschwindigkeit des Trackpads"),
|
("Default trackpad speed", "Standardgeschwindigkeit des Trackpads"),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", ""),
|
("Use WebSocket", ""),
|
||||||
("Trackpad speed", ""),
|
("Trackpad speed", ""),
|
||||||
("Default trackpad speed", ""),
|
("Default trackpad speed", ""),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", ""),
|
("Use WebSocket", ""),
|
||||||
("Trackpad speed", ""),
|
("Trackpad speed", ""),
|
||||||
("Default trackpad speed", ""),
|
("Default trackpad speed", ""),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", ""),
|
("Use WebSocket", ""),
|
||||||
("Trackpad speed", ""),
|
("Trackpad speed", ""),
|
||||||
("Default trackpad speed", ""),
|
("Default trackpad speed", ""),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", ""),
|
("Use WebSocket", ""),
|
||||||
("Trackpad speed", ""),
|
("Trackpad speed", ""),
|
||||||
("Default trackpad speed", ""),
|
("Default trackpad speed", ""),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", ""),
|
("Use WebSocket", ""),
|
||||||
("Trackpad speed", ""),
|
("Trackpad speed", ""),
|
||||||
("Default trackpad speed", ""),
|
("Default trackpad speed", ""),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -696,5 +696,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("update-failed-check-msi-tip", "بررسی روش نصب انجام نشد. لطفاً برای بارگیری از صفحه انتشار ، روی دکمه 'بارگیری' کلیک کنید و به صورت دستی ارتقا دهید."),
|
("update-failed-check-msi-tip", "بررسی روش نصب انجام نشد. لطفاً برای بارگیری از صفحه انتشار ، روی دکمه 'بارگیری' کلیک کنید و به صورت دستی ارتقا دهید."),
|
||||||
("websocket_tip", "فقط اتصالات رله پشتیبانی می شوند ، WebSocket هنگام استفاده از ."),
|
("websocket_tip", "فقط اتصالات رله پشتیبانی می شوند ، WebSocket هنگام استفاده از ."),
|
||||||
("Use WebSocket", "استفاده کنید WebSocket از"),
|
("Use WebSocket", "استفاده کنید WebSocket از"),
|
||||||
|
("Trackpad speed", ""),
|
||||||
|
("Default trackpad speed", ""),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", "Utiliser WebSocket"),
|
("Use WebSocket", "Utiliser WebSocket"),
|
||||||
("Trackpad speed", "Vitesse du pavé tactile"),
|
("Trackpad speed", "Vitesse du pavé tactile"),
|
||||||
("Default trackpad speed", "Vitesse par défaut du pavé tactile"),
|
("Default trackpad speed", "Vitesse par défaut du pavé tactile"),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", ""),
|
("Use WebSocket", ""),
|
||||||
("Trackpad speed", ""),
|
("Trackpad speed", ""),
|
||||||
("Default trackpad speed", ""),
|
("Default trackpad speed", ""),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", "השתמש ב־WebSocket"),
|
("Use WebSocket", "השתמש ב־WebSocket"),
|
||||||
("Trackpad speed", "מהירות משטח מגע"),
|
("Trackpad speed", "מהירות משטח מגע"),
|
||||||
("Default trackpad speed", "מהירות ברירת מחדל של משטח מגע"),
|
("Default trackpad speed", "מהירות ברירת מחדל של משטח מגע"),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", ""),
|
("Use WebSocket", ""),
|
||||||
("Trackpad speed", ""),
|
("Trackpad speed", ""),
|
||||||
("Default trackpad speed", ""),
|
("Default trackpad speed", ""),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", "WebSocket használata"),
|
("Use WebSocket", "WebSocket használata"),
|
||||||
("Trackpad speed", "Érintőpad sebessége"),
|
("Trackpad speed", "Érintőpad sebessége"),
|
||||||
("Default trackpad speed", "Alapértelmezett érintőpad sebessége"),
|
("Default trackpad speed", "Alapértelmezett érintőpad sebessége"),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", ""),
|
("Use WebSocket", ""),
|
||||||
("Trackpad speed", ""),
|
("Trackpad speed", ""),
|
||||||
("Default trackpad speed", ""),
|
("Default trackpad speed", ""),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", "Usa WebSocket"),
|
("Use WebSocket", "Usa WebSocket"),
|
||||||
("Trackpad speed", "Velocità trackpad"),
|
("Trackpad speed", "Velocità trackpad"),
|
||||||
("Default trackpad speed", "Velocità predefinita trackpad"),
|
("Default trackpad speed", "Velocità predefinita trackpad"),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", ""),
|
("Use WebSocket", ""),
|
||||||
("Trackpad speed", ""),
|
("Trackpad speed", ""),
|
||||||
("Default trackpad speed", ""),
|
("Default trackpad speed", ""),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", "웹소켓 사용"),
|
("Use WebSocket", "웹소켓 사용"),
|
||||||
("Trackpad speed", "트랙패드 속도"),
|
("Trackpad speed", "트랙패드 속도"),
|
||||||
("Default trackpad speed", "기본 트랙패드 속도"),
|
("Default trackpad speed", "기본 트랙패드 속도"),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", ""),
|
("Use WebSocket", ""),
|
||||||
("Trackpad speed", ""),
|
("Trackpad speed", ""),
|
||||||
("Default trackpad speed", ""),
|
("Default trackpad speed", ""),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", ""),
|
("Use WebSocket", ""),
|
||||||
("Trackpad speed", ""),
|
("Trackpad speed", ""),
|
||||||
("Default trackpad speed", ""),
|
("Default trackpad speed", ""),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", "Lietot WebSocket"),
|
("Use WebSocket", "Lietot WebSocket"),
|
||||||
("Trackpad speed", "Skārienpaliktņa ātrums"),
|
("Trackpad speed", "Skārienpaliktņa ātrums"),
|
||||||
("Default trackpad speed", "Noklusējuma skārienpaliktņa ātrums"),
|
("Default trackpad speed", "Noklusējuma skārienpaliktņa ātrums"),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", ""),
|
("Use WebSocket", ""),
|
||||||
("Trackpad speed", ""),
|
("Trackpad speed", ""),
|
||||||
("Default trackpad speed", ""),
|
("Default trackpad speed", ""),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", "Gebruik het WebSocketprotocol"),
|
("Use WebSocket", "Gebruik het WebSocketprotocol"),
|
||||||
("Trackpad speed", "Snelheid Trackpad"),
|
("Trackpad speed", "Snelheid Trackpad"),
|
||||||
("Default trackpad speed", "Standaardsnelheid Trackpad"),
|
("Default trackpad speed", "Standaardsnelheid Trackpad"),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", ""),
|
("Use WebSocket", ""),
|
||||||
("Trackpad speed", ""),
|
("Trackpad speed", ""),
|
||||||
("Default trackpad speed", ""),
|
("Default trackpad speed", ""),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", ""),
|
("Use WebSocket", ""),
|
||||||
("Trackpad speed", ""),
|
("Trackpad speed", ""),
|
||||||
("Default trackpad speed", ""),
|
("Default trackpad speed", ""),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", ""),
|
("Use WebSocket", ""),
|
||||||
("Trackpad speed", ""),
|
("Trackpad speed", ""),
|
||||||
("Default trackpad speed", ""),
|
("Default trackpad speed", ""),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", ""),
|
("Use WebSocket", ""),
|
||||||
("Trackpad speed", ""),
|
("Trackpad speed", ""),
|
||||||
("Default trackpad speed", ""),
|
("Default trackpad speed", ""),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", "Использовать WebSocket"),
|
("Use WebSocket", "Использовать WebSocket"),
|
||||||
("Trackpad speed", "Скорость трекпада"),
|
("Trackpad speed", "Скорость трекпада"),
|
||||||
("Default trackpad speed", "Скорость трекпада по умолчанию"),
|
("Default trackpad speed", "Скорость трекпада по умолчанию"),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", ""),
|
("Use WebSocket", ""),
|
||||||
("Trackpad speed", ""),
|
("Trackpad speed", ""),
|
||||||
("Default trackpad speed", ""),
|
("Default trackpad speed", ""),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", ""),
|
("Use WebSocket", ""),
|
||||||
("Trackpad speed", ""),
|
("Trackpad speed", ""),
|
||||||
("Default trackpad speed", ""),
|
("Default trackpad speed", ""),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", ""),
|
("Use WebSocket", ""),
|
||||||
("Trackpad speed", ""),
|
("Trackpad speed", ""),
|
||||||
("Default trackpad speed", ""),
|
("Default trackpad speed", ""),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", ""),
|
("Use WebSocket", ""),
|
||||||
("Trackpad speed", ""),
|
("Trackpad speed", ""),
|
||||||
("Default trackpad speed", ""),
|
("Default trackpad speed", ""),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", ""),
|
("Use WebSocket", ""),
|
||||||
("Trackpad speed", ""),
|
("Trackpad speed", ""),
|
||||||
("Default trackpad speed", ""),
|
("Default trackpad speed", ""),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", ""),
|
("Use WebSocket", ""),
|
||||||
("Trackpad speed", ""),
|
("Trackpad speed", ""),
|
||||||
("Default trackpad speed", ""),
|
("Default trackpad speed", ""),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", ""),
|
("Use WebSocket", ""),
|
||||||
("Trackpad speed", ""),
|
("Trackpad speed", ""),
|
||||||
("Default trackpad speed", ""),
|
("Default trackpad speed", ""),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", ""),
|
("Use WebSocket", ""),
|
||||||
("Trackpad speed", ""),
|
("Trackpad speed", ""),
|
||||||
("Default trackpad speed", ""),
|
("Default trackpad speed", ""),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", ""),
|
("Use WebSocket", ""),
|
||||||
("Trackpad speed", ""),
|
("Trackpad speed", ""),
|
||||||
("Default trackpad speed", ""),
|
("Default trackpad speed", ""),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", ""),
|
("Use WebSocket", ""),
|
||||||
("Trackpad speed", ""),
|
("Trackpad speed", ""),
|
||||||
("Default trackpad speed", ""),
|
("Default trackpad speed", ""),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", "使用 WebSocket"),
|
("Use WebSocket", "使用 WebSocket"),
|
||||||
("Trackpad speed", "觸控板速度"),
|
("Trackpad speed", "觸控板速度"),
|
||||||
("Default trackpad speed", "預設觸控板速度"),
|
("Default trackpad speed", "預設觸控板速度"),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", ""),
|
("Use WebSocket", ""),
|
||||||
("Trackpad speed", ""),
|
("Trackpad speed", ""),
|
||||||
("Default trackpad speed", ""),
|
("Default trackpad speed", ""),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Use WebSocket", ""),
|
("Use WebSocket", ""),
|
||||||
("Trackpad speed", ""),
|
("Trackpad speed", ""),
|
||||||
("Default trackpad speed", ""),
|
("Default trackpad speed", ""),
|
||||||
|
("Numeric one-time password", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user