{"id":8271,"date":"2014-01-02T19:54:30","date_gmt":"2014-01-03T00:54:30","guid":{"rendered":"http:\/\/mjtsai.com\/blog\/?p=8271"},"modified":"2018-05-08T15:43:55","modified_gmt":"2018-05-08T19:43:55","slug":"nspasteboard","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2014\/01\/02\/nspasteboard\/","title":{"rendered":"Identifying and Handling Transient or Special Data on the Clipboard"},"content":{"rendered":"<p>Smile Software&rsquo;s <a href=\"http:\/\/nspasteboard.org\">NSPasteboard.org<\/a> is a reference document about how Mac apps can cooperate when using the system pasteboard:<\/p>\n<blockquote cite=\"http:\/\/nspasteboard.org\"><p><a href=\"http:\/\/smilesoftware.com\/TextExpander\">TextExpander<\/a>, <a href=\"http:\/\/manytricks.com\/butler\">Butler<\/a>, <a href=\"http:\/\/typeit4me.com\/\">TypeIt4Me<\/a>, <a href=\"http:\/\/ergonis.com\/typinator\">Typinator<\/a>, <a href=\"http:\/\/www.keyboardmaestro.com\/\">Keyboard Maestro<\/a>, pasteboard history applications, and other applications briefly commandeer Mac OS X&rsquo;s general pasteboard to transport large chunks of data into the user&rsquo;s current context quickly. Often, shortly after this data is inserted, the pasteboard is returned to its previous contents. These applications need a way to identify their data as being temporary, different than content Copied by the user, and\/or otherwise special &#8211; additional pasteboard types offer a solution.<\/p>\n<p><a href=\"http:\/\/plumamazing.com\/mac\/copypaste\">CopyPaste<\/a>, <a href=\"http:\/\/pth.com\/products\/pthpasteboard\/\">PTHPasteboard<\/a>, <a href=\"http:\/\/www.irradiatedsoftware.com\/iclip\/\">iClip<\/a>, and other pasteboard history utilities maintain histories of the pasteboard&rsquo;s contents. Pasteboard data identified as transient should not be included in these histories. <\/p>\n<p>Additionally, password utilities such as <a href=\"https:\/\/agilebits.com\/onepassword\">1Password<\/a> might mark passwords or other sensitive data, either placed programmatically or user-Copied to the pasteboard, so that pasteboard history utilities could obfuscate passwords when displayed on screen (to avoid inadvertently revealing your password to a &ldquo;shoulder surfer&rdquo;), and\/or avoid writing them as plain text to a pasteboard history file. <\/p>\n<\/blockquote>","protected":false},"excerpt":{"rendered":"<p>Smile Software&rsquo;s NSPasteboard.org is a reference document about how Mac apps can cooperate when using the system pasteboard: TextExpander, Butler, TypeIt4Me, Typinator, Keyboard Maestro, pasteboard history applications, and other applications briefly commandeer Mac OS X&rsquo;s general pasteboard to transport large chunks of data into the user&rsquo;s current context quickly. Often, shortly after this data is [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"apple_news_api_created_at":"2018-05-08T19:43:57Z","apple_news_api_id":"31e28301-aba7-4323-82c9-6ef9c23f96ec","apple_news_api_modified_at":"2018-05-08T19:43:57Z","apple_news_api_revision":"AAAAAAAAAAD\/\/\/\/\/\/\/\/\/\/w==","apple_news_api_share_url":"https:\/\/apple.news\/AMeKDAaunQyOCyW75wj-W7A","apple_news_coverimage":0,"apple_news_coverimage_caption":"","apple_news_is_hidden":false,"apple_news_is_paid":false,"apple_news_is_preview":false,"apple_news_is_sponsored":false,"apple_news_maturity_rating":"","apple_news_metadata":"\"\"","apple_news_pullquote":"","apple_news_pullquote_position":"","apple_news_slug":"","apple_news_sections":"\"\"","apple_news_suppress_video_url":false,"apple_news_use_image_component":false,"footnotes":""},"categories":[2],"tags":[69,30,74,1670,71],"class_list":["post-8271","post","type-post","status-publish","format-standard","hentry","category-technology","tag-cocoa","tag-mac","tag-opensource","tag-pasteboard","tag-programming"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/8271","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/comments?post=8271"}],"version-history":[{"count":1,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/8271\/revisions"}],"predecessor-version":[{"id":21471,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/8271\/revisions\/21471"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=8271"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=8271"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=8271"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}