本一出现,叨咕着弗洛伊德的一句话:“爱和工作,是生活的全部。”如果这句话是对的, 那么老去简直就是生活的全部杀手:爱人离去,出席最多的社交活动就是老朋友的葬礼, 工作不再需要自己,即便一身智慧,却无用武之地。想想由“衰老”激活的那些形象: 暮气沉沉、执着养生、人傻钱多、市侩刻薄、倚老卖老、缓慢迟钝、不合时宜…… 似乎本也应该在打完太极拳之后回到形只影单的家里追忆追忆似水流年然后在感怀壮士暮年 后饱含泪水告诉自己inner peace很重要最后坐吃等死。 然而本才不是普通的老头,还记得吗,他是完美老头。本在问过9岁的孙子什么是usb接口 之后对着摄像机勇敢说出了“我想要属于某个群体,我想要被别人需要”的心声, 接着成为了一个电商企业的老年实习生。然后,新生的、蓬勃的、时尚的、互联网的, 和老派的、古板的、头头是道的、一丝不苟的,看似格格不入地,相遇了。对,只是看似, 因为我们的完美老头本,很快用他一生的经验和智慧,统整了一切可能的不和谐,他体贴友善, 毫无压力地和年轻同事打成一片,他主动学习,新科技新媒体分分钟搞定,他观察入微, 公司大小事迅速洞悉,他投入体验,开启一段办公室恋情也不在话下, 最后他还解锁了他的终极任务,那就是成为年轻女boss的人生导师:微笑、做你自己、 成为你能成为的人,这些人生信条主旋律而又不生硬地经由两人的互动一一传递,直至功德圆满。 或许像本这样的老头实在太励志了,令我感觉些许理想化的不真实。在国人文化下, 一辈子为儿为女,畅想未来担心的也只是老有所依而非老有所为。 今年另一部探讨暮年话题的佳片《年轻气盛》里导演老头讲过一段话: “年轻时,一切都很近,那是未来;年老时,一切都很远,那是过去。 ”如何能在年华老去时依然朝向未来看到希望?或将成为跨越温饱和尊严后急需修炼的课题。 完美的本提示了几个要素:保有人际关系,拥抱这个时代,以及,实现自我价值。 不知道本知不知道弗洛伊德有个后继者叫艾里克森,他说人生最后阶段叫做“成熟期”, 其使命是自我统合,把过去的现在的未来的是我的不是我的好的坏的悉数做个整理, 若回望来时路感到心满意足多而遗憾悔恨少,便会收获人生的终极大礼,名曰“智慧”。 Experience never gets old, so does wisdom. 祈望多年后,长成一个老者,健气、优雅、独立,像本一样。
    有这么几件事,学校不教,爹妈不聊,国人要想有所成,全靠天赋,或者自学成才。
    第一,如何谈恋爱,
    第二,如何做父母,
    第三,如何面对老去和死亡。

    前两者好歹还能凭借天生的荷尔蒙和受进化保护的责任感玩出个一二三,玩得不好大不了从头来过。
可这第三件,每个人都在漫长的讳莫如深后突然迎接了它的到来,接着手足无措茫然尴尬地应对起生命
中最后来访的朋友。

所以,想看看范本级的老年生存手册吗?来来来,你的完美老头已上线,他叫本,70岁。

本一出现,叨咕着弗洛伊德的一句话:“爱和工作 ,是生活的全部。”,如果这句话是对的,
那么老去简直就是生活全部杀手,爱人离去,出席最多的社交活动就是老朋友的葬礼,工作不再需要自己,
即便一身智慧,却无用武之地,想想由衰老激活的那些形象:
暮气沉沉、执着养生、人傻钱多、市侩刻薄、倚老卖老、缓慢迟钝、不合时宜......



试着给那把球帽做一个主控吧
  昨天看了一下,那张球帽的pcb板,利用原来的pcb布线肯定是不行了,似乎没有矩阵的概念,
我看大家都是飞线的,所以貌似也只能飞线了,不过,飞线凌乱不说,轴也不能拆卸了,
还要每个都接二极管,工作量实在是大。所以还在考虑中

这是我之前设计的101布局主控代码
101布局键盘,矩阵排布,主控代码

#include 
#include "Keyboard.h"
#include 

const byte ROWS = 6;
const byte COLS = 22;

