# 控控模拟按键示例代码
# 也可以模拟鼠标，但我没有分析
# /dev/ttyAMA1 是控控的USB模拟单片机，串口设备
# 在远程控制时对 sunlogin_client 进行 strace 就可以看到它向 /dev/ttyAMA1 设备发送的指令了

# 分析 sunlogin_client 键鼠控制命令的方法：
# 自己想办法安装strace，然后运行（把9501换成sunlogin_client的pid）
# strace -ff -s 4096 -t -x -o log -p 9501
# 命令会在当前文件夹生成大量log.pid文件
# 不要结束这个命令，然后连接到控控的远程控制
# 接着在电脑上打开另一个SSH窗口，运行（把log.9876换成倒数第二个文件名）
# tail -F log.9876 | grep --line-buffered write
# 然后试试在控控的远程控制内按键，如果按键后tail命令输出了新行（按下一行放开一行），说明找对了文件。
# 如果没有输出内容，或者输出了大量奇怪内容，说明找错了文件，换个文件tail

# 备注：
# 1. 当前版本的sunlogin_client使用倒数第二个线程发送键盘鼠标控制命令给单片机
# 2. 编码里面有一个部分是自增序列号，但你发送的时候不必自增，随便选个数字就可以
# 3. 不清楚命令使用的编码方式


echo "这只是例子，不能直接运行"
exit


# 单个按键的代码，只能用于模拟按下单个按键，不能实现组合键

