Compare commits

...

150 Commits
v2.1 ... master

Author SHA1 Message Date
Jesús A. Álvarez
fdbf6aab7e iPad: when creating a new window, take over and close the previous one 2024-03-04 23:54:25 +01:00
Jesús A. Álvarez
19c0072d4c fix quick actions 2024-03-04 23:39:41 +01:00
Jesús A. Álvarez
da3f639ef2 prefer pixel-perfect scaling when filter is set to nearest 2024-03-02 11:51:29 +01:00
Jesús A. Álvarez
65d377884b auto-hide home indicator 2024-03-01 22:49:04 +01:00
Jesús A. Álvarez
2dab9cca28 update README 2024-03-01 22:24:34 +01:00
Jesús A. Álvarez
fcb71f79ff visionOS: use native toggles in menus 2024-02-17 15:21:41 +01:00
Jesús A. Álvarez
2ccef4e3a6 visionOS: add “run in background” setting and respect it 2024-02-17 15:21:41 +01:00
Jesús A. Álvarez
fca6943bfe close keyboard when closing screen 2024-02-17 14:42:31 +01:00
Jesús A. Álvarez
afef4e5b25 always show keyboard again when pressing keyboard button 2024-02-17 14:41:22 +01:00
Jesús A. Álvarez
772ce2c326 handle mouse input with UIHoverGestureRecognizer 2024-02-17 14:35:19 +01:00
Jesús A. Álvarez
ef6ef61037 target iOS 13.4 2024-02-17 13:31:39 +01:00
Jesús A. Álvarez
3b4244e4e3 ifdef around all visionOS-specific things 2024-02-17 13:25:32 +01:00
Jesús A. Álvarez
c1c7c93c6a handle key input with UIPress (iOS ≥9)
contributed by Steven Troughton-Smith
2024-02-17 13:25:32 +01:00
Jesús A. Álvarez
61dc6ddcd7 target iOS 13.0 2024-02-17 13:20:50 +01:00
Jesús A. Álvarez
0204043e10 add glass background to bar, remove from buttons 2024-02-16 21:29:22 +01:00
Jesús A. Álvarez
043c20b645 visionOS: make keyboard resizable ±25% 2024-02-10 21:37:13 +01:00
Jesús A. Álvarez
7a93412c3f visionOS: add reset, interrupt and shut down controls 2024-02-10 14:52:06 +01:00
Jesús A. Álvarez
e1adde78f0 visionOS: hide toolbar from insert disk modal 2024-02-10 14:43:09 +01:00
Jesús A. Álvarez
632f01f169 visionOS: native settings menu 2024-02-10 14:43:09 +01:00
Jesús A. Álvarez
ed99d1bbfb visionOS: show layout menu from keyboard button 2024-02-10 14:23:42 +01:00
Jesús A. Álvarez
53cb92f4ef find keyboard layouts from AppDelegate 2024-02-10 14:09:02 +01:00
Jesús A. Álvarez
22256824d2 make AppDelegate a bit swifty 2024-02-10 13:36:20 +01:00
Jesús A. Álvarez
3b96faf502 fix bundle identifier for MacII-512x384 2024-02-10 13:31:28 +01:00
Jesús A. Álvarez
33e01e0847 visionOS: always use touchscreen 2024-02-10 12:19:20 +01:00
Jesús A. Álvarez
7c1f280374 keyboard for visionOS 2024-02-10 12:15:01 +01:00
Jesús A. Álvarez
4aef44bf76 add icon for visionOS 2024-02-10 12:02:13 +01:00
Jesús A. Álvarez
cf86226c6b build for visionOS 2024-02-09 16:06:37 +01:00
Jesús A. Álvarez
8f4bc46d12 target iOS 12.0 2024-02-09 15:39:32 +01:00
Jesús A. Álvarez
003c075108 update readme 2023-09-27 20:37:16 +02:00
Jesús A. Álvarez
e2707af5ce use release build by default 2023-09-27 19:42:58 +02:00
Jesús A. Álvarez
e8c8b8375f add 512×384 variant of Mac II 2023-09-27 19:42:36 +02:00
Jesús A. Álvarez
3db3bb6091 fix build with Xcode 15 2023-09-27 19:29:43 +02:00
Jesús A. Álvarez
7e2fc6ef59 update copyright year, change twitter link to mastodon 2023-02-03 21:48:24 +01:00
Jesús A. Álvarez
ceb0813eee steal key events if handled by emulator
fixes #45 somewhat, but not for ⌘-Q or ⌘-H
2023-02-01 18:11:49 +01:00
Jesús A. Álvarez
1cfc5bd94f fix crash when deleting files on iPad 2022-05-26 20:24:05 +02:00
Jesús A. Álvarez
aa52115d41 remove xpath usage from makefile 2022-05-26 19:50:48 +02:00
Jesús A. Álvarez
1a4d707447 call it 2.5 2022-05-26 19:15:46 +02:00
Jesús A. Álvarez
0b1eb1a37b add boot disks to app's quick actions 2022-05-26 19:12:09 +02:00
Jesús A. Álvarez
d93ae3ce89 use default modal presentation transition for settings and disks
getting it right on iPad and iPhone seems too much of a hack
2022-05-26 17:43:16 +02:00
Jesús A. Álvarez
ada4e0a4dd update to Mini vMac 37.03 beta 2022-05-26 16:22:32 +02:00
Bart
a70c23fc70 use https URL for submodules 2022-01-05 18:24:09 +01:00
Jesús A. Álvarez
d1eab98945 update README 2020-10-01 23:03:02 +02:00
Jesús A. Álvarez
21de19443a fix broken view after interactive sheet dismiss on iOS 13 2020-10-01 22:50:38 +02:00
Jesús A. Álvarez
479b9c243c show delete confirmation as action sheet 2020-10-01 22:50:38 +02:00
Jesús A. Álvarez
09fd85ca16 make launch screen black 2020-10-01 22:50:38 +02:00
Jesús A. Álvarez
c4bd05128f use contextual menu for disk images on iOS 13 or later 2020-10-01 22:50:38 +02:00
Jesús A. Álvarez
9b74889621 handle dark mode on activity indicator 2020-10-01 22:50:38 +02:00
Jesús A. Álvarez
c548061f42 add missing nullability annotation 2020-10-01 22:50:38 +02:00
Jesús A. Álvarez
dfc5c9e01f set minimum target to iOS 9
remove iOS 8 stuff
2020-10-01 22:50:37 +02:00
Jesús A. Álvarez
cd0bfb0638 bump version 2020-09-30 22:17:37 +02:00
Jesús A. Álvarez
66ed7bd009 update Mini vMac to b37.200926 2020-09-30 22:15:46 +02:00
Jesús A. Álvarez
79fb9b2c25 clear screen immediately when switching emulators 2020-09-25 22:17:04 +02:00
Jesús A. Álvarez
bf2cde331d remove unused files from previous Mini vMac source import 2020-09-25 22:15:39 +02:00
Jesús A. Álvarez
dead799d16 only reset speed when saved speed is faster than default
this saves the preferences, but still prevents accidentally locking up the app by setting a fast speed on a low end device
2020-09-25 22:13:52 +02:00
Jesús A. Álvarez
fd665a1761 allow changing emulated machine without relaunching the app 2020-09-25 00:29:30 +02:00
Jesús A. Álvarez
af3b2ba5b1 cache bundle icons manually
otherwise they seem to get mixed up on iOS 14
2020-09-25 00:16:53 +02:00
Jesús A. Álvarez
b72a6f058a update to Mini vMac b37.200912 with patch fixing wintergames 2020-09-24 22:54:05 +02:00
Jesús A. Álvarez
d2fda78a9c updated README.md 2020-06-23 20:21:54 +02:00
Jesús A. Álvarez
44f090a506 show gesture help screen by default 2020-06-23 19:19:28 +02:00
Jesús A. Álvarez
ddfe6201a6 handle hardware mouse in trackpad mode 2020-06-23 19:07:30 +02:00
Jesús A. Álvarez
5ab79e73e2 don't annotate whole view controller with API_AVAILABLE(ios(13.4)) 2020-06-23 18:39:05 +02:00
Jesús A. Álvarez
9d3f2bd98c add gesture help screen 2020-06-23 18:32:07 +02:00
Jesús A. Álvarez
038ea05f0b remove flip transition between settings and disk views
it's based on ancient hacks that don't look good on modern iOS
2020-06-22 21:07:01 +02:00
Jesús A. Álvarez
d2b8238109 update version 2020-06-22 18:16:37 +02:00
Jesús A. Álvarez
22c1849d70 support split screen multitasking 2020-06-22 18:16:37 +02:00
Jesús A. Álvarez
9a76a98ef9 put emulator bundles in Frameworks instead of PlugIns
fixes sideloading with AltStore
2020-06-22 14:38:01 +02:00
Jesús A. Álvarez
95756edc1f makefile: read version from built Info.plist 2020-05-14 19:15:24 +02:00
Jesús A. Álvarez
5d3ff85601 update version and copyright 2020-05-10 20:42:40 +02:00
Jesús A. Álvarez
a5ef2cdb68 support dark mode on keyboard view 2020-05-10 20:41:33 +02:00
Jesús A. Álvarez
6f4cb689e4 add transparency to Mac II icon 2020-05-10 19:48:02 +02:00
Jesús A. Álvarez
877618862d support dark mode in settings and insert disk views 2020-05-10 19:41:01 +02:00
Jesús A. Álvarez
4d397d9c94 fix crash when pressing dead keys on physical keyboard 2020-04-03 12:35:55 +02:00
Jesús A. Álvarez
3af32e9acc
Merge pull request #35 from narbs/master
Add support for mouse pointer interaction introduced in iOS 13.4
2020-03-31 12:09:56 +02:00
narbs
1932ed3e03
Update Mini vMac/ViewController.m to hide the iOS system pointer when running on iOS 13.4
Uses the UIPointerStyle hiddenPointerStyle to set hide the iOS cursor in the pointerInteraction:styleForRegion delegate method. Also returns the defaultRegion in the pointerInteraction:regionForRequest:defaultRegion delegate method instead of returning nil