// 这个是为了52键球帽小板子设定的分层矩阵
static byte kb52_1[5][13] = {
    { '`', 1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=', 8},
    { 27, 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '[', ']', 13},
    { 16, 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', '\"', 37, 39},
    { 20, 'z', 'x', 'c', 'v', 'b', 'n', 'm', ',', '.', '/', 16},
    { 144, 32}
};
static byte kb52_2[5][13] = {
    { '`', !', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', 8},
    { 27, 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '{', '}' 13},
    { 16, 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', '\"', 38, 40},
    { 20, 'z', 'x', 'c', 'v', 'b', 'n', 'm', ',', '.', '/', 16},
    { 144, 32}
};
// for 101 ansi layout
static byte kb101[6][22] = {
    { 27, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 44, 145, 19 },
    { '`', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=', 220, 8, 45, 36, 33, 144, 111, 104, 109 },
    { 9, 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '[', ']', 46, 35, 34, 103, 104, 105, 107 },
    { 20, 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', 222, 13, 100, 101, 102 },
    { 16, 'z', 'x', 'c', 'v', 'b', 'n', 'm', ',', '.', '/', 16, 38, 97, 98, 99, 13 },
    { 17, 18, 32, 18, 17, 37, 40, 39, 96, 110 }
};
// for 104 ansi layout
static byte kb104[6][22] = {
    { 27, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 44, 145, 19 },
    { '`','1','2','3', '4', '5', '6', '7', '8', '9', '0', '-', '=', 220, 8, 45, 36, 33, 144, 111, 104, 109 },
    { 9, 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '[', ']', 46, 35, 34, 103, 104, 105, 107 },
    { ' ','a','s','d', 'f', 'g', 'h', 'j', 'k', 'l', ';', 222, 13, 100, 101, 102 },
    { 16, 'z', 'x', 'c', 'v', 'b', 'n', 'm', ',', '.', '/', 16, 38, 97, 98, 99, 13 },
    { 17, 91, 18, 32, 18, 255, 93, 17, 37, 40, 39, 96, 110 }
};

static byte rowPins[6] = { 9, 8, 7, 6, 5, 4 };
static byte colPins[22] = { 44, 43, 42, 41, 40, 39, 38, 37, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12 };

static char* keypadMap = makeKeymap(kb101);

static Keypad keypad = Keypad(keypadMap, rowPins, colPins, 6, 22);

static unsigned long startTime;
static const byte ledPin = 6;

void keyboardEvent(KeypadEvent key);
/**
 * @Method   setup
 * @Brief
 * @DateTime 2019-01-09T11:15:14+0800
 * @Modify   2019-01-09T11:15:14+0800
 * @Author   Naraka
 * @return   void
 */
static void setup() {
    Serial.begin(9600);
    pinMode(ledPin, OUTPUT);
    keypad.addEventListener(keypadEvent);
    keypad.setHoldTime(500);
    Keyboard.begin();
    configPin();
}
/**
 * @Method   configPin
 * @Brief
 * @DateTime 2019-01-09T11:14:28+0800
 * @Modify   2019-01-09T11:14:28+0800
 * @Author   Naraka
 * @return   void
 */
static void configPin() {
    for (int i = 0; i < sizeof(rowPins); ++ i) {
        pinMode(rowPins[i], INPUT);
    }
    for (int j = 0; j < sizeof(colPins); ++ j) {
        pinMode(colPins[j], INPUT);
    }
}
/**
 * @Method   loop
 * @Brief
 * @DateTime 2019-01-09T11:14:32+0800
 * @Modify   2019-01-09T11:14:32+0800
 * @Author   Naraka
 * @return   void
 */
static void loop() {
    digitalWrite(ledPin, HIGH);
    delay(1000);
    digitalWrite(ledPin, LOW);
    delay(1000);
}
/**
 * @Method   keypadEvent
 * @Brief
 * @DateTime 2019-01-09T11:14:36+0800
 * @Modify   2019-01-09T11:14:36+0800
 * @Author   Naraka
 * @param    KeypadEvent key keyboard ascii code
 * @return   void
 */
static void keypadEvent(KeypadEvent key) {
    switch (keypad.getState()){
    case PRESSED:
        Keyboard.press(key);
        break;
    case RELEASED:
        Keyboard.release(key);
        break;
    case HOLD:
        Keyboard.press(key);
        delay(33);
        Keyboard.release(key);
        break;
    }
}



    下面是魔改mx定位板+alps pcb方案的设想
    权当笑话听吧
    物品清单:
      alps定位钢板
      mx pcb板
      杜邦线
      铜柱螺栓螺母
      木板或外壳

    目标布局:
      87键布局alps

    方案:
      将alps轴体全部安装于定位板之上,不含pcb,
      然后,将杜邦线裁至指定长度,母头接插在轴脚上,
      然后,将杜邦线的另一头从pcb正面穿过,
      此时,定位板与pcb是游离状态,
      将杜邦线与pcb上锡焊接
      使用螺栓螺母将其固定在木板或外壳之上
      安装键帽,完毕。


 ALPS 轴体历史年表

印制板中通过PCB板上丝印来判别二极管方向的方法总结如下:
  通常情况下:

1、有缺口的一端为负极;
2、有横杠的一端为负极;
3、有白色双杠的一端为负极;
4、三角形箭头方向的一端为负极;
5、插件二极管丝印小圆一端是负极,大圆是正极。
6、插件发光二极管方孔为第一脚为正极。


End