KEY_A_UP="\xaa\x0d\x00\x99\x0d\xc2\x00\x03\x00\x04\x00\x00\x00\x00\x00\xbb"
KEY_A_DN="\xaa\x0d\x00\x9a\x0d\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_B_UP="\xaa\x0d\x00\x9b\x0d\xc3\x00\x03\x00\x05\x00\x00\x00\x00\x00\xbb"
KEY_B_DN="\xaa\x0d\x00\x9c\x0d\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_C_UP="\xaa\x0d\x00\x9d\x0d\xc4\x00\x03\x00\x06\x00\x00\x00\x00\x00\xbb"
KEY_C_DN="\xaa\x0d\x00\x9e\x0d\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_D_UP="\xaa\x0d\x00\x9f\x0d\xc5\x00\x03\x00\x07\x00\x00\x00\x00\x00\xbb"
KEY_D_DN="\xaa\x0d\x00\xa0\x0d\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_E_UP="\xaa\x0d\x00\xa1\x0d\xc6\x00\x03\x00\x08\x00\x00\x00\x00\x00\xbb"
KEY_E_DN="\xaa\x0d\x00\xa2\x0d\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_F_UP="\xaa\x0d\x00\xa3\x0d\xc7\x00\x03\x00\x09\x00\x00\x00\x00\x00\xbb"
KEY_F_DN="\xaa\x0d\x00\xa4\x0d\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_G_UP="\xaa\x0d\x00\xa5\x0d\xc8\x00\x03\x00\x0a\x00\x00\x00\x00\x00\xbb"
KEY_G_DN="\xaa\x0d\x00\xa6\x0d\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_H_UP="\xaa\x0d\x00\xa7\x0d\xc9\x00\x03\x00\x0b\x00\x00\x00\x00\x00\xbb"
KEY_H_DN="\xaa\x0d\x00\xa8\x0d\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_I_UP="\xaa\x0d\x00\xa9\x0d\xca\x00\x03\x00\x0c\x00\x00\x00\x00\x00\xbb"
KEY_I_DN="\xaa\x0d\x00\xcc\x02\x0d\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_J_UP="\xaa\x0d\x00\xab\x0d\xcb\x00\x03\x00\x0d\x00\x00\x00\x00\x00\xbb"
KEY_J_DN="\xaa\x0d\x00\xac\x0d\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_K_UP="\xaa\x0d\x00\xad\x0d\xcc\x01\x00\x03\x00\x0e\x00\x00\x00\x00\x00\xbb"
KEY_K_DN="\xaa\x0d\x00\xae\x0d\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_L_UP="\xaa\x0d\x00\xaf\x0d\xcd\x00\x03\x00\x0f\x00\x00\x00\x00\x00\xbb"
KEY_L_DN="\xaa\x0d\x00\xb0\x0d\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_M_UP="\xaa\x0d\x00\xb1\x0d\xce\x00\x03\x00\x10\x00\x00\x00\x00\x00\xbb"
KEY_M_DN="\xaa\x0d\x00\xb2\x0d\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_N_UP="\xaa\x0d\x00\xb3\x0d\xcf\x00\x03\x00\x11\x00\x00\x00\x00\x00\xbb"
KEY_N_DN="\xaa\x0d\x00\xb4\x0d\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_O_UP="\xaa\x0d\x00\xb5\x0d\xd0\x00\x03\x00\x12\x00\x00\x00\x00\x00\xbb"
KEY_O_DN="\xaa\x0d\x00\xb6\x0d\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_P_UP="\xaa\x0d\x00\xb7\x0d\xd1\x00\x03\x00\x13\x00\x00\x00\x00\x00\xbb"
KEY_P_DN="\xaa\x0d\x00\xb8\x0d\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_Q_UP="\xaa\x0d\x00\xb9\x0d\xd2\x00\x03\x00\x14\x00\x00\x00\x00\x00\xbb"
KEY_Q_DN="\xaa\x0d\x00\xba\x0d\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_R_UP="\xaa\x0d\x00\xbb\x0d\xd3\x00\x03\x00\x15\x00\x00\x00\x00\x00\xbb"
KEY_R_DN="\xaa\x0d\x00\xbc\x0d\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_S_UP="\xaa\x0d\x00\xbd\x0d\xd4\x00\x03\x00\x16\x00\x00\x00\x00\x00\xbb"
KEY_S_DN="\xaa\x0d\x00\xbe\x0d\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_T_UP="\xaa\x0d\x00\xbf\x0d\xd5\x00\x03\x00\x17\x00\x00\x00\x00\x00\xbb"
KEY_T_DN="\xaa\x0d\x00\xc0\x0d\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_U_UP="\xaa\x0d\x00\xc1\x0d\xd6\x00\x03\x00\x18\x00\x00\x00\x00\x00\xbb"
KEY_U_DN="\xaa\x0d\x00\xc2\x0d\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_V_UP="\xaa\x0d\x00\xc3\x0d\xd7\x00\x03\x00\x19\x00\x00\x00\x00\x00\xbb"
KEY_V_DN="\xaa\x0d\x00\xc4\x0d\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_W_UP="\xaa\x0d\x00\xc5\x0d\xd8\x00\x03\x00\x1a\x00\x00\x00\x00\x00\xbb"
KEY_W_DN="\xaa\x0d\x00\xc6\x0d\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_X_UP="\xaa\x0d\x00\xc7\x0d\xd9\x00\x03\x00\x1b\x00\x00\x00\x00\x00\xbb"
KEY_X_DN="\xaa\x0d\x00\xc8\x0d\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_Y_UP="\xaa\x0d\x00\xc9\x0d\xda\x00\x03\x00\x1c\x00\x00\x00\x00\x00\xbb"
KEY_Y_DN="\xaa\x0d\x00\xca\x0d\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_Z_UP="\xaa\x0d\x00\xcb\x0d\xdb\x00\x03\x00\x1d\x00\x00\x00\x00\x00\xbb"
KEY_Z_DN="\xaa\x0d\x00\xcc\x01\x0d\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"