Co-Authored-By: Jesús A. Álvarez <zydeco@namedfork.net>
2020-03-31 13:00:57 +10:00
Christian Clare
ee1c0357f2 Add support for mouse pointer interaction introduce d in iOS 13.4. When a mouse is connected to an iPad, the emulated mouse pointer will follow the iOS mouse pointer movements. Change is backward compatible to earlier iOS versions < 13.4 without mouse pointer support 2020-03-29 23:51:04 +10:00
Jesús A. Álvarez
455db22df5 fix mouse offset on notched screens 2019-05-03 21:46:04 +02:00
Jesús A. Álvarez
e4c4d2f85c update README.md 2019-05-03 21:45:22 +02:00
Jesús A. Álvarez
857ef56be5 update to Mini vMac 36.04 2019-05-03 21:21:30 +02:00
Jesús A. Álvarez
da174dde3d update build for Xcode 10 2018-09-30 22:14:05 +02:00
Jesús A. Álvarez
3ff092ded5 defer system gestures 2018-04-28 16:53:39 +02:00
Jesús A. Álvarez
49fa9c0182 copy opened files instead of moving 2018-04-28 13:05:20 +02:00
Jesús A. Álvarez
f597a5ab9e update copyright year 2018-04-28 12:12:43 +02:00
Jesús A. Álvarez
40d93319f7 clavier français 2018-04-28 12:03:30 +02:00
Jesús A. Álvarez
b73ced1dc2 bump version 2018-04-28 11:50:29 +02:00
Jesús A. Álvarez
1700d38dd7 show documents directory in iOS 11 files 2018-04-28 11:50:22 +02:00
Jesús A. Álvarez
a6e6014220 also load keyboard layouts from Documents/Keyboard Layouts 2018-04-28 11:49:05 +02:00
Jesús A. Álvarez
097ac4e64d round scale up to 1.0 if it's > 0.9 2017-11-30 20:35:38 +01:00
Jesús A. Álvarez
97ab910a84 use nearest neighbour interpolation if scale is integer 2017-11-30 20:34:59 +01:00
Jesús A. Álvarez
6d5d57787b add settings to choose display scaling filter
resolves #23
2017-11-30 20:09:08 +01:00
Jesús A. Álvarez
838f7b241e update insets for iPhone X 2017-11-28 19:25:33 +01:00
Jesús A. Álvarez
f7c3af636d convert to unix line endings 2017-10-01 20:30:42 +02:00
Jesús A. Álvarez
0643f8af6b update project settings for Xcode 9 2017-10-01 16:22:55 +02:00
Jesús A. Álvarez
e010bed7d1 add missing super call 2017-10-01 13:47:47 +02:00
Jesús A. Álvarez
041c986ac4 ensure inserted disk paths are always standardized 2017-10-01 13:39:18 +02:00
Jesús A. Álvarez
c3cc54e1f4 show version of Mini vMac core in settings 2017-09-23 15:54:59 +02:00
Jesús A. Álvarez
deeb7b1247 update version and copyright year 2017-09-23 15:54:59 +02:00
Jesús A. Álvarez
49d44a6847 update to Mini vMac 3.5.8 (resolves #21) 2017-09-23 15:54:59 +02:00
Jesús A. Álvarez
cd39334ebb update readme 2016-12-04 22:37:32 +01:00
Jesús A. Álvarez
9f2e3f87c0 support bluetooth HID pointing devices through BTC Mouse 2016-12-04 20:05:24 +01:00
Jesús A. Álvarez
81d985f190 bump version 2016-11-21 23:12:10 +01:00
Jesús A. Álvarez
09a178e85c don't play audio if switch is on silent 2016-11-21 23:10:46 +01:00
Jesús A. Álvarez
4f627541d2 more compatible way of checking for sandbox, hopefully 2016-11-21 23:07:10 +01:00
Jesús A. Álvarez
7103f11578 update readme 2016-11-19 00:37:32 +01:00
Jesús A. Álvarez
194a68362e preserve permissions of Info.plist after build, fixes #15 2016-11-19 00:16:52 +01:00
Jesús A. Álvarez
f90ef9b92f support force touch in trackpad mode 2016-11-18 23:41:04 +01:00
Jesús A. Álvarez
2193780656 bump version 2016-11-18 22:13:36 +01:00
Jesús A. Álvarez
134e15691d support multi-touch mouse-down, resolves #2 2016-11-18 22:12:56 +01:00
Jesús A. Álvarez
739e763089 don't use QOS_CLASS_* on iOS <8 2016-07-15 21:00:51 +02:00
Jesús A. Álvarez
d60cd3a189 remove duplicate line 2016-07-15 21:00:29 +02:00
Jesús A. Álvarez
ab9538e423 bump version 2016-07-15 20:12:48 +02:00
Jesús A. Álvarez
08cfcc6e9a use PlistBuddy to merge capabilities into PlugIn plists 2016-07-03 15:21:11 +02:00
Jesús A. Álvarez
a811c30549 load disk icons asynchronously 2016-07-02 23:06:09 +02:00
Jesús A. Álvarez
be06c815f4 show "tap to restart" when emulated machine shuts down 2016-07-02 15:18:26 +02:00
Jesús A. Álvarez
8ad866b0dc fix abnormal situation on Mac II when moving mouse out of screen 2016-07-02 14:47:06 +02:00
Jesús A. Álvarez
d1a0721b40 fix crash on ScreenView layout if emulator bundle is not loaded 2016-07-01 19:37:44 +02:00
Jesús A. Álvarez
118bfccca9 restart after shutdown 2016-06-30 22:35:05 +02:00
Jesús A. Álvarez
0f1d73bd89 update README.md 2016-06-28 23:46:59 +02:00
Jesús A. Álvarez
3761b8d9e2 bump version 2016-06-28 23:12:55 +02:00
Jesús A. Álvarez
cbfa046773 group emulator bundles with same name in settings 2016-06-28 23:12:55 +02:00
Jesús A. Álvarez
154510c94f add Mac II variant with 640x480 screen, resolves #10 2016-06-28 23:12:55 +02:00
Jesús A. Álvarez
353b548ae1 enable sound on Mac II 2016-06-28 23:08:41 +02:00
Jesús A. Álvarez
35f5ec7886 update core to 3.4.1 beta, resolves #9 2016-06-28 23:08:41 +02:00
Jesús A. Álvarez
4e268e144d don't forward physical keyboard events to emulated machine when presenting another view controller 2016-06-06 20:57:09 +02:00
Jesús A. Álvarez
b2194bfcc5 support disk image creation on iOS 7 (fo realz) 2016-06-06 20:49:48 +02:00
Jesús A. Álvarez
20a99c5a88 fix crash when trying to generate icon for files <84 bytes 2016-06-06 20:47:25 +02:00
Jesús A. Álvarez
76b82d92fc don't try to handle physical keyboard events on iOS <9 2016-06-06 20:13:02 +02:00
Jesús A. Álvarez
cc3b3bc59a bump version 2016-06-06 19:44:03 +02:00
Jesús A. Álvarez
222a6d8d8f reload disk list after importing document 2016-06-06 19:42:10 +02:00
Jesús A. Álvarez
f511efdb0b match floppy icons with mac icons 2016-06-06 19:29:53 +02:00
Jesús A. Álvarez
58de410e47 add refresh control to insert disk table 2016-06-06 18:57:42 +02:00
Jesús A. Álvarez
5649cb5015 support disk image creation on iOS 7 2016-06-06 18:25:30 +02:00
Jesús A. Álvarez
f46483c0b0 add AutoSlow toggle, run in background and missing speed values, closes #3 2016-06-06 16:09:23 +02:00
Jesús A. Álvarez
9217b4ebcd fix crash when showing insert disk menu after shutting down the emulated machine 2016-06-06 16:05:11 +02:00
Jesús A. Álvarez
bf7e9e0479 use shared Info.plist for bundles, add capabilities to it 2016-06-06 15:42:04 +02:00
Jesús A. Álvarez
55e78cc1e9 recognise files with "image" extension as disk images 2016-06-04 21:42:31 +02:00
Jesús A. Álvarez
87302b3ef7 allow importing any kind of files 2016-06-04 21:42:02 +02:00
Jesús A. Álvarez
397c1c4d70 remove unused default 2016-06-04 19:40:20 +02:00
Jesús A. Álvarez
b1bd3da561 support ExportFl on iOS 7 2016-06-04 15:38:19 +02:00
Jesús A. Álvarez
c390e48140 fix crash when entering edit mode from import mode 2016-06-04 15:28:47 +02:00
Jesús A. Álvarez
f180642b33 show all files when running ImportFl 2016-06-04 15:13:08 +02:00
Jesús A. Álvarez
e220494dc5 support ExportFl and ImportFl extensions 2016-06-04 15:05:05 +02:00
Jesús A. Álvarez
8c3434740f Emulator protocol: add currentApplication 2016-06-04 15:00:31 +02:00
Jesús A. Álvarez
ec5c1fb188 rename/delete alerts: put cancel button on the left 2016-06-04 12:36:36 +02:00
Jesús A. Álvarez
d769e9861b slightly confused about whether schemes should be shared or not 2016-06-04 11:04:44 +02:00
Jesús A. Álvarez
e10ef21281 move Emulator class into MYOSGLUE.m 2016-06-04 00:29:09 +02:00
Jesús A. Álvarez
788f607280 support renaming files on iOS 7 2016-06-03 23:33:26 +02:00
Jesús A. Álvarez
53a0fe7e65 check system version with NSFoundationVersionNumber 2016-06-02 23:37:08 +02:00
Jesús A. Álvarez
ce0bf30189 WaitForNextTick: make closer to cocoa version 2016-05-31 23:16:07 +02:00
Jesús A. Álvarez
90f6f77f8b fix: stop emulation when SpeedStopped is true 2016-05-31 20:55:07 +02:00
Jesús A. Álvarez
a26fe3fef6 update README 2016-05-29 14:46:51 +02:00
232 changed files with 6401 additions and 41190 deletions

4
.gitmodules vendored
View File

@ -4,3 +4,7 @@
[submodule "libres"]
path = libres
url = https://github.com/zydeco/libres.git
[submodule "minivmac"]
path = minivmac
url = https://github.com/zydeco/minivmac.git
branch = wintergames

View File

@ -3,7 +3,7 @@ PROJECT="Mini vMac.xcodeproj"
SCHEME="Mini vMac"
CONFIGURATION=Release
APP="build/Build/Products/$(CONFIGURATION)-iphoneos/Mini vMac.app"
VERSION=`xpath 2>/dev/null Mini\ vMac/Info.plist "/plist/dict/key[.='CFBundleShortVersionString']/following-sibling::*[1]/text()"`
VERSION=`plutil -extract CFBundleShortVersionString raw $(APP)/Info.plist -o -`
LDID=ldid
deb: $(APP)

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:Mini vMac.xcodeproj">
</FileRef>
</Workspace>

View File

@ -0,0 +1,37 @@
{
"DVTSourceControlWorkspaceBlueprintPrimaryRemoteRepositoryKey" : "9C19786155D97B8ED78AB84AFAAA50249126341A",
"DVTSourceControlWorkspaceBlueprintWorkingCopyRepositoryLocationsKey" : {
},
"DVTSourceControlWorkspaceBlueprintWorkingCopyStatesKey" : {
"9C19786155D97B8ED78AB84AFAAA50249126341A" : 0,
"F2E8D120DACD6BF5E1EFFA012C92CE6FA0E44B4C" : 0,
"45D35ABA2A883CFEB6F6014CF9723CDA568B602B" : 0
},
"DVTSourceControlWorkspaceBlueprintIdentifierKey" : "A273011D-9F4F-4F93-8287-77CF2E175709",
"DVTSourceControlWorkspaceBlueprintWorkingCopyPathsKey" : {
"9C19786155D97B8ED78AB84AFAAA50249126341A" : "minivmac4ios\/",
"F2E8D120DACD6BF5E1EFFA012C92CE6FA0E44B4C" : "minivmac4ios\/libres\/",
"45D35ABA2A883CFEB6F6014CF9723CDA568B602B" : "minivmac4ios\/libmfs\/"
},
"DVTSourceControlWorkspaceBlueprintNameKey" : "Mini vMac",
"DVTSourceControlWorkspaceBlueprintVersion" : 204,
"DVTSourceControlWorkspaceBlueprintRelativePathToProjectKey" : "Mini vMac.xcodeproj",
"DVTSourceControlWorkspaceBlueprintRemoteRepositoriesKey" : [
{
"DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/zydeco\/libmfs.git",
"DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git",
"DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "45D35ABA2A883CFEB6F6014CF9723CDA568B602B"
},
{
"DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "github.com:zydeco\/minivmac4ios.git",
"DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git",
"DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "9C19786155D97B8ED78AB84AFAAA50249126341A"
},
{
"DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/zydeco\/libres.git",
"DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git",
"DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "F2E8D120DACD6BF5E1EFFA012C92CE6FA0E44B4C"
}
]
}

View File

@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1200"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "289710B81CFB11BF0089D463"
BuildableName = "Mac128K.framework"
BlueprintName = "Mac128K"
ReferencedContainer = "container:Mini vMac.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Release"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "289710B81CFB11BF0089D463"
BuildableName = "Mac128K.framework"
BlueprintName = "Mac128K"
ReferencedContainer = "container:Mini vMac.xcodeproj">
</BuildableReference>
</MacroExpansion>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "289710B81CFB11BF0089D463"
BuildableName = "Mac128K.framework"
BlueprintName = "Mac128K"
ReferencedContainer = "container:Mini vMac.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -0,0 +1,66 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1500"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "28C67BD02AC49E46000C7540"
BuildableName = "MacII-512x384.framework"
BlueprintName = "MacII-512x384"
ReferencedContainer = "container:Mini vMac.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Release"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "28C67BD02AC49E46000C7540"
BuildableName = "MacII-512x384.framework"
BlueprintName = "MacII-512x384"
ReferencedContainer = "container:Mini vMac.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1200"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "28BDBE9A1D230EEB0072ED5B"
BuildableName = "MacII-640x480.framework"
BlueprintName = "MacII-640x480"
ReferencedContainer = "container:Mini vMac.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Release"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "28BDBE9A1D230EEB0072ED5B"
BuildableName = "MacII-640x480.framework"
BlueprintName = "MacII-640x480"
ReferencedContainer = "container:Mini vMac.xcodeproj">
</BuildableReference>
</MacroExpansion>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "28BDBE9A1D230EEB0072ED5B"
BuildableName = "MacII-640x480.framework"
BlueprintName = "MacII-640x480"
ReferencedContainer = "container:Mini vMac.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1200"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2834237D1CF9C4CB0088B634"
BuildableName = "MacII.framework"
BlueprintName = "MacII"
ReferencedContainer = "container:Mini vMac.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Release"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2834237D1CF9C4CB0088B634"
BuildableName = "MacII.framework"
BlueprintName = "MacII"
ReferencedContainer = "container:Mini vMac.xcodeproj">
</BuildableReference>
</MacroExpansion>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2834237D1CF9C4CB0088B634"
BuildableName = "MacII.framework"
BlueprintName = "MacII"
ReferencedContainer = "container:Mini vMac.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1200"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "283422C91CF8EF8C0088B634"
BuildableName = "MacPlus4M.framework"
BlueprintName = "MacPlus4M"
ReferencedContainer = "container:Mini vMac.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Release"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "283422C91CF8EF8C0088B634"
BuildableName = "MacPlus4M.framework"
BlueprintName = "MacPlus4M"
ReferencedContainer = "container:Mini vMac.xcodeproj">
</BuildableReference>
</MacroExpansion>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "283422C91CF8EF8C0088B634"
BuildableName = "MacPlus4M.framework"
BlueprintName = "MacPlus4M"
ReferencedContainer = "container:Mini vMac.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1200"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "28F676BC1CD15E0B00FC6FA6"
BuildableName = "Mini vMac.app"
BlueprintName = "Mini vMac"
ReferencedContainer = "container:Mini vMac.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "28F676BC1CD15E0B00FC6FA6"
BuildableName = "Mini vMac.app"
BlueprintName = "Mini vMac"
ReferencedContainer = "container:Mini vMac.xcodeproj">
</BuildableReference>
</MacroExpansion>
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "28F676BC1CD15E0B00FC6FA6"
BuildableName = "Mini vMac.app"
BlueprintName = "Mini vMac"
ReferencedContainer = "container:Mini vMac.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<CommandLineArguments>
<CommandLineArgument
argument = "-machine"
isEnabled = "NO">
</CommandLineArgument>
<CommandLineArgument
argument = "MacPlus4M"
isEnabled = "NO">
</CommandLineArgument>
</CommandLineArguments>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "28F676BC1CD15E0B00FC6FA6"
BuildableName = "Mini vMac.app"
BlueprintName = "Mini vMac"
ReferencedContainer = "container:Mini vMac.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1200"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "28F6B48D1CF07DDD002D76D0"
BuildableName = "liblibhfs.a"
BlueprintName = "libhfs"
ReferencedContainer = "container:Mini vMac.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "28F6B48D1CF07DDD002D76D0"
BuildableName = "liblibhfs.a"
BlueprintName = "libhfs"
ReferencedContainer = "container:Mini vMac.xcodeproj">
</BuildableReference>
</MacroExpansion>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "28F6B48D1CF07DDD002D76D0"
BuildableName = "liblibhfs.a"
BlueprintName = "libhfs"
ReferencedContainer = "container:Mini vMac.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1200"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "28F6B4A71CF07EC9002D76D0"
BuildableName = "liblibmfs.a"
BlueprintName = "libmfs"
ReferencedContainer = "container:Mini vMac.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "28F6B4A71CF07EC9002D76D0"
BuildableName = "liblibmfs.a"
BlueprintName = "libmfs"
ReferencedContainer = "container:Mini vMac.xcodeproj">
</BuildableReference>
</MacroExpansion>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "28F6B4A71CF07EC9002D76D0"
BuildableName = "liblibmfs.a"
BlueprintName = "libmfs"
ReferencedContainer = "container:Mini vMac.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1200"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "28F6B4B51CF07F32002D76D0"
BuildableName = "liblibres.a"
BlueprintName = "libres"
ReferencedContainer = "container:Mini vMac.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "28F6B4B51CF07F32002D76D0"
BuildableName = "liblibres.a"
BlueprintName = "libres"
ReferencedContainer = "container:Mini vMac.xcodeproj">
</BuildableReference>
</MacroExpansion>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "28F6B4B51CF07F32002D76D0"
BuildableName = "liblibres.a"
BlueprintName = "libres"
ReferencedContainer = "container:Mini vMac.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -3,26 +3,36 @@
// Mini vMac
//
// Created by Jesús A. Álvarez on 27/04/2016.
// Copyright © 2016 namedfork. All rights reserved.
// Copyright © 2016-2018 namedfork. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "EmulatorProtocol.h"
#import "BTCMouse.h"
extern NSString *DocumentsChangedNotification;
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (nonatomic, readonly) NSString *documentsPath;
@property (nonatomic, readonly) NSString *userKeyboardLayoutsPath;
@property (nonatomic, readonly) NSArray<NSString*> *diskImageExtensions;
@property (nonatomic, readonly) NSArray<NSBundle*> *emulatorBundles;
@property (nonatomic, readonly) NSString *emulatorBundlesPath;
@property (readonly, nonatomic, getter = isSandboxed) BOOL sandboxed;
@property (readonly, nonatomic) id<Emulator> sharedEmulator;
@property (readonly, nonatomic) NSArray<NSString*> *keyboardLayoutPaths;
+ (instancetype)sharedInstance;
+ (id<Emulator>)sharedEmulator;
@property (class, readonly, strong) AppDelegate *sharedInstance NS_SWIFT_NAME(shared);
@property (class, readonly, strong) id<Emulator> sharedEmulator NS_SWIFT_NAME(emulator);
- (void)loadAndStartEmulator;
- (void)showAlertWithTitle:(NSString *)title message:(NSString *)message;
- (IBAction)showInsertDisk:(id)sender;
- (IBAction)showSettings:(id)sender;
- (IBAction)showGestureHelp:(id)sender;
- (UIScene*)sceneWithName:(NSString*)name;
@end

View File

@ -3,23 +3,25 @@
// Mini vMac
//
// Created by Jesús A. Álvarez on 27/04/2016.
// Copyright © 2016 namedfork. All rights reserved.
// Copyright © 2016-2018 namedfork. All rights reserved.
//
@import AVFoundation;
#import "AppDelegate.h"
#import "SettingsViewController.h"
#import "InsertDiskViewController.h"
#import "ViewController.h"
static AppDelegate *sharedAppDelegate = nil;
static NSObject<Emulator> *sharedEmulator = nil;
NSString *DocumentsChangedNotification = @"documentsChanged";
@interface AppDelegate () <UIViewControllerTransitioningDelegate, UIViewControllerAnimatedTransitioning>
@interface AppDelegate () <BTCMouseDelegate>
@end
@implementation AppDelegate
{
UISwipeGestureRecognizerDirection modalPanePresentationDirection;
}
+ (instancetype)sharedInstance {
@ -32,11 +34,18 @@ static NSObject<Emulator> *sharedEmulator = nil;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
sharedAppDelegate = self;
if (![self loadEmulator:[[NSUserDefaults standardUserDefaults] stringForKey:@"machine"]]) {
[self loadEmulator:@"MacPlus4M"];
}
[self initDefaults];
[sharedEmulator performSelector:@selector(run) withObject:nil afterDelay:0.1];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:NULL];
[self loadAndStartEmulator];
if ([application respondsToSelector:@selector(btcMouseSetRawMode:)]) {
[application btcMouseSetRawMode:YES];
[application btcMouseSetDelegate:self];
}
// populate documents directory so it shows up in Files
[[NSFileManager defaultManager] createDirectoryAtPath:self.userKeyboardLayoutsPath withIntermediateDirectories:YES attributes:nil error:nil];
return YES;
}
@ -47,31 +56,41 @@ static NSObject<Emulator> *sharedEmulator = nil;
@"en-US": @"US.nfkeyboardlayout"};
NSString *firstLanguage = [NSBundle preferredLocalizationsFromArray:layoutForLanguage.allKeys].firstObject;
NSDictionary *defaultValues = @{@"trackpad": @([UIDevice currentDevice].userInterfaceIdiom != UIUserInterfaceIdiomPad),
@"frameskip": @(0),
@"keyboardLayout": layoutForLanguage[firstLanguage],
@"machine": @"MacPlus4M"
@"machine": @"MacPlus4M",
@"speedValue": @(sharedEmulator.initialSpeed),
@"runInBackground": @NO,
@"autoSlow": @(sharedEmulator.initialAutoSlow),
@"screenFilter": kCAFilterLinear,
@"autoShowGestureHelp": @YES,
@"recentDisks": @[]
};
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults registerDefaults:defaultValues];
[defaults setValue:@(sharedEmulator.initialSpeed) forKey:@"speedValue"];
[defaults addObserver:self forKeyPath:@"speedValue" options:0 context:NULL];
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context {
if (object == [NSUserDefaults standardUserDefaults]) {
NSUserDefaults *defaults = object;
if ([keyPath isEqualToString:@"speedValue"]) {
sharedEmulator.speed = [[NSUserDefaults standardUserDefaults] integerForKey:@"speedValue"];
sharedEmulator.speed = [defaults integerForKey:@"speedValue"];
} else if ([keyPath isEqualToString:@"autoSlow"]) {
sharedEmulator.autoSlow = [defaults integerForKey:@"autoSlow"];
}
}
}
- (NSString*)emulatorBundlesPath {
return [NSBundle mainBundle].privateFrameworksPath;
}
- (NSArray<NSBundle*>*)emulatorBundles {
NSString *pluginsPath = [NSBundle mainBundle].builtInPlugInsPath;
NSArray<NSString*> *names = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:pluginsPath error:NULL];
NSArray<NSString*> *names = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:self.emulatorBundlesPath error:NULL];
NSMutableArray *emulatorBundles = [NSMutableArray arrayWithCapacity:names.count];
for (NSString *name in [names pathsMatchingExtensions:@[@"mnvm"]]) {
NSBundle *bundle = [NSBundle bundleWithPath:[pluginsPath stringByAppendingPathComponent:name]];
NSBundle *bundle = [NSBundle bundleWithPath:[self.emulatorBundlesPath stringByAppendingPathComponent:name]];
[emulatorBundles addObject:bundle];
}
return emulatorBundles;
@ -79,24 +98,74 @@ static NSObject<Emulator> *sharedEmulator = nil;
- (BOOL)loadEmulator:(NSString*)name {
NSString *emulatorBundleName = [name stringByAppendingPathExtension:@"mnvm"];
NSString *emulatorBundlePath = [[NSBundle mainBundle].builtInPlugInsPath stringByAppendingPathComponent:emulatorBundleName];
NSString *emulatorBundlePath = [self.emulatorBundlesPath stringByAppendingPathComponent:emulatorBundleName];
NSBundle *emulatorBundle = [NSBundle bundleWithPath:emulatorBundlePath];
[emulatorBundle load];
sharedEmulator = [[emulatorBundle principalClass] new];
sharedEmulator.rootViewController = self.window.rootViewController;
sharedEmulator.showAlert = ^(NSString *title, NSString *message) {
[self showAlertWithTitle:title message:message];
};
sharedEmulator.dataPath = self.documentsPath;
#if defined(TARGET_OS_VISION) && TARGET_OS_VISION == 1
[ViewController adjustToScreenSize];
#endif
return sharedEmulator != nil;
}
- (void)loadAndStartEmulator {
[self willChangeValueForKey:@"sharedEmulator"];
if (sharedEmulator) {
NSBundle *bundle = sharedEmulator.bundle;
id<Emulator> oldEmulator = sharedEmulator;
sharedEmulator = nil;
[oldEmulator shutdown];
[bundle unload];
}
if (![self loadEmulator:[[NSUserDefaults standardUserDefaults] stringForKey:@"machine"]]) {
[self loadEmulator:@"MacPlus4M"];
}
[self didChangeValueForKey:@"sharedEmulator"];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults integerForKey:@"speedValue"] > sharedEmulator.initialSpeed) {
[defaults setValue:@(sharedEmulator.initialSpeed) forKey:@"speedValue"];
} else {
sharedEmulator.speed = [defaults integerForKey:@"speedValue"];
}
[sharedEmulator performSelector:@selector(run) withObject:nil afterDelay:0.1];
}
- (id<Emulator>)sharedEmulator {
return sharedEmulator;
}
- (void)applicationDidEnterBackground:(UIApplication *)application {
[[NSUserDefaults standardUserDefaults] synchronize];
sharedEmulator.running = NO;
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults synchronize];
if ([defaults boolForKey:@"runInBackground"]) {
// slow down to 1x when in background
sharedEmulator.speed = EmulatorSpeed1x;
} else {
sharedEmulator.running = NO;
}
if (sharedEmulator.anyDiskInserted == NO) {
exit(0);
}
}
- (void)handleEventWithMove:(CGPoint)move andWheel:(float)wheel andPan:(float)pan andButtons:(int)buttons {
[sharedEmulator moveMouseX:move.x/2.0 Y:move.y/2.0];
[sharedEmulator setMouseButton:buttons == 1];
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
sharedEmulator.running = YES;
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if (sharedEmulator.running) {
sharedEmulator.speed = [defaults integerForKey:@"speedValue"];
} else {
sharedEmulator.running = YES;
}
}
- (void)showAlertWithTitle:(NSString *)title message:(NSString *)message {
@ -106,127 +175,64 @@ static NSObject<Emulator> *sharedEmulator = nil;
});
return;
}
if ([UIAlertController class]) {
UIAlertController *alert = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert];
[alert addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil]];
UIViewController *controller = self.window.rootViewController;
[controller presentViewController:alert animated:YES completion:nil];
} else {
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:title message:message delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];
[alertView show];
BOOL wasRunning = sharedEmulator.isRunning;
UIAlertController *alert = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert];
[alert addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
[sharedEmulator setRunning:wasRunning];
}]];
UIViewController *controller = self.window.rootViewController;
while (controller.presentedViewController) {
controller = controller.presentedViewController;
}
[controller presentViewController:alert animated:YES completion:nil];
}
#pragma mark - Settings / Insert Disk panels
- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler {
BOOL success = NO;
if ([shortcutItem.type isEqualToString:@"disk"]) {
NSString *fileName = (NSString*)shortcutItem.userInfo[@"disk"];
NSString *filePath = [self.documentsPath stringByAppendingPathComponent:fileName];
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath] && ![sharedEmulator isDiskInserted:filePath]) {
success = YES;
[sharedEmulator performSelector:@selector(insertDisk:) withObject:filePath afterDelay:1.0];
}
}
completionHandler(success);
}
#pragma mark - Settings / Insert Disk / Help
- (void)showSettings:(id)sender {
[self showModalPanel:@"settings" sender:sender];
[self.window.rootViewController performSelector:@selector(showSettings:) withObject:sender];
}
- (void)showInsertDisk:(id)sender {
[self showModalPanel:@"disk" sender:sender];
[self.window.rootViewController performSelector:@selector(showInsertDisk:) withObject:sender];
}
- (void)showModalPanel:(NSString*)name sender:(id)sender {
Class classToShow, otherClass;
if ([name isEqualToString:@"settings"]) {
classToShow = [SettingsViewController class];
otherClass = [InsertDiskViewController class];
} else {
classToShow = [InsertDiskViewController class];
otherClass = [SettingsViewController class];
}
UIViewController *rootViewController = self.window.rootViewController;
UIViewController *presentedViewController = rootViewController.presentedViewController;
UIViewController *presentedTopViewController = [presentedViewController isKindOfClass:[UINavigationController class]] ? [(UINavigationController*)presentedViewController topViewController] : nil;
if ([presentedTopViewController isKindOfClass:classToShow]) {
[presentedViewController dismissViewControllerAnimated:YES completion:nil];
return;
} else if ([presentedTopViewController isKindOfClass:otherClass]) {
// flip
UIViewController *viewController = [rootViewController.storyboard instantiateViewControllerWithIdentifier:name];
viewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
viewController.modalPresentationStyle = UIModalPresentationFormSheet;
UIView *windowSnapshotView = [self.window snapshotViewAfterScreenUpdates:NO];
[self.window addSubview:windowSnapshotView];
UIView *oldPanelSnapshotView = [presentedViewController.view snapshotViewAfterScreenUpdates:NO];
[viewController.view addSubview:oldPanelSnapshotView];
[rootViewController dismissViewControllerAnimated:NO completion:^{
[rootViewController presentViewController:viewController animated:NO completion:^{
UIView *emptyView = [[UIView alloc] initWithFrame:viewController.view.bounds];
[windowSnapshotView removeFromSuperview];
viewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[UIView transitionFromView:oldPanelSnapshotView
toView:emptyView
duration:0.5
options:UIViewAnimationOptionTransitionFlipFromRight
completion:^(BOOL finished) {
[emptyView removeFromSuperview];
}];
}];
}];
} else {
UIViewController *viewController = [rootViewController.storyboard instantiateViewControllerWithIdentifier:name];
viewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
viewController.modalPresentationStyle = UIModalPresentationFormSheet;
if ([sender isKindOfClass:[UISwipeGestureRecognizer class]] && [UIDevice currentDevice].systemVersion.integerValue >= 8) {
modalPanePresentationDirection = [(UISwipeGestureRecognizer*)sender direction];
viewController.transitioningDelegate = self;
}
[rootViewController presentViewController:viewController animated:YES completion:nil];
}
}
- (id<UIViewControllerAnimatedTransitioning>)animationControllerForPresentedController:(UIViewController *)presented presentingController:(UIViewController *)presenting sourceController:(UIViewController *)source {
return self;
}
- (NSTimeInterval)transitionDuration:(id<UIViewControllerContextTransitioning>)transitionContext {
return 0.3;
}
- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext {
UIView *containerView = [transitionContext containerView];
UIView *toView = [transitionContext viewForKey:UITransitionContextToViewKey];
[containerView addSubview:toView];
switch (modalPanePresentationDirection) {
case UISwipeGestureRecognizerDirectionLeft:
toView.transform = CGAffineTransformMakeTranslation(containerView.bounds.size.width, 0);
break;
case UISwipeGestureRecognizerDirectionRight:
toView.transform = CGAffineTransformMakeTranslation(-containerView.bounds.size.width, 0);
break;
case UISwipeGestureRecognizerDirectionDown:
toView.transform = CGAffineTransformMakeTranslation(0, -containerView.bounds.size.height);
break;
default:
toView.transform = CGAffineTransformMakeTranslation(0, containerView.bounds.size.height);
}
[UIView animateWithDuration:[self transitionDuration:transitionContext] animations:^{
toView.transform = CGAffineTransformIdentity;
} completion:^(BOOL finished) {
[transitionContext completeTransition:finished];
}];
- (void)showGestureHelp:(id)sender {
[self.window.rootViewController performSelector:@selector(showGestureHelp:) withObject:sender];
}
#pragma mark - Files
- (BOOL)isSandboxed {
#if TARGET_IPHONE_SIMULATOR
return YES;
#else
static dispatch_once_t onceToken;
static BOOL sandboxed;
dispatch_once(&onceToken, ^{
NSString *bundlePath = [[NSBundle mainBundle] bundlePath];
sandboxed = ![bundlePath hasPrefix:@"/Applications/"];
// not sandboxed if parent of documents directory is "mobile"
NSString *documentsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject.stringByStandardizingPath;
sandboxed = ![documentsPath.stringByDeletingLastPathComponent.lastPathComponent isEqualToString:@"mobile"];
});
return sandboxed;
#endif
}
- (NSArray<NSString *> *)diskImageExtensions {
return @[@"dsk", @"img", @"dc42", @"diskcopy42"];
return @[@"dsk", @"img", @"dc42", @"diskcopy42", @"image"];
}
- (NSString *)documentsPath {
@ -238,12 +244,30 @@ static NSObject<Emulator> *sharedEmulator = nil;
documentsPath = [documentsPath stringByAppendingPathComponent:@"Mini vMac"].stringByStandardizingPath;
}
[[NSFileManager defaultManager] createDirectoryAtPath:documentsPath withIntermediateDirectories:YES attributes:nil error:NULL];
[[NSFileManager defaultManager] createDirectoryAtPath:documentsPath withIntermediateDirectories:YES attributes:nil error:NULL];
});
return documentsPath;
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
- (NSString *)userKeyboardLayoutsPath {
static dispatch_once_t onceToken;
static NSString *userKeyboardLayoutsPath;
dispatch_once(&onceToken, ^{
userKeyboardLayoutsPath = [self.documentsPath stringByAppendingPathComponent:@"Keyboard Layouts"];
});
return userKeyboardLayoutsPath;
}
- (NSArray<NSString *> *)keyboardLayoutPaths {
NSArray *keyboardLayouts = [[NSBundle mainBundle] pathsForResourcesOfType:@"nfkeyboardlayout" inDirectory:@"Keyboard Layouts"];
NSString *userKeyboardLayoutsPath = [AppDelegate sharedInstance].userKeyboardLayoutsPath;
NSArray *userKeyboardLayouts = [[[NSFileManager defaultManager] contentsOfDirectoryAtPath:userKeyboardLayoutsPath error:nil] filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"pathExtension.lowercaseString = %@", @"nfkeyboardlayout"]];
if (userKeyboardLayouts.count > 0) {
keyboardLayouts = [keyboardLayouts arrayByAddingObjectsFromArray:userKeyboardLayouts];
}
return keyboardLayouts;
}
- (BOOL)importFileToDocuments:(NSURL *)url copy:(BOOL)copy {
if (url.fileURL) {
// opening file
NSFileManager *fileManager = [NSFileManager defaultManager];
@ -261,14 +285,81 @@ static NSObject<Emulator> *sharedEmulator = nil;
destinationPath = [self.documentsPath stringByAppendingPathComponent:newFileName];
tries++;
}
[fileManager moveItemAtPath:url.path toPath:destinationPath error:&error];
if (copy) {
[fileManager copyItemAtPath:url.path toPath:destinationPath error:&error];
} else {
[fileManager moveItemAtPath:url.path toPath:destinationPath error:&error];
}
if (error) {
[self showAlertWithTitle:fileName message:error.localizedFailureReason];
} else {
NSDictionary *userInfo = @{@"path": destinationPath};
[[NSNotificationCenter defaultCenter] postNotificationName:DocumentsChangedNotification object:self userInfo:userInfo];
[self showAlertWithTitle:@"File Import" message:[NSString stringWithFormat:@"%@ imported to Documents", destinationPath.lastPathComponent]];
}
}
return YES;
}
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
if (url.fileURL) {
// opening file
NSString *inboxPath = [self.documentsPath stringByAppendingPathComponent:@"Inbox"];
if ([url.path.stringByStandardizingPath hasPrefix:inboxPath]) {
// pre-iOS 11 import through inbox
[url startAccessingSecurityScopedResource];
[self importFileToDocuments:url copy:NO];
[url stopAccessingSecurityScopedResource];
} else if ([url.path.stringByStandardizingPath hasPrefix:self.documentsPath]) {
// already in documents - mount
[sharedEmulator insertDisk:url.path];
} else if ([options[UIApplicationOpenURLOptionsOpenInPlaceKey] boolValue]) {
// not in documents - copy
[url startAccessingSecurityScopedResource];
[self importFileToDocuments:url copy:YES];
[url stopAccessingSecurityScopedResource];
} else {
return [self importFileToDocuments:url copy:NO];
}
}
return YES;
}
#pragma mark - Making a Scene
- (UISceneConfiguration *)application:(UIApplication *)application configurationForConnectingSceneSession:(UISceneSession *)connectingSceneSession options:(UISceneConnectionOptions *)options {
for (NSUserActivity *activity in options.userActivities) {
if ([activity.activityType isEqualToString:@"net.namedfork.keyboard"]) {
return [UISceneConfiguration configurationWithName:@"Keyboard" sessionRole:UIWindowSceneSessionRoleApplication];
}
}
if ([self sceneWithName:@"Default"] == nil) {
[[AppDelegate sharedEmulator] setRunning:YES];
return [UISceneConfiguration configurationWithName:@"Default" sessionRole:UIWindowSceneSessionRoleApplication];
}
return nil;
}
- (void)application:(UIApplication *)application didDiscardSceneSessions:(NSSet<UISceneSession *> *)sceneSessions {
if ([self sceneWithName:@"Default"] == nil) {
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"runInBackground"] == NO) {
[[AppDelegate sharedEmulator] setRunning:NO];
}
UIScene *keyboardScene = [self sceneWithName:@"Keyboard"];
if (keyboardScene != nil) {
// if only keyboard is left, close it too
[application requestSceneSessionDestruction:keyboardScene.session options:nil errorHandler:nil];
}
}
}
- (UIScene*)sceneWithName:(NSString*)name {
for (UIScene *scene in [UIApplication sharedApplication].connectedScenes) {
if ([scene.session.configuration.name isEqualToString:name]) {
return scene;
}
}
return nil;
}
@end

