#============================================================================== # カーソル移動カスタマイズ ver1.00 #------------------------------------------------------------------------------ # [特徴] # ↑・↓・←・→・L・Rを押したときのカーソル移動を変更できる。 # # [導入上の注意] # 特になし。 # # 作成:ぶちょー # ホム:http://nyannyannyan.bake-neko.net # 著作:自分で作ったとか言わないで>< # 改造はご自由にどうぞ。 # リードミーとかに私の名前の載せたりするのは任意で。 #============================================================================== #============================================================================== # 設定項目 #============================================================================== module CURSOR_CUSTOMIZE # 一番上の行で↑キーを押したときのカーソル移動方法 # 0 : 移動しない # 1 : その列の一番下に移動する UP = 1 # 一番下の行で↓キーを押したときのカーソル移動方法 # 0 : 移動しない # 1 : その列の一番上に移動する # 2 : まだ下に行がある場合、 一番最後に移動する。 # 3 : まだ下に行がある場合、 一番最後に移動する。最後の行なら 1 の動きをする。 # [2 と 3 の例] # 項目 項目 項目 項目(← カーソルがここにあるとき、↓キーを押すと) # 項目 項目 # ↓ # 項目 項目 項目 項目 # 項目 項目(← ここにカーソルが移動する) DN = 3 # 行の一番左で←キーを押したときのカーソル移動方法 # 0 : 一つ上の行の一番右に移動する # 1 : その行の一番右に移動する LE = 0 # 先頭の項目で←キーを押したときのカーソル移動方法 # 0 : 移動しない # 1 : 最後の項目に移動する LE2 = 1 # 行の一番右で→キーを押したときのカーソル移動方法 # 0 : 一つ下の行の一番左に移動する # 1 : その行の一番左に移動する RI = 0 # RI = 0 で、最後の項目で→キーを押したときのカーソル移動方法 # 0 : 移動しない # 1 : 先頭の項目に移動する RI2 = 1 # Lキーを押したときのカーソル移動方法 # 0 : 前のページに移動する # 1 : そのページの最初の項目に移動する。 # そのページの最初の項目を選択中の場合は、前のページの最初の項目に移動する LL = 0 # 先頭ページ表示中のLキーを押したときのカーソル移動方法 # 0 : 通常通り、カーソル移動しない # 1 : ページの先頭にカーソル移動する ※ LL = 1 の場合は自動でこっちなります LL2 = 1 # Rキーを押したときのカーソル移動方法 # 0 : 次のページに移動する # 1 : そのページの最後の項目に移動する # そのページの最後の項目を選択中の場合は、次のページの最後の項目に移動する RR = 0 # Rキーを押したときのページの表示方法 # 0 : 移動した項目が先頭になるようにする # 1 : 移動した項目が最後になるようにする ※ RR = 1 の場合は自動でこっちになります # こちらの場合、ページ移動したときに出る「空白の欄」が表示されなくなります RR2 = 1 end #============================================================================== # ここまで #============================================================================== #============================================================================== # ■ Window_Selectable #============================================================================== class Window_Selectable < Window_Base #-------------------------------------------------------------------------- # ● カーソルを下に移動 #-------------------------------------------------------------------------- def cursor_down(wrap = false) if @index >= @item_max - @column_max if CURSOR_CUSTOMIZE::DN == 1 @index %= @column_max elsif CURSOR_CUSTOMIZE::DN == 2 @index = @item_max - 1 elsif CURSOR_CUSTOMIZE::DN == 3 if @index / @column_max < row_max - 1 @index = @item_max - 1 else @index %= @column_max end end elsif (@index < @item_max - @column_max) or (wrap and @column_max == 1) @index = (@index + @column_max) % @item_max end end #-------------------------------------------------------------------------- # ● カーソルを上に移動 #-------------------------------------------------------------------------- def cursor_up(wrap = false) if (@index >= @column_max) or (wrap and @column_max == 1) @index = (@index - @column_max + @item_max) % @item_max elsif @index < @column_max return if CURSOR_CUSTOMIZE::UP == 0 @index = @index + @column_max * (row_max - 1) @index -= @column_max if @index >= @item_max end end #-------------------------------------------------------------------------- # ● カーソルを右に移動 #-------------------------------------------------------------------------- def cursor_right(wrap = false) return if @column_max == 1 if CURSOR_CUSTOMIZE::RI == 0 return if @index == @item_max - 1 && CURSOR_CUSTOMIZE::RI2 == 0 @index = (@index + 1) % @item_max else @index = ((@index + 1) % @column_max) + (@index / @column_max) * @column_max @index = [@index, @item_max - 1].min end end #-------------------------------------------------------------------------- # ● カーソルを左に移動 #-------------------------------------------------------------------------- def cursor_left(wrap = false) return if @column_max == 1 if CURSOR_CUSTOMIZE::LE == 0 return if @index == 0 && CURSOR_CUSTOMIZE::LE2 == 0 @index = (@index - 1 + @item_max) % @item_max else @index = (@index - 1 + @column_max) % @column_max + (@index / @column_max) * @column_max @index = [@index, @item_max - 1].min end end #-------------------------------------------------------------------------- # ● カーソルを 1 ページ後ろに移動 #-------------------------------------------------------------------------- def cursor_pagedown if CURSOR_CUSTOMIZE::RR == 0 if top_row + page_row_max < row_max @index = [@index + page_item_max, @item_max - 1].min end self.top_row += page_row_max if CURSOR_CUSTOMIZE::RR2 == 1 self.top_row = [self.top_row, (@item_max - page_item_max) / @column_max].min end else return if @index == @item_max - 1 @index -= @index % @column_max @index = [@index + page_item_max - 1, @item_max - 1].min self.top_row = @index - page_item_max * @column_max end end #-------------------------------------------------------------------------- # ● カーソルを 1 ページ前に移動 #-------------------------------------------------------------------------- def cursor_pageup if CURSOR_CUSTOMIZE::LL == 0 if top_row > 0 @index = [@index - page_item_max, 0].max self.top_row -= page_row_max elsif CURSOR_CUSTOMIZE::LL2 == 1 @index = 0 self.top_row = 0 end else return if @index == 0 if @index == top_row * @column_max @index -= page_item_max else @index = (bottom_row + 1) * @column_max - page_item_max end @index = [@index, 0].max self.top_row = @index end end end