KEY_1_UP="\xaa\x0d\x00\x33\x0e\xdc\x00\x03\x00\x1e\x00\x00\x00\x00\x00\xbb"
KEY_1_DN="\xaa\x0d\x00\x34\x0e\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_2_UP="\xaa\x0d\x00\x35\x0e\xdd\x00\x03\x00\x1f\x00\x00\x00\x00\x00\xbb"
KEY_2_DN="\xaa\x0d\x00\x36\x0e\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_3_UP="\xaa\x0d\x00\x37\x0e\xde\x00\x03\x00\x20\x00\x00\x00\x00\x00\xbb"
KEY_3_DN="\xaa\x0d\x00\x38\x0e\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_4_UP="\xaa\x0d\x00\x39\x0e\xdf\x00\x03\x00\x21\x00\x00\x00\x00\x00\xbb"
KEY_4_DN="\xaa\x0d\x00\x3a\x0e\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_5_UP="\xaa\x0d\x00\x3b\x0e\xe0\x00\x03\x00\x22\x00\x00\x00\x00\x00\xbb"
KEY_5_DN="\xaa\x0d\x00\x3c\x0e\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_6_UP="\xaa\x0d\x00\x3d\x0e\xe1\x00\x03\x00\x23\x00\x00\x00\x00\x00\xbb"
KEY_6_DN="\xaa\x0d\x00\x3e\x0e\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_7_UP="\xaa\x0d\x00\x3f\x0e\xe2\x00\x03\x00\x24\x00\x00\x00\x00\x00\xbb"
KEY_7_DN="\xaa\x0d\x00\x40\x0e\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_8_UP="\xaa\x0d\x00\x41\x0e\xe3\x00\x03\x00\x25\x00\x00\x00\x00\x00\xbb"
KEY_8_DN="\xaa\x0d\x00\x42\x0e\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_9_UP="\xaa\x0d\x00\x43\x0e\xe4\x00\x03\x00\x26\x00\x00\x00\x00\x00\xbb"
KEY_9_DN="\xaa\x0d\x00\x44\x0e\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_0_UP="\xaa\x0d\x00\x45\x0e\xe5\x00\x03\x00\x27\x00\x00\x00\x00\x00\xbb"
KEY_0_DN="\xaa\x0d\x00\x46\x0e\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"

KEY_F1_UP="\xaa\x0d\x00\x77\x0e\xf8\x00\x03\x00\x3a\x00\x00\x00\x00\x00\xbb"
KEY_F1_DN="\xaa\x0d\x00\x78\x0e\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_F2_UP="\xaa\x0d\x00\x79\x0e\xf9\x00\x03\x00\x3b\x00\x00\x00\x00\x00\xbb"
KEY_F2_DN="\xaa\x0d\x00\x7a\x0e\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_F3_UP="\xaa\x0d\x00\x7b\x0e\xfa\x00\x03\x00\x3c\x00\x00\x00\x00\x00\xbb"
KEY_F3_DN="\xaa\x0d\x00\x7c\x0e\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_F4_UP="\xaa\x0d\x00\x7d\x0e\xfb\x00\x03\x00\x3d\x00\x00\x00\x00\x00\xbb"
KEY_F4_DN="\xaa\x0d\x00\x7e\x0e\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_F5_UP="\xaa\x0d\x00\x7f\x0e\xfc\x00\x03\x00\x3e\x00\x00\x00\x00\x00\xbb"
KEY_F5_DN="\xaa\x0d\x00\x80\x0e\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_F6_UP="\xaa\x0d\x00\x81\x0e\xfd\x00\x03\x00\x3f\x00\x00\x00\x00\x00\xbb"
KEY_F6_DN="\xaa\x0d\x00\x82\x0e\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_F7_UP="\xaa\x0d\x00\x83\x0e\xfe\x00\x03\x00\x40\x00\x00\x00\x00\x00\xbb"
KEY_F7_DN="\xaa\x0d\x00\x84\x0e\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_F8_UP="\xaa\x0d\x00\x85\x0e\xff\x00\x03\x00\x41\x00\x00\x00\x00\x00\xbb"
KEY_F8_DN="\xaa\x0d\x00\x86\x0e\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_F9_UP="\xaa\x0d\x00\x87\x0e\x00\x01\x03\x00\x42\x00\x00\x00\x00\x00\xbb"
KEY_F9_DN="\xaa\x0d\x00\x88\x0e\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_F10_UP="\xaa\x0d\x00\x89\x0e\x01\x01\x03\x00\x43\x00\x00\x00\x00\x00\xbb"
KEY_F10_DN="\xaa\x0d\x00\x8a\x0e\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_F11_UP="\xaa\x0d\x00\x8b\x0e\x02\x01\x03\x00\x44\x00\x00\x00\x00\x00\xbb"
KEY_F11_DN="\xaa\x0d\x00\x8c\x0e\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_F12_UP="\xaa\x0d\x00\x8d\x0e\x03\x01\x03\x00\x45\x00\x00\x00\x00\x00\xbb"
KEY_F12_DN="\xaa\x0d\x00\x8e\x0e\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"