View File

@ -1,89 +1,111 @@
{
"images" : [
{
"size" : "29x29",
"idiom" : "iphone",
"scale" : "2x",
"size" : "20x20"
},
{
"idiom" : "iphone",
"scale" : "3x",
"size" : "20x20"
},
{
"filename" : "Icon-Small@2x.png",
"scale" : "2x"
"idiom" : "iphone",
"scale" : "2x",
"size" : "29x29"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-Small@3x.png",
"scale" : "3x"
"idiom" : "iphone",
"scale" : "3x",
"size" : "29x29"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "Icon-Small-40@2x-1.png",
"scale" : "2x"
"idiom" : "iphone",
"scale" : "2x",
"size" : "40x40"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "Icon-Small-40@3x.png",
"scale" : "3x"
"idiom" : "iphone",
"scale" : "3x",
"size" : "40x40"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "Icon-60@2x.png",
"scale" : "2x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"scale" : "2x",
"size" : "60x60"
},
{
"filename" : "Icon-60@3x.png",
"scale" : "3x"
"idiom" : "iphone",
"scale" : "3x",
"size" : "60x60"
},
{
"size" : "29x29",
"idiom" : "ipad",
"scale" : "1x",
"size" : "20x20"
},
{
"idiom" : "ipad",
"scale" : "2x",
"size" : "20x20"
},
{
"filename" : "Icon-Small.png",
"scale" : "1x"
"idiom" : "ipad",
"scale" : "1x",
"size" : "29x29"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "Icon-Small@2x-1.png",
"scale" : "2x"
"idiom" : "ipad",
"scale" : "2x",
"size" : "29x29"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "Icon-Small-40.png",
"scale" : "1x"
"idiom" : "ipad",
"scale" : "1x",
"size" : "40x40"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "Icon-Small-40@2x.png",
"scale" : "2x"
"idiom" : "ipad",
"scale" : "2x",
"size" : "40x40"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "Icon-76.png",
"scale" : "1x"
"idiom" : "ipad",
"scale" : "1x",
"size" : "76x76"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "Icon-76@2x.png",
"scale" : "2x"
"idiom" : "ipad",
"scale" : "2x",
"size" : "76x76"
},
{
"size" : "83.5x83.5",
"idiom" : "ipad",
"filename" : "Icon-iPadPro.png",
"scale" : "2x"
"idiom" : "ipad",
"scale" : "2x",
"size" : "83.5x83.5"
},
{
"idiom" : "ios-marketing",
"scale" : "1x",
"size" : "1024x1024"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
},
"properties" : {
"pre-rendered" : true
"author" : "xcode",
"version" : 1
}
}
}

