Copy #键盘布局
preset_keyboards :
default :
author : "Shitlime"
name : 26键默认布局
width : 10
lock : true
ascii_mode : 0
# 在这里加入新的配置项:
reset_ascii_mode : true
keys :
- { click : q , long_click : 1 , swipe_up : '!' , key_back_color : bh1 , key_text_color : wk }
- { click : w , long_click : 2 , swipe_up : '@' , key_back_color : bh1 , key_text_color : wk }
- { click : e , long_click : 3 , swipe_up : '#' , key_back_color : bh1 , key_text_color : wk }
- { click : r , long_click : 4 , swipe_up : '$' , key_back_color : bh1 , key_text_color : wk }
- { click : t , long_click : 5 , swipe_up : '%' , key_back_color : bh1 , key_text_color : wk }
- { click : y , long_click : 6 , swipe_up : '^' , key_back_color : bh1 , key_text_color : wk }
- { click : u , long_click : 7 , swipe_up : '&' , key_back_color : bh1 , key_text_color : wk }
- { click : i , long_click : 8 , swipe_up : '*' , key_back_color : bh1 , key_text_color : wk }
# ……
Copy KeyEvent.KEYCODE_EISU -> { // Switch keyboard
KeyboardSwitcher. switchKeyboard (event.select)
/** Set ascii mode according to keyboard's settings, can not place into [Rime.handleRimeNotification] */
if (shouldResetAsciiMode && KeyboardSwitcher.currentKeyboard.isResetAsciiMode) {
Rime. setOption ( "ascii_mode" , KeyboardSwitcher.currentKeyboard.asciiMode)
}
trime. bindKeyboardToInputView ()
trime. updateComposing ()
}
Copy liquid_keyboard_window : #液态键盘模式下显示的悬浮窗口組件
- { start : "" , click : "space" , label : " 空格 " }
- { start : "" , click : "BackSpace" , label : " 删除 " }
- { start : "" , click : "Return" , label : " 回车 " }
- { start : "" , click : "liquid_keyboard_exit" , label : " 返回 " }
Copy /** 设置悬浮窗, 用于liquidKeyboard的悬浮窗工具栏 */
public void setWindow() {
if ( getVisibility() != View . VISIBLE ) return ;
if ( liquid_keyboard_window_comp . isEmpty ()) {
this . setVisibility (GONE);
return ;
}
ss = new SpannableStringBuilder() ;
for ( Map < String , Object > m : liquid_keyboard_window_comp) {
if ( m . containsKey ( "composition" )) appendComposition(m) ;
else if ( m . containsKey ( "click" )) appendButton(m) ;
}
setSingleLine( ! ss . toString() . contains( "\n" )) ;
setText(ss) ;
setMovementMethod( LinkMovementMethod . getInstance()) ;
}
Copy /** 更新Rime的中西文狀態、編輯區文本 */
public int updateComposing() {
final @ Nullable InputConnection ic = getCurrentInputConnection() ;
activeEditorInstance . updateComposingText ();
if (ic != null && ! isWinFixed() ) isCursorUpdated = ic . requestCursorUpdates ( 1 );
int startNum = 0 ;
if (mCandidateRoot != null ) {
if (isPopupWindowEnabled) {
Timber . d ( "updateComposing() SymbolKeyboardType=%s" , symbolKeyboardType . toString ());
if (symbolKeyboardType != SymbolKeyboardType . NO_KEY
&& symbolKeyboardType != SymbolKeyboardType . CANDIDATE ) {
mComposition . setWindow ();
showCompositionView( false ) ;
} else {
mComposition . getRootView () . setVisibility ( View . VISIBLE );
startNum = mComposition . setWindow (minPopupSize , minPopupCheckSize , Integer . MAX_VALUE );
mCandidate . setText (startNum);
// if isCursorUpdated, showCompositionView will be called in onUpdateCursorAnchorInfo
// otherwise we need to call it here
if ( ! isCursorUpdated) showCompositionView( true ) ;
}
} else {
mCandidate . setText ( 0 );
}