How to Find Synced Typekit Fonts on Your Computer

Chen: Make sure you restart Finder after the terminal line, Hold Option + right click on finder and then relaunch

Are you using Adobe CC and syncing fonts from Typekit to your desktop? If you’re on OSX you can follow these steps to see where those fonts live.

Occasionally Typekit takes my desktop fonts away which is scary in the middle of a project or en route to a design presentation. I then have to open the Creative Cloud app and re-sync the fonts. That’s an understandable workaround but I needed a viable game plan to meet a deadline even if Typekit or my connectivity is unreliable for a matter of hours. Now I sleep better knowing that I can still complete a project without worrying about the mystery sync bugs.

We’re going to use Terminal and Finder to locate these files. First you’ll need to enable viewing hidden files.

Open Terminal. Paste this command without the $ sign and click enter:
$ defaults write AppleShowAllFiles TRUE
Now Finder displays hidden folders and files on your computer. “Hidden” files are now distinguished from normal files by being slightly transparent.
Open Finder. Go to Macintosh HD/Users/YOURNAME/Library/Application Support/Adobe/CoreSync/plugins/livetype/.r/
Your fonts are in this .r folder named FONTID.otf
My terminal below shows the list of files in .r by running ls -la
Finder below displays the font files copied to a normal folder


Finder won’t let you change the folder or file names prefixed with a dot like a normal file.

After you copy the .r folder to a safe place on your computer, right click the copy of .r and select Get Info. Change the copied .r folder name to TypeKit by expanding the Filename & Extension option. Use Get Info for each font you need to use offline. This image explains how to do it.


The fonts are open type files named with a dot prefix and font id like .70.otf. If you want to play with the files and not mess with your CC configuration you can use Finder (or Terminal) to copy them and paste the files somewhere else.

Terminal Option: Open Terminal and “move” the files while simultaneously changing their names, which renames them. Example:

$ mv .70.otf Bree-Bold.otf

There is an XML file in …/livetype/.c/entitlements.xml with the list of fonts that correlate to each font id. But if you open the Get Info window for each font you can see the Full Name field without needing to look at the XML.

If you want Finder to hide the hidden files and folders again paste this in Terminal and click enter:
$ defaults write AppleShowAllFiles FALSE

Robot Car Part 3 Code Preview

Update: If you want to control the motor speeds, please swap pin 11 and pin 13 connections, as well as update the define section in the code. Pin 13 is not PWM pin but pin 11 is. sorry for the mistake.

This is the code preview for the smart robot car tutorial. Load it to your arduino board then it should work. Please let me know down below if you running to any problems.

#include <Servo.h>

// Pins
#define TRIG_PIN A0
#define ECHO_PIN A1

//Define all the connections maps to the L298N
#define enA 13
#define in1 12
#define in2 11
#define in3 7
#define in4 6
#define enB 5
#define servoPin 2

