Neil
98cce0dc40
fix(e2e): select the selectable input source, not the first match
...
TISCreateInputSourceList can return several entries for one input source
id. A third-party IME publishes a non-selectable parent alongside the
selectable mode, and taking sources.first can return the parent — after
which TISSelectInputSource fails with paramErr (-50) while the caller
reports success from the enable step.
Found with Qingg (com.aodaren.inputmethod.Qingg), which exposes exactly
that pair under one id. Its mode id equals the bundle id, so filtering by
name would not have helped; selectability is the discriminator.
Now filters on kTISPropertyInputSourceIsSelectCapable and falls back to
the old behaviour when nothing advertises it, so single-entry sources are
unaffected. Also enables every entry for the id rather than only the one
being selected: selecting a mode whose parent is still disabled fails the
same way.
Compile-checked, and selecting com.apple.keylayout.ABC still exits 0.
Unrelated to the enable path: on macOS 26.5.2 third-party IMEs are gated
behind a consent sheet in System Settings. TISEnableInputSource returns
noErr immediately regardless, and the enable only lands if that sheet is
answered while the requesting process is still alive.
2026-08-06 22:30:52 -07:00
..
2026-08-06 00:53:56 -07:00
2026-08-03 17:32:13 -07:00
2026-07-20 01:14:17 -07:00
2026-07-06 02:12:32 -07:00
2026-06-29 22:38:29 -07:00
2026-07-15 13:25:24 -07:00
2026-07-28 12:33:17 -07:00
2026-07-13 19:13:19 -07:00
2026-07-28 12:33:17 -07:00
2026-06-10 17:23:12 -07:00
2026-06-19 17:14:55 -07:00
2026-06-11 12:46:43 -07:00
2026-07-13 00:48:51 -07:00
2026-07-10 17:27:47 -07:00
2026-07-10 17:27:47 -07:00
2026-07-30 18:51:11 -07:00
2026-07-30 18:51:11 -07:00
2026-06-07 18:16:53 -07:00
2026-07-20 03:04:28 -04:00
2026-06-08 01:00:29 -07:00
2026-07-30 18:51:11 -07:00
2026-06-28 23:13:03 -07:00
2026-07-28 00:22:22 -07:00
2026-07-20 22:04:01 -04:00
2026-08-03 13:02:56 -07:00
2026-08-03 13:02:56 -07:00
2026-08-03 13:02:56 -07:00
2026-07-16 19:11:34 -07:00
2026-08-03 13:02:56 -07:00
2026-08-01 21:07:58 -07:00
2026-06-29 23:37:30 -07:00
2026-08-03 02:21:56 -07:00
2026-08-06 03:38:37 -07:00
2026-07-20 18:18:11 -07:00
2026-06-07 17:49:01 -07:00
2026-06-07 17:49:01 -07:00
2026-06-07 17:49:01 -07:00
2026-06-29 22:38:29 -07:00
2026-06-17 20:05:55 -07:00
2026-07-27 15:22:55 -07:00
2026-07-21 20:51:28 -07:00
2026-07-19 19:38:44 -07:00
2026-06-29 22:38:29 -07:00
2026-07-25 13:42:28 -07:00
2026-06-29 22:38:29 -07:00
2026-05-13 18:48:14 -07:00
2026-05-13 18:48:14 -07:00
2026-08-03 22:55:17 -07:00
2026-05-30 22:46:38 -07:00
2026-05-30 22:46:38 -07:00
2026-07-26 23:48:20 -07:00
2026-07-06 02:12:32 -07:00
2026-06-19 17:14:55 -07:00
2026-07-20 14:34:53 -07:00
2026-05-25 22:21:39 -07:00
2026-07-28 20:52:09 -07:00
2026-04-27 20:55:47 -07:00
2026-06-22 16:27:33 -07:00
2026-07-29 21:43:45 -07:00
2026-07-29 21:43:45 -07:00
2026-06-09 20:57:43 -07:00
2026-06-10 13:41:05 -07:00
2026-06-29 22:38:29 -07:00
2026-06-29 22:38:29 -07:00
2026-06-29 22:38:29 -07:00
2026-07-05 19:46:49 -07:00
2026-07-22 15:10:29 -07:00
2026-07-29 11:31:35 -07:00
2026-07-10 17:27:47 -07:00
2026-06-29 22:38:29 -07:00
2026-07-31 00:22:53 -07:00
2026-07-29 20:04:55 -07:00
2026-07-30 19:20:02 -07:00
2026-08-06 00:53:56 -07:00
2026-08-06 00:53:56 -07:00
2026-08-03 23:28:55 -07:00
2026-07-31 18:01:24 -07:00
2026-06-29 22:38:29 -07:00
2026-06-29 22:38:29 -07:00
2026-07-20 14:50:12 -07:00
2026-08-03 11:11:14 -07:00
2026-07-22 16:10:53 -07:00
2026-08-06 00:53:56 -07:00
2026-07-17 18:57:26 -07:00
2026-07-23 23:18:03 -07:00
2026-05-25 16:43:22 -07:00
2026-07-04 23:29:05 -07:00
2026-07-31 01:57:41 -07:00
2026-06-22 12:29:18 -07:00
2026-07-20 21:36:15 -07:00
2026-07-13 12:45:46 -07:00
2026-07-22 18:25:05 -07:00
2026-07-22 18:25:05 -07:00
2026-07-30 03:05:10 -07:00
2026-05-19 00:28:55 -07:00
2026-07-25 15:58:40 -07:00
2026-07-09 02:13:13 -07:00
2026-07-19 11:27:29 -07:00
2026-07-29 11:31:35 -07:00
2026-07-30 00:49:23 -07:00
2026-07-30 00:49:23 -07:00
2026-07-30 00:49:23 -07:00
2026-07-29 11:31:35 -07:00
2026-08-03 19:44:30 -07:00
2026-07-30 18:27:06 -07:00
2026-07-30 03:05:10 -07:00
2026-07-31 16:01:44 -07:00
2026-07-29 20:04:55 -07:00
2026-07-29 20:04:55 -07:00
2026-07-27 17:56:07 -07:00
2026-07-27 17:56:07 -07:00
2026-07-28 12:33:17 -07:00
2026-07-27 17:56:07 -07:00
2026-07-31 04:32:23 -07:00
2026-07-31 04:32:23 -07:00
2026-07-05 19:46:49 -07:00
2026-07-15 17:14:10 -07:00
2026-08-01 00:00:12 -07:00
2026-07-23 01:45:24 -07:00
2026-07-23 20:20:00 -07:00
2026-08-03 02:18:05 -07:00
2026-07-22 21:44:30 -07:00
2026-07-12 22:40:57 -07:00
2026-08-03 23:00:02 -07:00
2026-08-03 22:48:37 -07:00
2026-07-27 19:04:56 -07:00
2026-06-29 22:38:29 -07:00
2026-07-17 17:18:36 -07:00
2026-07-17 17:18:36 -07:00
2026-07-12 22:40:57 -07:00
2026-05-21 01:19:49 -04:00
2026-07-28 20:51:14 -07:00
2026-08-06 22:30:52 -07:00
2026-06-29 22:38:29 -07:00
2026-07-05 19:46:49 -07:00
2026-06-29 22:38:29 -07:00
2026-07-16 19:20:05 -07:00
2026-06-02 22:31:57 -07:00
2026-07-06 02:12:32 -07:00
2026-06-10 21:14:53 -07:00
2026-07-05 19:46:49 -07:00
2026-07-25 19:31:44 -07:00
2026-07-30 21:45:44 -07:00
2026-06-20 18:47:39 -07:00
2026-06-16 18:56:52 -07:00
2026-07-20 14:50:12 -07:00
2026-07-30 21:45:44 -07:00
2026-07-25 19:31:44 -07:00
2026-07-04 22:56:55 -07:00
2026-06-22 16:42:20 -07:00
2026-06-22 16:42:20 -07:00
2026-08-03 16:17:00 -07:00
2026-06-22 16:42:20 -07:00
2026-06-22 16:42:20 -07:00
2026-07-31 20:45:52 -07:00
2026-08-03 17:32:13 -07:00
2026-08-03 17:32:13 -07:00
2026-08-03 17:32:13 -07:00
2026-08-03 02:18:05 -07:00
2026-07-29 17:03:15 -07:00
2026-07-12 23:50:00 -07:00
2026-07-24 12:05:38 -07:00
2026-08-02 20:43:27 -07:00
2026-07-11 03:20:55 -07:00
2026-07-11 03:20:55 -07:00
2026-07-31 00:36:09 -07:00
2026-08-03 23:28:55 -07:00
2026-07-20 18:54:44 -07:00
2026-07-20 18:54:44 -07:00
2026-07-10 17:27:47 -07:00
2026-07-05 21:51:32 -07:00
2026-06-19 17:14:55 -07:00
2026-06-10 21:14:53 -07:00
2026-05-16 11:50:26 -07:00
2026-06-25 18:36:11 -07:00
2026-06-18 00:11:32 -07:00
2026-08-03 21:00:57 -07:00
2026-06-29 22:38:29 -07:00
2026-07-20 03:04:28 -04:00
2026-05-25 15:07:40 -07:00
2026-08-06 03:38:37 -07:00
2026-07-27 20:54:02 -07:00
2026-07-14 02:58:34 -07:00
2026-07-05 21:51:32 -07:00
2026-06-20 02:03:24 -07:00
2026-06-10 21:14:53 -07:00
2026-06-19 19:43:42 -07:00
2026-08-01 23:38:46 -07:00
2026-08-01 14:10:27 -07:00
2026-07-10 21:00:31 -07:00
2026-07-10 19:50:44 -07:00
2026-07-20 03:04:28 -04:00
2026-07-29 01:47:20 -07:00
2026-07-12 22:40:57 -07:00
2026-06-09 13:52:58 -07:00
2026-08-06 00:53:56 -07:00
2026-08-03 23:28:55 -07:00
2026-07-29 16:12:20 -07:00
2026-08-03 23:28:55 -07:00
2026-07-19 22:54:39 -04:00
2026-06-19 17:14:55 -07:00
2026-07-27 03:29:35 -07:00
2026-08-03 23:28:55 -07:00
2026-07-30 03:05:10 -07:00
2026-07-10 17:27:47 -07:00
2026-08-06 00:53:56 -07:00
2026-08-06 13:51:06 -07:00
2026-08-06 07:36:35 -07:00
2026-08-06 07:36:35 -07:00
2026-08-06 07:36:35 -07:00
2026-08-06 07:36:35 -07:00
2026-08-06 07:36:35 -07:00
2026-08-01 00:25:35 -07:00
2026-06-20 01:27:41 -07:00
2026-06-20 01:27:41 -07:00
2026-06-27 09:30:29 -07:00
2026-07-06 02:12:32 -07:00
2026-07-12 22:40:57 -07:00
2026-07-16 13:07:44 -07:00
2026-06-21 23:09:01 -07:00
2026-07-14 00:15:34 -07:00
2026-07-29 00:47:18 -07:00
2026-07-14 14:40:40 -07:00
2026-07-15 20:28:39 -07:00
2026-06-24 20:16:14 -07:00
2026-07-17 17:18:36 -07:00
2026-07-17 17:18:36 -07:00
2026-06-20 02:03:24 -07:00
2026-07-16 13:26:15 -07:00
2026-06-22 16:42:20 -07:00
2026-07-10 17:27:47 -07:00
2026-07-13 00:48:51 -07:00
2026-06-22 16:42:20 -07:00
2026-07-17 17:18:36 -07:00
2026-07-29 00:47:18 -07:00
2026-07-06 20:17:35 -07:00
2026-07-13 14:17:49 -07:00
2026-06-23 00:23:34 -07:00
2026-07-15 20:28:39 -07:00
2026-07-16 16:38:20 -07:00
2026-07-22 00:22:36 -07:00
2026-06-19 17:14:55 -07:00
2026-08-01 03:26:30 -07:00
2026-07-10 17:27:47 -07:00
2026-07-28 12:33:17 -07:00
2026-08-03 22:48:22 -07:00
2026-08-03 22:48:22 -07:00
2026-06-23 00:23:34 -07:00
2026-07-20 03:04:28 -04:00
2026-07-25 15:58:40 -07:00
2026-07-05 21:51:32 -07:00
2026-07-05 21:51:32 -07:00
2026-06-12 16:31:24 -07:00
2026-07-16 12:38:31 -07:00
2026-07-17 16:16:17 -07:00
2026-06-22 16:42:20 -07:00
2026-07-13 21:30:10 -07:00
2026-07-20 18:54:44 -07:00
2026-07-14 14:40:40 -07:00
2026-08-03 01:00:58 -07:00
2026-06-19 17:14:55 -07:00
2026-05-15 23:52:37 -07:00
2026-06-07 17:49:01 -07:00
2026-08-02 16:25:56 -07:00
2026-08-06 19:24:44 -07:00
2026-06-29 22:38:29 -07:00
2026-05-17 15:43:53 -04:00
2026-06-18 00:11:32 -07:00
2026-08-03 20:58:25 -07:00
2026-07-05 19:46:49 -07:00
2026-04-19 15:50:19 -07:00
2026-07-13 16:15:44 -07:00
2026-07-22 15:52:42 -07:00
2026-07-31 16:15:20 -07:00
2026-06-29 22:38:29 -07:00
2026-06-18 00:11:32 -07:00
2026-07-10 03:00:51 -07:00
2026-06-18 00:11:32 -07:00
2026-07-10 03:00:51 -07:00
2026-08-01 00:40:47 -07:00