View File

@ -0,0 +1,13 @@
{
"images" : [
{
"filename" : "back.png",
"idiom" : "vision",
"scale" : "2x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View File

@ -0,0 +1,12 @@
{
"info" : {
"author" : "xcode",
"version" : 1
},
"properties" : {
"frame-size" : {
"height" : 512,
"width" : 512
}
}
}

View File

@ -0,0 +1,17 @@
{
"info" : {
"author" : "xcode",
"version" : 1
},
"layers" : [
{
"filename" : "Front.solidimagestacklayer"
},
{
"filename" : "Middle.solidimagestacklayer"
},
{
"filename" : "Back.solidimagestacklayer"
}
]
}

View File

@ -0,0 +1,13 @@
{
"images" : [
{
"filename" : "Icon.png",
"idiom" : "vision",
"scale" : "2x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 736 B

View File

@ -0,0 +1,12 @@
{
"info" : {
"author" : "xcode",
"version" : 1
},
"properties" : {
"frame-size" : {
"height" : 512,
"width" : 512
}
}
}

View File

@ -0,0 +1,13 @@
{
"images" : [
{
"filename" : "screen.png",
"idiom" : "vision",
"scale" : "2x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 934 B

View File

@ -0,0 +1,12 @@
{
"info" : {
"author" : "xcode",
"version" : 1
},
"properties" : {
"frame-size" : {
"height" : 512,
"width" : 512
}
}
}

View File

@ -1,6 +1,6 @@
{
"info" : {
"version" : 1,
"author" : "xcode"
"author" : "xcode",
"version" : 1
}
}
}

View File

@ -5,28 +5,36 @@
"scale" : "1x"
},
{
"idiom" : "iphone",
"filename" : "KBCapsLock~iphone@2x.png",
"idiom" : "iphone",
"scale" : "2x"
},
{
"idiom" : "iphone",
"filename" : "KBCapsLock~iphone@3x.png",
"idiom" : "iphone",
"scale" : "3x"
},
{
"idiom" : "ipad",
"filename" : "KBCapsLock~ipad.png",
"idiom" : "ipad",
"scale" : "1x"
},
{
"idiom" : "ipad",
"filename" : "KBCapsLock~ipad@2x.png",
"idiom" : "ipad",
"scale" : "2x"
},
{
"filename" : "KBCapsLock~ipad@2x 1.png",
"idiom" : "vision",
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
"author" : "xcode",
"version" : 1
},
"properties" : {
"template-rendering-intent" : "template"
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 317 B

View File

@ -5,28 +5,36 @@
"scale" : "1x"
},
{
"idiom" : "iphone",
"filename" : "KBClearDown~iphone@2x.png",
"idiom" : "iphone",
"scale" : "2x"
},
{
"idiom" : "iphone",
"filename" : "KBClearDown~iphone@3x.png",
"idiom" : "iphone",
"scale" : "3x"
},
{
"idiom" : "ipad",
"filename" : "KBClearDown~ipad.png",
"idiom" : "ipad",
"scale" : "1x"
},
{
"idiom" : "ipad",
"filename" : "KBClearDown~ipad@2x.png",
"idiom" : "ipad",
"scale" : "2x"
},
{
"filename" : "KBClearDown~ipad@2x 1.png",
"idiom" : "vision",
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
"author" : "xcode",
"version" : 1
},
"properties" : {
"template-rendering-intent" : "template"
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 401 B

View File

@ -5,28 +5,36 @@
"scale" : "1x"
},
{
"idiom" : "iphone",
"filename" : "KBClearUp~iphone.png",
"idiom" : "iphone",
"scale" : "2x"
},
{
"idiom" : "iphone",
"filename" : "KBClearUp~iphone@3x.png",
"idiom" : "iphone",
"scale" : "3x"
},
{
"idiom" : "ipad",
"filename" : "KBClearUp~ipad.png",
"idiom" : "ipad",
"scale" : "1x"
},
{
"idiom" : "ipad",
"filename" : "KBClearUp~ipad@2x.png",
"idiom" : "ipad",
"scale" : "2x"
},
{
"filename" : "KBClearUp~ipad@2x 1.png",
"idiom" : "vision",
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
"author" : "xcode",
"version" : 1
},
"properties" : {
"template-rendering-intent" : "template"
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 563 B

View File

@ -5,28 +5,36 @@
"scale" : "1x"
},
{
"idiom" : "iphone",
"filename" : "KBKeyCommand@2x.png",
"idiom" : "iphone",
"scale" : "2x"
},
{
"idiom" : "iphone",
"filename" : "KBKeyCommand@3x.png",
"idiom" : "iphone",
"scale" : "3x"
},
{
"idiom" : "ipad",
"filename" : "KBCommand~ipad.png",
"idiom" : "ipad",
"scale" : "1x"
},
{
"idiom" : "ipad",
"filename" : "KBCommand@2x~ipad.png",
"idiom" : "ipad",
"scale" : "2x"
},
{
"filename" : "KBCommand@2x~ipad 1.png",
"idiom" : "vision",
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
"author" : "xcode",
"version" : 1
},
"properties" : {
"template-rendering-intent" : "template"
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -5,28 +5,36 @@
"scale" : "1x"
},
{
"idiom" : "iphone",
"filename" : "KBDeleteDown~iphone@2x.png",
"idiom" : "iphone",
"scale" : "2x"
},
{
"idiom" : "iphone",
"filename" : "KBDeleteDown~iphone@3x.png",
"idiom" : "iphone",
"scale" : "3x"
},
{
"idiom" : "ipad",
"filename" : "KBDeleteDown~ipad.png",
"idiom" : "ipad",
"scale" : "1x"
},
{
"idiom" : "ipad",
"filename" : "KBDeleteDown~ipad@2x.png",
"idiom" : "ipad",
"scale" : "2x"
},
{
"filename" : "KBDeleteDown~ipad@2x 1.png",
"idiom" : "vision",
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
"author" : "xcode",
"version" : 1
},
"properties" : {
"template-rendering-intent" : "template"
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 526 B

View File

@ -5,28 +5,36 @@
"scale" : "1x"
},
{
"idiom" : "iphone",
"filename" : "KBDeleteUp~iphone.png",
"idiom" : "iphone",
"scale" : "2x"
},
{
"idiom" : "iphone",
"filename" : "KBDeleteUp~iphone@3x.png",
"idiom" : "iphone",
"scale" : "3x"
},
{
"idiom" : "ipad",
"filename" : "KBDeleteUp~ipad.png",
"idiom" : "ipad",
"scale" : "1x"
},
{
"idiom" : "ipad",
"filename" : "KBDeleteUp~ipad@2x.png",
"idiom" : "ipad",
"scale" : "2x"
},
{
"filename" : "KBDeleteUp~ipad@2x 1.png",
"idiom" : "vision",
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
"author" : "xcode",
"version" : 1
},
"properties" : {
"template-rendering-intent" : "template"
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 726 B

View File

@ -5,28 +5,36 @@
"scale" : "1x"
},
{
"idiom" : "iphone",
"filename" : "KBForwardDeleteDown~iphone@2x.png",
"idiom" : "iphone",
"scale" : "2x"
},
{
"idiom" : "iphone",
"filename" : "KBForwardDeleteDown~iphone@3x.png",
"idiom" : "iphone",
"scale" : "3x"
},
{
"idiom" : "ipad",
"filename" : "KBForwardDeleteDown~ipad.png",
"idiom" : "ipad",
"scale" : "1x"
},
{
"idiom" : "ipad",
"filename" : "KBForwardDeleteDown~ipad@2x.png",
"idiom" : "ipad",
"scale" : "2x"
},
{
"filename" : "KBForwardDeleteDown~ipad@2x 1.png",
"idiom" : "vision",
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
"author" : "xcode",
"version" : 1
},
"properties" : {
"template-rendering-intent" : "template"
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 526 B

View File

@ -5,28 +5,36 @@
"scale" : "1x"
},
{
"idiom" : "iphone",
"filename" : "KBForwardDeleteUp~iphone.png",
"idiom" : "iphone",
"scale" : "2x"
},
{
"idiom" : "iphone",
"filename" : "KBForwardDeleteUp~iphone@3x.png",
"idiom" : "iphone",
"scale" : "3x"
},
{
"idiom" : "ipad",
"filename" : "KBForwardDeleteUp~ipad.png",
"idiom" : "ipad",
"scale" : "1x"
},
{
"idiom" : "ipad",
"filename" : "KBForwardDeleteUp~ipad@2x.png",
"idiom" : "ipad",
"scale" : "2x"
},
{
"filename" : "KBForwardDeleteUp~ipad@2x 1.png",
"idiom" : "vision",
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
"author" : "xcode",
"version" : 1
},
"properties" : {
"template-rendering-intent" : "template"
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 718 B

View File

@ -1,32 +1,41 @@
{
"images" : [
{
"filename" : "KBHide~ipad 2.png",
"idiom" : "iphone",
"scale" : "1x"
},
{
"idiom" : "iphone",
"filename" : "KBHide~iphone@2x.png",
"idiom" : "iphone",
"scale" : "2x"
},
{
"idiom" : "iphone",
"filename" : "KBHide~iphone@3x.png",
"idiom" : "iphone",
"scale" : "3x"
},
{
"idiom" : "ipad",
"filename" : "KBHide~ipad.png",
"idiom" : "ipad",
"scale" : "1x"
},
{
"idiom" : "ipad",
"filename" : "KBHide~ipad@2x.png",
"idiom" : "ipad",
"scale" : "2x"
},
{
"filename" : "KBHide~ipad@2x 1.png",
"idiom" : "vision",
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
"author" : "xcode",
"version" : 1
},
"properties" : {
"template-rendering-intent" : "template"
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 242 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 438 B

View File

@ -1,103 +1,247 @@
{
"images" : [
{
"filename" : "KBKey.png",
"idiom" : "iphone",
"resizing" : {
"mode" : "9-part",
"center" : {
"mode" : "tile",
"width" : 1,
"height" : 1
},
"cap-insets" : {
"bottom" : 8,
"top" : 8,
"left" : 8,
"right" : 8,
"left" : 8
}
"top" : 8
},
"center" : {
"height" : 1,
"mode" : "tile",
"width" : 1
},
"mode" : "9-part"
},
"idiom" : "iphone",
"filename" : "KBKey.png",
"scale" : "1x"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "KBKey-1.png",
"idiom" : "iphone",
"resizing" : {
"mode" : "9-part",
"center" : {
"mode" : "tile",
"width" : 2,
"height" : 2
"cap-insets" : {
"bottom" : 8,
"left" : 8,
"right" : 8,
"top" : 8
},
"center" : {
"height" : 1,
"mode" : "tile",
"width" : 1
},
"mode" : "9-part"
},
"scale" : "1x"
},
{
"filename" : "KBKey@2x.png",
"idiom" : "iphone",
"resizing" : {
"cap-insets" : {
"bottom" : 16,
"top" : 16,
"left" : 16,
"right" : 16,
"left" : 16
}
"top" : 16
},
"center" : {
"height" : 2,
"mode" : "tile",
"width" : 2
},
"mode" : "9-part"
},
"idiom" : "iphone",
"filename" : "KBKey@2x.png",
"scale" : "2x"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "KBKey@2x-1.png",
"idiom" : "iphone",
"resizing" : {
"mode" : "9-part",
"center" : {
"mode" : "tile",
"width" : 3,
"height" : 3
"cap-insets" : {
"bottom" : 16,
"left" : 16,
"right" : 16,
"top" : 16
},
"center" : {
"height" : 2,
"mode" : "tile",
"width" : 2
},
"mode" : "9-part"
},
"scale" : "2x"
},
{
"filename" : "KBKey@3x.png",
"idiom" : "iphone",
"resizing" : {
"cap-insets" : {
"bottom" : 24,
"top" : 24,
"left" : 24,
"right" : 24,
"left" : 24
}
"top" : 24
},
"center" : {
"height" : 3,
"mode" : "tile",
"width" : 3
},
"mode" : "9-part"
},
"idiom" : "iphone",
"filename" : "KBKey@3x.png",
"scale" : "3x"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "KBKey@3x-2.png",
"idiom" : "iphone",
"resizing" : {
"mode" : "9-part",
"center" : {
"mode" : "tile",
"width" : 1,
"height" : 1
"cap-insets" : {
"bottom" : 24,
"left" : 24,
"right" : 24,
"top" : 24
},
"center" : {
"height" : 3,
"mode" : "tile",
"width" : 3
},
"mode" : "9-part"
},
"scale" : "3x"
},
{
"filename" : "KBKey~ipad.png",
"idiom" : "ipad",
"resizing" : {
"cap-insets" : {
"bottom" : 16,
"top" : 16,
"left" : 16,
"right" : 16,
"left" : 16
}
"top" : 16
},
"center" : {
"height" : 1,
"mode" : "tile",
"width" : 1
},
"mode" : "9-part"
},
"idiom" : "ipad",
"filename" : "KBKey~ipad.png",
"scale" : "1x"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "KBKey~ipad-2.png",
"idiom" : "ipad",
"resizing" : {
"mode" : "9-part",
"center" : {
"mode" : "tile",
"width" : 2,
"height" : 2
"cap-insets" : {
"bottom" : 16,
"left" : 16,
"right" : 16,
"top" : 16
},
"center" : {
"height" : 1,
"mode" : "tile",
"width" : 1
},
"mode" : "9-part"
},
"scale" : "1x"
},
{
"filename" : "KBKey@2x~ipad.png",
"idiom" : "ipad",
"resizing" : {
"cap-insets" : {
"bottom" : 32,
"top" : 32,
"left" : 32,
"right" : 32,
"left" : 32
}
"top" : 32
},
"center" : {
"height" : 2,
"mode" : "tile",
"width" : 2
},
"mode" : "9-part"
},
"scale" : "2x"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "KBKey@2x~ipad-2.png",
"idiom" : "ipad",
"filename" : "KBKey@2x~ipad.png",
"resizing" : {
"cap-insets" : {
"bottom" : 32,
"left" : 32,
"right" : 32,
"top" : 32
},
"center" : {
"height" : 2,
"mode" : "tile",
"width" : 2
},
"mode" : "9-part"
},
"scale" : "2x"
},
{
"filename" : "KBKey@2x~ipad-2 1.png",
"idiom" : "vision",
"resizing" : {
"cap-insets" : {
"bottom" : 32,
"left" : 32,
"right" : 32,
"top" : 32
},
"center" : {
"height" : 2,
"mode" : "tile",
"width" : 2
},
"mode" : "9-part"
},
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
"author" : "xcode",
"version" : 1
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 423 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 634 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 634 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 571 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 340 B

View File

@ -1,103 +1,247 @@
{
"images" : [
{
"filename" : "KBKeyDark.png",
"idiom" : "iphone",
"resizing" : {
"mode" : "9-part",
"center" : {
"mode" : "tile",
"width" : 1,
"height" : 1
},
"cap-insets" : {
"bottom" : 8,
"top" : 8,
"left" : 8,
"right" : 8,
"left" : 8
}
"top" : 8
},
"center" : {
"height" : 1,
"mode" : "tile",
"width" : 1
},
"mode" : "9-part"
},
"idiom" : "iphone",
"filename" : "KBKeyDark.png",
"scale" : "1x"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "KBKeyDark-1.png",
"idiom" : "iphone",
"resizing" : {
"mode" : "9-part",
"center" : {
"mode" : "tile",
"width" : 2,
"height" : 2
"cap-insets" : {
"bottom" : 8,
"left" : 8,
"right" : 8,
"top" : 8
},
"center" : {
"height" : 1,
"mode" : "tile",
"width" : 1
},
"mode" : "9-part"
},
"scale" : "1x"
},
{
"filename" : "KBKeyDark@2x.png",
"idiom" : "iphone",
"resizing" : {
"cap-insets" : {
"bottom" : 16,
"top" : 16,
"left" : 16,
"right" : 16,
"left" : 16
}
"top" : 16
},
"center" : {
"height" : 2,
"mode" : "tile",
"width" : 2
},
"mode" : "9-part"
},
"idiom" : "iphone",
"filename" : "KBKeyDark@2x.png",
"scale" : "2x"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "KBKeyDark@2x-1.png",
"idiom" : "iphone",
"resizing" : {
"mode" : "9-part",
"center" : {
"mode" : "tile",
"width" : 3,
"height" : 3
"cap-insets" : {
"bottom" : 16,
"left" : 16,
"right" : 16,
"top" : 16
},
"center" : {
"height" : 2,
"mode" : "tile",
"width" : 2
},
"mode" : "9-part"
},
"scale" : "2x"
},
{
"filename" : "KBKeyDark@3x.png",
"idiom" : "iphone",
"resizing" : {
"cap-insets" : {
"bottom" : 24,
"top" : 24,
"left" : 24,
"right" : 24,
"left" : 24
}
"top" : 24
},
"center" : {
"height" : 3,
"mode" : "tile",
"width" : 3
},
"mode" : "9-part"
},
"idiom" : "iphone",
"filename" : "KBKeyDark@3x.png",
"scale" : "3x"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "KBKeyDark@3x-1.png",
"idiom" : "iphone",
"resizing" : {
"mode" : "9-part",
"center" : {
"mode" : "tile",
"width" : 1,
"height" : 1
"cap-insets" : {
"bottom" : 24,
"left" : 24,
"right" : 24,
"top" : 24
},
"center" : {
"height" : 3,
"mode" : "tile",
"width" : 3
},
"mode" : "9-part"
},
"scale" : "3x"
},
{
"filename" : "KBKeyDark~ipad.png",
"idiom" : "ipad",
"resizing" : {
"cap-insets" : {
"bottom" : 16,
"top" : 16,
"left" : 16,
"right" : 16,
"left" : 16
}
"top" : 16
},
"center" : {
"height" : 1,
"mode" : "tile",
"width" : 1
},
"mode" : "9-part"
},
"idiom" : "ipad",
"filename" : "KBKeyDark~ipad.png",
"scale" : "1x"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "KBKeyDark~ipad-1.png",
"idiom" : "ipad",
"resizing" : {
"mode" : "9-part",
"center" : {
"mode" : "tile",
"width" : 2,
"height" : 2
"cap-insets" : {
"bottom" : 16,
"left" : 16,
"right" : 16,
"top" : 16
},
"center" : {
"height" : 1,
"mode" : "tile",
"width" : 1
},
"mode" : "9-part"
},
"scale" : "1x"
},
{
"filename" : "KBKeyDark@2x~ipad.png",
"idiom" : "ipad",
"resizing" : {
"cap-insets" : {
"bottom" : 32,
"top" : 32,
"left" : 32,
"right" : 32,
"left" : 32
}
"top" : 32
},
"center" : {
"height" : 2,
"mode" : "tile",
"width" : 2
},
"mode" : "9-part"
},
"scale" : "2x"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "KBKeyDark@2x~ipad-1.png",
"idiom" : "ipad",
"filename" : "KBKeyDark@2x~ipad.png",
"resizing" : {
"cap-insets" : {
"bottom" : 32,
"left" : 32,
"right" : 32,
"top" : 32
},
"center" : {
"height" : 2,
"mode" : "tile",
"width" : 2
},
"mode" : "9-part"
},
"scale" : "2x"
},
{
"filename" : "KBKeyDark@2x~ipad-1 1.png",
"idiom" : "vision",
"resizing" : {
"cap-insets" : {
"bottom" : 32,
"left" : 32,
"right" : 32,
"top" : 32
},
"center" : {
"height" : 2,
"mode" : "tile",
"width" : 2
},
"mode" : "9-part"
},
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
"author" : "xcode",
"version" : 1
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 367 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 636 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 636 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 571 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 B

View File

@ -5,28 +5,36 @@
"scale" : "1x"
},
{
"idiom" : "iphone",
"filename" : "KBNumPad@2x.png",
"idiom" : "iphone",
"scale" : "2x"
},
{
"idiom" : "iphone",
"filename" : "KBNumPad@3x.png",
"idiom" : "iphone",
"scale" : "3x"
},
{
"idiom" : "ipad",
"filename" : "KBNumPad~ipad.png",
"idiom" : "ipad",
"scale" : "1x"
},
{
"idiom" : "ipad",
"filename" : "KBNumPad@2x~ipad.png",
"idiom" : "ipad",
"scale" : "2x"
},
{
"filename" : "KBNumPad@2x~ipad 1.png",
"idiom" : "vision",
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
"author" : "xcode",
"version" : 1
},
"properties" : {
"template-rendering-intent" : "template"
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 B

View File

@ -5,28 +5,36 @@
"scale" : "1x"
},
{
"idiom" : "iphone",
"filename" : "KBKeyOption@2x.png",
"idiom" : "iphone",
"scale" : "2x"
},
{
"idiom" : "iphone",
"filename" : "KBKeyOption@3x.png",
"idiom" : "iphone",
"scale" : "3x"
},
{
"idiom" : "ipad",
"filename" : "KBOption~ipad.png",
"idiom" : "ipad",
"scale" : "1x"
},
{
"idiom" : "ipad",
"filename" : "KBOption@2x~ipad.png",
"idiom" : "ipad",
"scale" : "2x"
},
{
"filename" : "KBOption@2x~ipad 1.png",
"idiom" : "vision",
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
"author" : "xcode",
"version" : 1
},
"properties" : {
"template-rendering-intent" : "template"
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 365 B

View File

@ -5,28 +5,36 @@
"scale" : "1x"
},
{
"idiom" : "iphone",
"filename" : "KBShiftDown~iphone@2x.png",
"idiom" : "iphone",
"scale" : "2x"
},
{
"idiom" : "iphone",
"filename" : "KBShiftDown~iphone@3x.png",
"idiom" : "iphone",
"scale" : "3x"
},
{
"idiom" : "ipad",
"filename" : "KBShiftDown~ipad.png",
"idiom" : "ipad",
"scale" : "1x"
},
{
"idiom" : "ipad",
"filename" : "KBShiftDown~ipad@2x.png",
"idiom" : "ipad",
"scale" : "2x"
},
{
"filename" : "KBShiftDown~ipad@2x 1.png",
"idiom" : "vision",
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
"author" : "xcode",
"version" : 1
},
"properties" : {
"template-rendering-intent" : "template"
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 274 B

View File

@ -5,28 +5,36 @@
"scale" : "1x"
},
{
"idiom" : "iphone",
"filename" : "KBShiftUp~iphone@2x.png",
"idiom" : "iphone",
"scale" : "2x"
},
{
"idiom" : "iphone",
"filename" : "KBShiftUp~iphone@3x.png",
"idiom" : "iphone",
"scale" : "3x"
},
{
"idiom" : "ipad",
"filename" : "KBShiftUp~ipad.png",
"idiom" : "ipad",
"scale" : "1x"
},
{
"idiom" : "ipad",
"filename" : "KBShiftUp~ipad@2x.png",
"idiom" : "ipad",
"scale" : "2x"
},
{
"filename" : "KBShiftUp~ipad@2x 1.png",
"idiom" : "vision",
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
"author" : "xcode",
"version" : 1
},
"properties" : {
"template-rendering-intent" : "template"
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 467 B

View File

@ -1,23 +1,26 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "reset.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "reset@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "reset@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
"author" : "xcode",
"version" : 1
},
"properties" : {
"template-rendering-intent" : "template"
}
}
}

View File

@ -1,23 +1,26 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "Settings.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "Settings@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "Settings@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
"author" : "xcode",
"version" : 1
},
"properties" : {
"template-rendering-intent" : "template"
}
}
}

View File

@ -0,0 +1,26 @@
{
"images" : [
{
"filename" : "Swipe2Down.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "Swipe2Down@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "Swipe2Down@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
},
"properties" : {
"template-rendering-intent" : "template"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@ -0,0 +1,26 @@
{
"images" : [
{
"filename" : "Swipe2Left.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "Swipe2Left@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "Swipe2Left@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
},
"properties" : {
"template-rendering-intent" : "template"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@ -0,0 +1,26 @@
{
"images" : [
{
"filename" : "Swipe2Right.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "Swipe2Right@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "Swipe2Right@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
},
"properties" : {
"template-rendering-intent" : "template"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@ -0,0 +1,26 @@
{
"images" : [
{
"filename" : "Swipe2Up.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "Swipe2Up@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "Swipe2Up@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
},
"properties" : {
"template-rendering-intent" : "template"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@ -1,23 +1,26 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "document.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "document@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "document@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
"author" : "xcode",
"version" : 1
},
"properties" : {
"template-rendering-intent" : "template"
}
}
}

View File

@ -1,23 +1,26 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "floppy.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "floppy@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "floppy@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
"author" : "xcode",
"version" : 1
},
"properties" : {
"template-rendering-intent" : "template"
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 265 B

After

Width:  |  Height:  |  Size: 241 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 508 B

After

Width:  |  Height:  |  Size: 411 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 798 B

After

Width:  |  Height:  |  Size: 661 B

View File

@ -1,23 +1,26 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "floppy30.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "floppy30@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "floppy30@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
"author" : "xcode",
"version" : 1
},
"properties" : {
"template-rendering-intent" : "template"
}
}
}

View File

@ -0,0 +1,26 @@
{
"images" : [
{
"filename" : "floppyV.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "floppyV@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "floppyV@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
},
"properties" : {
"template-rendering-intent" : "template"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 279 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 467 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 731 B

View File

@ -1,23 +1,26 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "folder.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "folder@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "folder@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
"author" : "xcode",
"version" : 1
},
"properties" : {
"template-rendering-intent" : "template"
}
}
}

View File

@ -1,23 +1,26 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "hardDisk.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "hardDisk@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "hardDisk@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
"author" : "xcode",
"version" : 1
},
"properties" : {
"template-rendering-intent" : "template"
}
}
}

20
Mini vMac/BTCMouse.h Normal file
View File

@ -0,0 +1,20 @@
//
// BTCMouse.h
// Mini vMac
//
// Created by Jesús A. Álvarez on 04/12/2016.
// Copyright © 2016-2018 namedfork. All rights reserved.
//
@protocol BTCMouseDelegate
- (void)handleEventWithMove:(CGPoint)move andWheel:(float)wheel andPan:(float)pan andButtons:(int)buttons;
@end
@interface UIApplication (BTCMouse)
- (void)btcMouseSetPanning:(BOOL)panning;
- (void)btcMouseSetZooming:(BOOL)zooming;
- (void)btcMouseSetDelegate:(id<BTCMouseDelegate>)delegate;
- (void)btcMouseSetRawMode:(BOOL)rawMode;
@end

Some files were not shown because too many files have changed in this diff Show More