KEY_CTRL_UP="\xaa\x0d\x00\x12\x04\xc3\x00\x03\x05\x00\x00\x00\x00\x00\x00\xbb"
KEY_CTRL_DN="\xaa\x0d\x00\x13\x04\xc2\x00\x03\x04\x00\x00\x00\x00\x00\x00\xbb"
KEY_ALT_UP="\xaa\x0d\x00\x14\x04\xc2\x00\x03\x04\x00\x00\x00\x00\x00\x00\xbb"
KEY_ALT_DN="\xaa\x0d\x00\x15\x04\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"
KEY_DEL_UP="\xaa\x0d\x00\x16\x04\x0a\x01\x03\x00\x4c\x00\x00\x00\x00\x00\xbb"
KEY_DEL_DN="\xaa\x0d\x00\x17\x04\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb"


# 按单个按键

# 按H
echo -n -e "$KEY_H_UP" > /dev/ttyAMA1
sleep 0.5
echo -n -e "$KEY_H_DN" > /dev/ttyAMA1

# 按C
echo -n -e "$KEY_C_UP" > /dev/ttyAMA1
sleep 0.5
echo -n -e "$KEY_C_DN" > /dev/ttyAMA1


# 部分组合键
# 还没有搞清楚按键的编码方法

# ctrl + alt + del
echo -n -e "\xaa\x0d\x00\xea\x06\xc2\x00\x03\x04\x00\x00\x00\x00\x00\x00\xbb" > /dev/ttyAMA1
sleep 0.5
echo -n -e "\xaa\x0d\x00\xeb\x06\xc3\x00\x03\x05\x00\x00\x00\x00\x00\x00\xbb" > /dev/ttyAMA1
sleep 0.5
echo -n -e "\xaa\x0d\x00\xec\x06\x0f\x01\x03\x05\x4c\x00\x00\x00\x00\x00\xbb" > /dev/ttyAMA1
sleep 0.5
echo -n -e "\xaa\x0d\x00\xed\x06\xc3\x00\x03\x05\x00\x00\x00\x00\x00\x00\xbb" > /dev/ttyAMA1
sleep 0.5
echo -n -e "\xaa\x0d\x00\xee\x06\xbf\x00\x03\x01\x00\x00\x00\x00\x00\x00\xbb" > /dev/ttyAMA1
sleep 0.5
echo -n -e "\xaa\x0d\x00\xef\x06\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb" > /dev/ttyAMA1

# alt + sysrq + b
echo -n -e "\xaa\x0d\x00\xb5\x06\xc2\x00\x03\x04\x00\x00\x00\x00\x00\x00\xbb" > /dev/ttyAMA1
sleep 0.2
echo -n -e "\xaa\x0d\x00\xb6\x06\xc2\x00\x03\x04\x00\x00\x00\x00\x00\x00\xbb" > /dev/ttyAMA1
sleep 0.2
echo -n -e "\xaa\x0d\x00\xb7\x06\xc7\x00\x03\x04\x05\x00\x00\x00\x00\x00\xbb" > /dev/ttyAMA1
sleep 0.2
echo -n -e "\xaa\x0d\x00\xb8\x06\xc2\x00\x03\x04\x00\x00\x00\x00\x00\x00\xbb" > /dev/ttyAMA1
sleep 0.2
echo -n -e "\xaa\x0d\x00\xb9\x06\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb" > /dev/ttyAMA1
sleep 0.2
echo -n -e "\xaa\x0d\x00\xba\x06\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb" > /dev/ttyAMA1

# del
echo -n -e "\xaa\x0d\x00\xa3\x08\x0a\x01\x03\x00\x4c\x00\x00\x00\x00\x00\xbb" > /dev/ttyAMA1
sleep 0.1
echo -n -e "\xaa\x0d\x00\xa4\x08\xbe\x00\x03\x00\x00\x00\x00\x00\x00\x00\xbb" > /dev/ttyAMA1


# 远程自动运行按键模拟脚本的方法

while true; do ./sshpass -p oray.com ssh admin@192.168.144.22 -p 44022 -T < del.sh; done

./sshpass -p oray.com ssh admin@192.168.144.22 -p 44022 -T < del.sh

./sshpass -p oray.com ssh admin@192.168.144.22 -p 44022 -T < reboot.sh