class Motor{

int enablePin;
int directionPin1;
int directionPin2;


//Method to define the motor pins
Motor(int ENPin,int dPin1,int dPin2){
enablePin = ENPin;
directionPin1 = dPin1;
directionPin2 = dPin2;

//Method to drive the motor 0~255 driving forward. -1~-255 driving backward
void Drive(int speed){
digitalWrite(directionPin1, LOW);
digitalWrite(directionPin2, HIGH);
digitalWrite(directionPin1, HIGH);
digitalWrite(directionPin2, LOW);
speed = - speed;
analogWrite(enablePin, speed);

Motor leftMotor = Motor(enA, in1, in2);
Motor rightMotor = Motor(enB, in3, in4);
Servo myservo; // create servo object to control a servo

void motorInitiation(){
pinMode(enA, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
// Set initial direction and speed
digitalWrite(enA, LOW);
digitalWrite(enB, LOW);
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);

// Anything over 400 cm (23200 us pulse) is "out of range"
const unsigned int MAX_DIST = 23200;
bool ObsticalAhead = false;
int servoPos = 90;

enum Directions { Forward, TurnLeft, TurnRight, TurnAround,Brake};

Directions nextStep = Forward;

unsigned long t1;
unsigned long t2;
unsigned long pulse_width;
float cm;
float inches;

void setup() {

// The Trigger pin will tell the sensor to range find
digitalWrite(TRIG_PIN, LOW);

// We'll use the serial monitor to view the sensor output
Directions nextStep = Forward;

void loop() {


void checkDistance(){

// Hold the trigger pin high for at least 10 us
digitalWrite(TRIG_PIN, HIGH);
digitalWrite(TRIG_PIN, LOW);

// Wait for pulse on echo pin
while ( digitalRead(ECHO_PIN) == 0 );

// Measure how long the echo pin was held high (pulse width)
// Note: the micros() counter will overflow after ~70 min
t1 = micros();
while ( digitalRead(ECHO_PIN) == 1);
t2 = micros();
pulse_width = t2 - t1;

// Calculate distance in centimeters and inches. The constants
// are found in the datasheet, and calculated from the assumed speed
//of sound in air at sea level (~340 m/s).
cm = pulse_width / 58.0;
inches = pulse_width / 148.0;

// Print out results
if ( pulse_width > MAX_DIST ) {
//Serial.println("Out of range");
} else {
//Serial.print(" cm \t");
//Serial.println(" in");

// Wait at least 60ms before next measurement

if(cm<= 20){
ObsticalAhead = true;
Serial.println("Problem Ahead");

else{ ObsticalAhead = false;}

void checkDirection(){
Serial.println("checking direction");
if(ObsticalAhead ==true){
nextStep = Brake;
myservo.write(180); // tell servo to go to position in variable 'pos'
delay(400); // waits 15ms for the servo to reach the position
if(ObsticalAhead ==false){//if left side is open
nextStep = TurnLeft;
Serial.println("Next step is TurnLeft");
myservo.write(90);//reset servo position
else{// left is blocked, now need to look at right
myservo.write(0); // tell servo to go to position in variable 'pos'
delay(800); // waits 15ms for the servo to reach the position
if(ObsticalAhead ==false){//if right side is open
nextStep = TurnRight;
Serial.println("Next step is TurnRight");
myservo.write(90);//reset servo position
else{//right is blocked as well, need to turn around
nextStep = TurnAround;
myservo.write(90);//reset servo position
Serial.println("Next step is TurnAround");

else{nextStep = Forward;}//No obstical ahead

void drive(){
switch (nextStep){
case Forward:

case TurnLeft:
Serial.println(" TurnLeft");

case TurnRight:
Serial.println(" TurnRight");
case TurnAround:
Serial.println(" TurnAround");

case Brake:
Serial.println(" stopped");


11,948 total views, 0 views today

Unity Touch keyboard on win10


First you need to create VirtualKeyboard.cs script

  1. using UnityEngine;
  2. using System;
  3. using System.Collections;
  4. using System.Diagnostics;
  5. using System.Runtime.InteropServices;
  6. public class VirtualKeyboard
  7. {
  8. [DllImport("user32")]
  9. static extern IntPtr FindWindow(String sClassName, String sAppName);
  10. [DllImport("user32")]
  11. static extern bool PostMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);
  12. private static Process _onScreenKeyboardProcess = null;
  13. /// <summary>
  14. /// Show the touch keyboard (tabtip.exe).
  15. /// </summary>
  16. public void ShowTouchKeyboard()
  17. {
  18. ExternalCall("C:\\Program Files\\Common Files\\Microsoft Shared\\ink\\tabtip.exe", null, false);
  19. //ExternalCall("TABTIP", null, false);
  20. }
  21. /// <summary>
  22. /// Hide the touch keyboard (tabtip.exe).
  23. /// </summary>
  24. public void HideTouchKeyboard()
  25. {
  26. uint WM_SYSCOMMAND = 274;
  27. int SC_CLOSE = 61536;
  28. IntPtr ptr = FindWindow("IPTip_Main_Window", null);
  29. PostMessage(ptr, WM_SYSCOMMAND, SC_CLOSE, 0);
  30. }
  31. /// <summary>
  32. /// Show the on screen keyboard (osk.exe).
  33. /// </summary>
  34. public void ShowOnScreenKeyboard()
  35. {
  36. //ExternalCall("C:\\Windows\\system32\\osk.exe", null, false);
  37. if (_onScreenKeyboardProcess == null || _onScreenKeyboardProcess.HasExited)
  38. _onScreenKeyboardProcess = ExternalCall("OSK", null, false);
  39. }
  40. /// <summary>
  41. /// Hide the on screen keyboard (osk.exe).
  42. /// </summary>
  43. public void HideOnScreenKeyboard()
  44. {
  45. if (_onScreenKeyboardProcess != null && !_onScreenKeyboardProcess.HasExited)
  46. _onScreenKeyboardProcess.Kill();
  47. }
  48. /// <summary>
  49. /// Set size and location of the OSK.exe keyboard, via registry changes. Messy, but only known method.
  50. /// </summary>
  51. /// <param name='rect'>
  52. /// Rect.
  53. /// </param>
  54. public void RepositionOnScreenKeyboard(Rect rect)
  55. {
  56. ExternalCall("REG", @"ADD HKCU\Software\Microsoft\Osk /v WindowLeft /t REG_DWORD /d " + (int)rect.x + " /f", true);
  57. ExternalCall("REG", @"ADD HKCU\Software\Microsoft\Osk /v WindowTop /t REG_DWORD /d " + (int)rect.y + " /f", true);
  58. ExternalCall("REG", @"ADD HKCU\Software\Microsoft\Osk /v WindowWidth /t REG_DWORD /d " + (int)rect.width + " /f", true);
  59. ExternalCall("REG", @"ADD HKCU\Software\Microsoft\Osk /v WindowHeight /t REG_DWORD /d " + (int)rect.height + " /f", true);
  60. }
  61. private static Process ExternalCall(string filename, string arguments, bool hideWindow)
  62. {
  63. ProcessStartInfo startInfo = new ProcessStartInfo();
  64. startInfo.FileName = filename;
  65. startInfo.Arguments = arguments;
  66. // if just command, we don't want to see the console displayed
  67. if (hideWindow)
  68. {
  69. startInfo.RedirectStandardOutput = true;
  70. startInfo.RedirectStandardError = true;
  71. startInfo.UseShellExecute = false;
  72. startInfo.CreateNoWindow = true;
  73. }
  74. Process process = new Process();
  75. process.StartInfo = startInfo;
  76. process.Start();
  77. return process;
  78. }
  79. }

then call from your script like below

  1. VirtualKeyboard vk = new VirtualKeyboard();
  2. public void OpenKeyboard()
  3. {
  4. {
  5. vk.ShowTouchKeyboard();
  6. }
  7. }
  8. public void CloseKeyboard()
  9. {
  10. {
  11. vk.HideTouchKeyboard();
  12. }
  13. }





The gigantic On-Screen keyboard covers up half of the screen
and program window on my Surface Pro 3. using Windows 8.1
I have been using the M.S. Accessibility keyboard as you can resize it, but it
has the huge sidebars, etc. and you can not write out text input.

A friend showed me a Registry hack that resizes the OnScreen Keyboard.
(As always, back up your registry, use at your own risk)

1) Go to RUN–
Type :

2) Browse to:
HKLM(Local Machine)>Software>Microsoft>Windows>CurrentVersion>Explorer

3) Once at Explorer> Rt Click on Explorer folder and Add New Key
(This adds a new folder titled ‘Scaling’ under Explorer)

4) Rt Click on Scaling folder:
Add– New String Value

5) Double Click on MoniterSize:
Enter String Value “25”
(For a half screen-width keyboard)

6) Restart or Shut down/Restart
Keyboard will now pop up much smaller

Smaller numbers results in larger keyboard.
20=2/3 screen width
Experiment for your desired size.

So far I have not experienced any abnormalities, in other programs
I use Internet Explorer for web browsing.

I understand it also works in Windows 10,
but I don’t have Windows 10 to test it.